Android View坐标系详解(getTop()、getX、getTranslationX...)

View 提供了如下 5 种方法获取 View 的坐标:

  1. View.getTop()、View.getLeft()、View.getBottom()、View.getRight();
  2. View.getX()、View.getY();
  3. View.getTranslationX()、View.getTranslationY();
  4. View.getLocationOnScreen(int[] position);
  5. View.getLocationInWindow(int[] position);

初学 View 时见到这个多个方法可能有点懵逼,下面我来根据编号一一介绍:

1. 这四个方法用于获取 View 相对于父容器的坐标,如下图

image

从上图可知,可根据 View 的这四个坐标来获取View的大小:

View的Height值 = view.getBottom() - view.getTop();
View的Width值 = view.getRight() - view.getLeft();

需要注意的是,这四个方法获取的坐标表示的是 View 原始状态时相对于父容器的坐标,对 View 进行平移操作并不会改变着四个方法的返回值。

2. getX() 与 getY() 方法获取的是 View 左上角相对于父容器的坐标,当View没有发生平移操作时,getX()==getLeft()、getY==getTop()。

3. translationX 与 translationY 是 View 左上角相对于父容器的偏移量:translationX = getX() - getLeft(),当 View 未发生平移操作时,translationX 与 translationY 都为 0。

4. 获取 View 相对于整个屏幕的坐标。

5. 获取 View 相对于 Window 的坐标(忽略状态栏及 ActionBar)。

上面介绍的是 View 获取坐标的几种方法,但是在实际开发中不仅需要获取 View 的坐标,有时候还需要获取用户点击时的坐标。

MotionEvent

当重写 View 的 onTouchEvent(MotionEvent event) 方法时 android 会把触摸事件封装成 MotionEvent 成提供给开发者,MotionEvent 提供了两组用于获取用户点击点坐标的方法:

1. getX()、getY();
2. getRawX、getRawY();

getX() 和 getY() 获取到的是相对于当前 View 左上角的坐标; getRawX 和 getRawY() 获取的是相对于屏幕左上角的坐标。 如下图(画的不好,将就着看吧:-D):
[图片上传失败...(image-3c84bb-1512545673451)]

------------------------原文链接

你可能感兴趣的:(Android View坐标系详解(getTop()、getX、getTranslationX...))