Android坐标系:
x轴向右,y轴向下,z轴向上
View相对坐标
- getTop()
View的上离x轴方向父布局的距离- getLeft()
View的左离y轴方向父布局的距离- getBottom()
View的下离x轴方向父布局的距离- getRight()
View的右离y轴方向父布局的距离
注:这四个方法获取的坐标表示的是 View 原始状态时相对于父容器的坐标,对 View 进行平移操作并不会改变着四个方法的返回值。
View的宽高方法
- getWidth() = getRight() - getLeft()
- getHeight() = getBottom() - getTop()
- getMeasuredWidth()返回measure过程得到的mMeasuredWidth值
- getMeasuredHeight()返回measure过程得到的mMeasuredHeight值
getX()、getY()、getRawX()、getRawY()
在View布局中的应用
- getX()
View的左上角离x轴方向父布局的距离- getY()
View的左上角离y轴方向父布局的距离
在OnTouchEvent()
- getX()
触摸点离x轴方向父布局的距离- getY()
触摸点离y轴方向父布局的距离- getRawX()
触摸点离x轴的距离- getRawY()
触摸点离y轴的距离
View.getTranslationX()、View.getTranslationY()
- View.getTranslationX() = getX() - getLeft()
View 左上角x轴方向相对于父容器的偏移量- View.getTranslationY() = getY() - getTop()
View 左上角y轴方向相对于父容器的偏移量
getLocalVisibleRect()、getGlobalVisibleRect()
- getLocalVisibleRect()
获取View自身可见区域的矩形坐标,坐标点基于左上角- getGlobalVisibleRect()
获取View自身可见区域的矩形坐标,坐标点基于原点(0,0)
getLocationOnScreen()、getLocationInWindow()
- getLocationOnScreen()
获取View的左上角的坐标,基于屏幕原点(0,0)- getLocationInWindow()
获取View的左上角的坐标,基于Window
注:普通的activity同getLocationOnScreen(),存在Dialog的window则不同于getLocationOnScreen()
View滑动相关坐标
特别注意:View的scrollTo()和scrollBy()是用于滑动View中的内容,而不是改变View的位置;改变View在屏幕中的位置可以使用offsetLeftAndRight()和offsetTopAndBottom()方法,他会导致getLeft()等值改变。
- scrollTo(int x, int y)
将View中内容(不是整个View)滑动到相应的位置,坐标基于父布局左上角- scrollBy(int x, int y)
在scrollTo()的基础上继续滑动xy- setScrollX(int value)
实质为scrollTo(),只是只改变Y轴滑动- setScrollY(int value)
实质为scrollTo(),只是只改变X轴滑动- getScrollX()/getScrollY()
获取当前滑动后的位置(即是scrollTo()的x参数)- offsetLeftAndRight(int offset)
水平方向挪动View- offsetTopAndBottom(int offset)
垂直方向挪动View
旋转及设置锚点
View.setRotation(float rotation)
设置旋转的角度(沿z轴旋转)
View.setPivotX(float pivotX)
设置锚点的X坐标值(相对于该View的坐标),以像素为单位。默认是View的中心。
View.setPivotX(float pivotX)
设置锚点的Y坐标值(相对于该View的坐标),以像素为单位。默认是View的中心。