在真正的学习 Android 自定义 View之前, 我们先来了解一下 Android 的坐标系相关知识.
android 开发交流群: 190088567
一. 坐标系分类:
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 的视图坐标, 其值为:
12x = mleft + tranlationXy = mtop + tranlationY -
translationX, translationY: 表示 view 位置的偏移量, 初始值为0
该坐标系主要用在 view 的动画操作上面, 在后续的文章中会详细介绍 android 中的动画
三. MotionEvent当中的方法:(假设图片中的小点就是我们手指触摸在手机屏幕中的位置)
- getY(): view 本身顶部距离父容器顶部的距离
- getX(): view 本身左侧距离父容器左侧的距离
- getRawX(): view 本身左侧距离手机屏幕左侧的距离
- getRawY(): view 本身顶部距离手机屏幕顶部的距离
前两个方法是相对于父容器而言的, 后两个方法是相对于整个屏幕而言的, 这个地方不要弄混了
Android 中的坐标系相关知识是自定义 View 中的基础知识, 也是为后续的学习做铺垫, 本节内容相对来说也比较简单, 不明白的地方可以留言或者加群(190088567),下篇文章我们将详细讲解 View 中的 Paint 相关知识.