IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 【Android】获取控件坐标值 -> 正文阅读

[移动开发]【Android】获取控件坐标值

  1. 获取手指触摸点的坐标
        binding.view.setOnTouchListener { _, motionEvent ->
            if(motionEvent.action == MotionEvent.ACTION_MOVE) {
                binding.textShow.text = "x:  " + motionEvent.x + "  ,y: " + motionEvent.y
            }
            return@setOnTouchListener true
        }
  1. 获取设备的分辨率
binding.textDevice.text =
    "heightPixels: " + resources.displayMetrics.heightPixels + " , widthPixels: " + resources.displayMetrics.widthPixels +
    " ,densityDpi: " + resources.displayMetrics.densityDpi + " ,densityDpi: " + resources.displayMetrics.density + 
    " ,scaledDensity: " + resources.displayMetrics.scaledDensity

heightPixels: 1920 , widthPixels: 1080 ,densityDpi: 480 ,densityDpi: 3.0 ,scaledDensity: 3.0

  1. How to get the absolute coordinates of a view in Android?
    如何获取控件的绝对坐标?
        var location = IntArray(2)
        binding.imageView2.getLocationOnScreen(location)
        binding.textDevice.text = "location[0]: " + location[0] + ", location[1]: " + location[1]

要延时获取,在onCreate获取到的数据均为0
location[0]: 360, location[1]: 773 图片所在的左上角的绝对坐标值

可以创建个通用的接口

    fun getLocationOnScreen(view: View): Point {
        val location = IntArray(2)
        view.getLocationOnScreen(location)
        return Point(location[0], location[1])
    }
  1. 代码中获取控件的宽高,结果是px像素值
var rect = Rect()
binding.homeTop.getLocalVisibleRect(rect)
//binding.homeTop.getGlobalVisibleRect(rect)
binding.textDevice.text = "bottom: " + rect.bottom + ", top: " + rect.top + ", left: " + rect.left +
                        ", right: " + rect.right + ", height: " + rect.height() + ", width: " + rect.width()

图片分辨率为120x91px,放在drawable目录下,且要延时获取,在onCreate获取到的数据均为0
getGlobalVisibleRect: rect.bottom: 1278, top: 228, height: 1050, left: 0, right: 1080, width: 1080
getLocalVisibleRect: rect.bottom: 1050, top: 0, height: 1050, left: 0, right: 1080, width: 1080

注意:
以上方法在OnCreate方法中调用,都会返回0,这是因为View还未加载完毕.
建议在onWindowFocusChanged方法中进行获取,有些情况下onWindowFocusChanged不好用的时候(比如ActivityGroup),可以这样写:

        binding.fragmentHomeTop.homeTop.post {
            initSystem()
            initBehavior()
        }

参考链接:
android 获取控件的宽高和view的位置

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:36:39  更:2022-03-30 18:36:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 20:07:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码