Android View坐标系

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010369338/article/details/79960499

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的左上角,一般情况下, lefttop是不会改变的,改变的是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的值。

猜你喜欢

转载自blog.csdn.net/u010369338/article/details/79960499