一. 坐标系分类:
Android 中的坐标系可以分为三类: 屏幕坐标系, 布局坐标系, 以及视图坐标系.
- 屏幕坐标系: 该坐标系是以屏幕的左上角为原点(0, 0), 水平向右代表 x 方向的正方向, 垂直向下代表 y方向的正方向, 如下图所示:
- 布局坐标系: 该坐标系是以 view 的左上角为坐标原点, 水平向右代表 x 方向的正方向, 垂直向下代表 y 方向的正方向, view 的坐标原点是在 layout 布局过程中做确定的.
- 视图坐标系: 该坐标系是在 view 绘制过程中, 绘制的内容将该坐标系作为参考, 来绘制 view.我们可以看下下面的这张图片:
二. view 当中的方法:
- getTop():获取 view 本身顶部到父容器 ViewGroup 顶部的距离.
- getBottom(): 获取 view 本身底部到父容器 ViewGroup 顶部的距离.(注意这里是ViewGroup顶部)
- getLeft(): 获取 view 本身左侧到父容器 ViewGroup 左侧的距离.
- getRight(): 获取 view 本身右侧到父容器 ViewGroup 左侧的距离.(这里是ViewGroup左侧)
上面的几个方法所得到的值都是相对于父容器的, 而不是整个屏幕. - offsetLeftAndRight(int offset): 水平方向移动view, offset 为正则向右移动, offset 为负则向左移动
- offsetTopAndBottom(int offset): 垂直方向移动view, offset 为正则向下移动, offset 为负则向右移动
上面两个方法中对应的 getLeft() 和 getTop() 返回的值会改变
在 Android3.0以后 view 又增加了一些关于 view 的属性:
- x, y: 标示 view 左上角的坐标, 坐标系是父 view 的视图坐标, 其值为:
1 2 | x = mleft + tranlationX y = mtop + tranlationY |
- translationX, translationY: 表示 view 位置的偏移量, 初始值为0
该坐标系主要用在 view 的动画操作上面, 在后续的文章中会详细介绍 android 中的动画
三. MotionEvent当中的方法:(假设图片中的小点就是我们手指触摸在手机屏幕中的位置)
- getY(): view 本身顶部距离父容器顶部的距离
- getX(): view 本身左侧距离父容器左侧的距离
- getRawX(): view 本身左侧距离手机屏幕左侧的距离
- getRawY(): view 本身顶部距离手机屏幕顶部的距离
前两个方法是相对于父容器而言的, 后两个方法是相对于整个屏幕而言的, 这个地方不要弄混了