Android
有两种坐标系。
Android
坐标系Android
视图坐标系
1、坐标解释
Android 坐标系:以屏幕左上角为原点。
MotionEvent.getRawX()、MotionEvent.getRawY()
等获取绝对坐标的方法则属于Android坐标系。
- Android视图坐标系:以父
View
左上角为原点。
- 其中
view.getLeft()、view.getRight()、view.getTop()、view.getBottom()、getX()、getY()
等等方法
属于Android视图坐标系,获取的数值是相对与父View左上角的。
- 其中
2、移动后View的left、top
view.getTop()、view.getLeft()
表示View
的左上角,一般情况下, left
和top
是不会改变的,改变的是view
的(x,y)
坐标值,对应方法也就是view.getX()、view.getY()
;
View
通过改变translationX、translationY
属性完成的平移操作,view.getLeft()、view.getTop()
的值不会改变。view.getX()、view.getY()
则是View目前位置的左上角坐标。
如果通过ValueAnimator + view.layout
改变了View的位置则view.getLeft() & view.getTop()
的值会发生改变,因为layout方法强制改变了left&top
的值
3、translationX、translationY
矩形1为移动前位置
矩形2为移动后位置
translationX、translationY
分别对应图中的x、y
关系为:
getX() = translationX + getLeft();
getY() = translationY + getTop();
如果想要将view恢复原位置,设置tranlsationX、translationY为0即可。
通过改变tranlsationX、Y将view进行拖动,需要不断记录tranlsationX、Y的值。