Android之View坐标系

Android中有两种坐标系,一种是已屏幕为原点的坐标系,一种是以当前控件为坐标系

需要注意view的坐标是相对父容器而言的
View 提供了如下 5 种方法获取 View 的坐标:
1. View.getTop()、View.getLeft()、View.getBottom()、View.getRight();
2. View.getX()、View.getY();
3. View.getTranslationX()、View.getTranslationY();
4. View.getLocationOnScreen(int[] position);
5. View.getLocationInWindow(int[] position);

**1.** 这四个方法用于获取View相对于父容器的坐标
需要注意的是,这四个方法获取的坐标表示的是View原始状态时相对于父容器的坐标,对View进行平移操作并不会改变着四个方法的返回值,但是需要注意的是,一次拖拽的距离非常短在MotionEvent.ACTION_MOVE中经常会刷新,每次事件完成后这四个方法的值就会刷新
activity所对应的页面不是屏幕大小,因为不包括屏幕最上面的导航栏
2. getX()与getY()方法获取的是View 左上角相对于父容器的坐标,当View没有发生平移操作时,getX()==getLeft()、getY==getTop()。
3. translationX与 translationY是View左上角相对于父容器的偏移量:translationX = getX() - getLeft(),当View未发生平移操作时,translationX 与translationY都为0。
4. 获取View相对于整个屏幕的坐标。
5. 获取View相对于Window的坐标(忽略状态栏及ActionBar)。

MotionEvent类中 getRowX()和 getX()
    1、event.getRowX():触摸点相对于屏幕原点的x坐标
    2、event.getX():   触摸点相对于其所在组件原点的x坐标
 MotionEvent  就分为2种:  第一种  触摸点相对于其所在组件原点的e.getY()坐标   第二种触摸点相对于屏幕原点的e.getRowY()坐标,getX()和getY()获得的永远是相对view的触摸位置坐标(这两个值不会超过view的长度和宽度)

猜你喜欢

转载自blog.csdn.net/ling45654/article/details/77817265