android中获取控件坐标的几种api区分

前言

我们经常会看到以下几个方法:

  • getGlobalVisibleRect()

  • getLocalVisibleRect()

  • getLocationOnScreen()

  • getLocationInWindow()

傻傻分不清? 今天我们简单介绍一下它们各自的作用

getGlobalVisibleRec

方法作用:

其一: 用于判断控件是否可见, 以屏幕为参考 如果可见返回true, 不可见返回false, 我们可以借助该方法检测控件是否被滑出屏幕外

其二: 用于获取控件可见区域的坐标, 这个坐标是相对于屏幕而言

在这里插入图片描述

坐标存放在了Rect对象中, 以参数的形式传入:

1
getGlobalVisibleRect(new Rect)

getLocalVisibleRect

这个方法和上面的getGlobalVisibleRec方法类似, 唯一区别是参考系不同, 这个方法参考系是控件本身

以下是这两个方法的坐标打印:

getRect

getLocationOnScreen

获取控件相对于屏幕而言的坐标位置, 与可不可见无关

getLocationInWindow

获取控件相对于父控件而言的坐标位置, 与可不可见无关

在这里插入图片描述

坐标补充

我们在进行自定义控件绘制的时候, 总是容易被一些参数给绕的头晕脑涨, 什么top right, left, bottom, 四条边与屏幕的距离等等, 想想就觉得费劲, 再加上Android中坐标系和我们数学中的坐标系不一致 使得我们在进行计算的时候难免有点吃不消

实际上对于一些规则的图形绘制, 比如矩形, 我们需要明白的一点, 那就是只需要两个点的坐标即可绘制出来, 也就是两个对角点

那我们在进行图形绘制的时候, 将计算范围缩小, 焦点集中在两个对角坐标位置计算上即可

这两个对角可以使左上角右下角, 也可以是左下角和右上角

这样一想, 那么所谓的lefttop实际就是左上角的xy坐标, 而rightbottom就是右下角的坐标

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

0%