Android获取坐标细则

Android坐标系:

x轴向右,y轴向下,z轴向上

View相对坐标

  1. getTop()
    View的上离x轴方向父布局的距离
  2. getLeft()
    View的左离y轴方向父布局的距离
  3. getBottom()
    View的下离x轴方向父布局的距离
  4. getRight()
    View的右离y轴方向父布局的距离

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

View的宽高方法

  1. getWidth() = getRight() - getLeft()
  2. getHeight() = getBottom() - getTop()
  3. getMeasuredWidth()返回measure过程得到的mMeasuredWidth值
  4. getMeasuredHeight()返回measure过程得到的mMeasuredHeight值

getX()、getY()、getRawX()、getRawY()

在View布局中的应用
  1. getX()
    View的左上角离x轴方向父布局的距离
  2. getY()
    View的左上角离y轴方向父布局的距离
在OnTouchEvent()
  1. getX()
    触摸点离x轴方向父布局的距离
  2. getY()
    触摸点离y轴方向父布局的距离
  3. getRawX()
    触摸点离x轴的距离
  4. getRawY()
    触摸点离y轴的距离

View.getTranslationX()、View.getTranslationY()

  1. View.getTranslationX() = getX() - getLeft()
    View 左上角x轴方向相对于父容器的偏移量
  2. View.getTranslationY() = getY() - getTop()
    View 左上角y轴方向相对于父容器的偏移量

getLocalVisibleRect()、getGlobalVisibleRect()

  1. getLocalVisibleRect()
    获取View自身可见区域的矩形坐标,坐标点基于左上角
  2. getGlobalVisibleRect()
    获取View自身可见区域的矩形坐标,坐标点基于原点(0,0)

getLocationOnScreen()、getLocationInWindow()

  1. getLocationOnScreen()
    获取View的左上角的坐标,基于屏幕原点(0,0)
  2. getLocationInWindow()
    获取View的左上角的坐标,基于Window
    注:普通的activity同getLocationOnScreen(),存在Dialog的window则不同于getLocationOnScreen()

View滑动相关坐标

特别注意:View的scrollTo()和scrollBy()是用于滑动View中的内容,而不是改变View的位置;改变View在屏幕中的位置可以使用offsetLeftAndRight()和offsetTopAndBottom()方法,他会导致getLeft()等值改变。

  1. scrollTo(int x, int y)
    将View中内容(不是整个View)滑动到相应的位置,坐标基于父布局左上角
  2. scrollBy(int x, int y)
    在scrollTo()的基础上继续滑动xy
  3. setScrollX(int value)
    实质为scrollTo(),只是只改变Y轴滑动
  4. setScrollY(int value)
    实质为scrollTo(),只是只改变X轴滑动
  5. getScrollX()/getScrollY()
    获取当前滑动后的位置(即是scrollTo()的x参数)
  6. offsetLeftAndRight(int offset)
    水平方向挪动View
  7. offsetTopAndBottom(int offset)
    垂直方向挪动View

旋转及设置锚点

View.setRotation(float rotation)
设置旋转的角度(沿z轴旋转)
View.setPivotX(float pivotX)
设置锚点的X坐标值(相对于该View的坐标),以像素为单位。默认是View的中心。
View.setPivotX(float pivotX)
设置锚点的Y坐标值(相对于该View的坐标),以像素为单位。默认是View的中心。

你可能感兴趣的:(自定义View)