一. 坐标系分类:
Android 中的坐标系可以分为三类: 屏幕坐标系, 布局坐标系, 以及视图坐标系.

  1. 屏幕坐标系: 该坐标系是以屏幕的左上角为原点(0, 0), 水平向右代表 x 方向的正方向, 垂直向下代表 y方向的正方向, 如下图所示:

    android y 坐标 绘制x 安卓坐标系_正则

  2. 布局坐标系: 该坐标系是以 view 的左上角为坐标原点, 水平向右代表 x 方向的正方向, 垂直向下代表 y 方向的正方向, view 的坐标原点是在 layout 布局过程中做确定的.
  3. 视图坐标系: 该坐标系是在 view 绘制过程中, 绘制的内容将该坐标系作为参考, 来绘制 view.我们可以看下下面的这张图片:

    android y 坐标 绘制x 安卓坐标系_正则_02

二. view 当中的方法:

  1. getTop():获取 view 本身顶部到父容器 ViewGroup 顶部的距离.
  2. getBottom(): 获取 view 本身底部到父容器 ViewGroup 顶部的距离.(注意这里是ViewGroup顶部)
  3. getLeft(): 获取 view 本身左侧到父容器 ViewGroup 左侧的距离.
  4. getRight(): 获取 view 本身右侧到父容器 ViewGroup 左侧的距离.(这里是ViewGroup左侧)
    上面的几个方法所得到的值都是相对于父容器的, 而不是整个屏幕.
  5. offsetLeftAndRight(int offset): 水平方向移动view, offset 为正则向右移动, offset 为负则向左移动
  6. offsetTopAndBottom(int offset): 垂直方向移动view, offset 为正则向下移动, offset 为负则向右移动
    上面两个方法中对应的 getLeft() 和 getTop() 返回的值会改变

在 Android3.0以后 view 又增加了一些关于 view 的属性:

  1. x, y: 标示 view 左上角的坐标, 坐标系是父 view 的视图坐标, 其值为:

1

2

x = mleft + tranlationX

y = mtop + tranlationY

  1. translationX, translationY: 表示 view 位置的偏移量, 初始值为0
    该坐标系主要用在 view 的动画操作上面, 在后续的文章中会详细介绍 android 中的动画

三. MotionEvent当中的方法:(假设图片中的小点就是我们手指触摸在手机屏幕中的位置)

  1. getY(): view 本身顶部距离父容器顶部的距离
  2. getX(): view 本身左侧距离父容器左侧的距离
  3. getRawX(): view 本身左侧距离手机屏幕左侧的距离
  4. getRawY(): view 本身顶部距离手机屏幕顶部的距离

前两个方法是相对于父容器而言的, 后两个方法是相对于整个屏幕而言的, 这个地方不要弄混了