Android系统中的坐标系
Android系统中有两种坐标系, 分别为Android坐标系和View坐标系。 了解这两种坐标系能够帮助我们
实现View的各种操作, 比如我们要实现View的滑动, 你连这个View的位置都不知道, 那如何去操作呢? 首
先我们来看看Android坐标系。
1.Android坐标系
在Android中, 将屏幕左上角的顶点作为Android坐标系的原点, 这个原点向右是X轴正方向, 向下是Y
轴正方向, 如图所示。 另外在触控事件中, 使用getRawX() 和getRawY() 方法获得的坐标也是
Android坐标系的坐标
2.View坐标系
除了Android坐标系, 还有一个坐标系: View坐标系, 它与Android坐标系并不冲突, 两者是共同存在
的, 它们一起来帮助开发者更好地控制View。 对于View坐标系, 我们只需要搞明白图3-4中提供的信息就好
了。
View获取自身的宽和高
根据图可以得到很多结论, 首先我们能算出View的宽和高:
width=getRight()-getLeft();
height=getBottom()-getTop();
当然这样做显然有些麻烦, 因为系统已经向我们提供了获取View宽和高的方法。 getHeight() 用来获
取 View 自身的高度, getWidth() 用来获取 View 自身的宽度。 从 View 的源码来看, getHeight() 和
getWidth() 获取View自身的高度和宽度的算法与上面从图 中得出的结论是一致的。 View源码中的
getHeight() 方法和getWidth() 方法如下所示
public final int getHeight(){
reture mBottom-mTop;
}
public final int getWidth(){
reture mRight-mLeft;
}
View自身的坐标
通过如下方法可以获得View到其父控件(ViewGroup) 的距离。
• getTop() : 获取View自身顶边到其父布局顶边的距离。
• getLeft() : 获取View自身左边到其父布局左边的距离。
• getRight() : 获取View自身右边到其父布局左边的距离。
• getBottom() : 获取View自身底边到其父布局顶边的距离。
MotionEvent提供的方法
图中间的那个圆点, 假设就是我们触摸的点。 我们知道无论是View还是ViewGroup, 最终的点击事
件都会由onTouchEvent(MotionEvent event) 方法来处理。 MotionEvent在用户交互中作用重大, 其内部提
供了很多事件常量, 比如我们常用的ACTION_DOWN、 ACTION_UP和ACTION_MOVE。 此外,
MotionEvent也提供了获取焦点坐标的各种方法。
• getX() : 获取点击事件距离控件左边的距离, 即视图坐标。
• getY() : 获取点击事件距离控件顶边的距离, 即视图坐标。
• getRawX() : 获取点击事件距离整个屏幕左边的距离, 即绝对坐标。
• getRawY() : 获取点击事件距离整个屏幕顶边的距离, 即绝对坐标。
该文章从<android 进阶之光> 摘抄,只为帮助更多的小伙伴,如有侵权请联系,立即删除.
上一篇: 聊聊GIS中的坐标系|再版 识别各种数据的坐标系及代码中的坐标系
下一篇: R绘图系统中的坐标系