Android坐标系详解

摘要

View

left = getLeft();top = getTop();right = getRight();bottom = getBottom();

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

  1. left/top表示view左上角相对于父布局x/y方向上的坐标。
  2. right/bottom表示view右下角相对于父布局x/y方向上的坐标。
  3. view的宽度width = right - left;view的高度height = bottom - top;

x=getX();translationX=getTranslationX();

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

  2. x表示view相对于父布局左上角的坐标,会随着view的移动改变。
    translationX表示view左上角相对于当前view原始位置x方向移动的距离,在view不移动时默认为0。

  3. x = left + translationX

scrollTo() & scrollBy()只能将view的内容进行移动,并不能将view本身进行移动;

  1. 如果想改变view在屏幕中的位置,调用public void offsetLeftAndRight(int offset)用于左右移动方法或public void offsetTopAndBottom(int offset)用于上下移动。
  2. scrollTo(x,y)表示view的(x,y)点与手机屏幕的左上角对齐。
  3. scrollBy(dx,dy):dx>0表示视图(View或ViewGroup)的内容从右向左滑动;反之,从左向右滑动;dy>0表示视图(View或ViewGroup)的内容从下向上滑动;反之,从上向下滑动。

scrollX=getScrollX();scrollY=getScrollY();

scrollX表示手机屏幕显示区域左上角x坐标减去view左上角x坐标。
scrollY表示手机屏幕显示区域左上角y坐标减去view左上角y坐标。

MotionEvent

x = getX();rawX = getRawX();

x表示触到view时相对于该view左上角的x方向位置。如果该view移动,则代表这次触到与上一次view所在位置的距离。
rawX表示触到view时相对于屏幕x方向的位置。

参考

  1. Android View坐标系详解