美文网首页
View的getX和getY

View的getX和getY

作者: 冰楓紫憶 | 来源:发表于2021-06-25 15:40 被阅读0次

Android坐标系和视图坐标系

Android中有两种坐标系,分别称之为Android坐标系和视图坐标系。而对应的也有一些相关的方法可以获取坐标系中的坐标值。

Android坐标系

先来看一看Android坐标系是个什么样子的。贴一张图来说明,如下:

image

如上图所示,Android坐标系以手机屏幕左上角的顶点为坐标原点,从该点向右为x轴正方向,从该点向下为y轴正方向。而触控事件中,使用getRawX()和getRawY()方法

获取的坐标就是以这个坐标系为标准下的坐标值。

视图坐标系

android中的另外一个坐标系叫做视图坐标系,它描述的是子视图在父视图中的位置。再贴一张图来说明,如下:

image

如上图所示,视图坐标系是以父视图的左上角为坐标原点的。相应的原点向右为x轴正方向,原点向下为y轴正方向。在触控中,通过

getX()和getY()来获取的坐标值就是视图坐标系中的坐标值。

View的getX和getY

View 提供了如下 5 种方法获取 View 的坐标:
1 . View.getTop()、View.getLeft()、View.getBottom()、View.getRight();//相对父容器
2 . View.getX()、View.getY();//getX()==getLeft()、getY==getTop()。
3 . View.getTranslationX()、View.getTranslationY();
4 . View.getLocationOnScreen(int[] position);//一个控件在其父窗口中的坐标位置,在当前窗口内的绝对坐标
5 . View.getLocationInWindow(int[] position);//一个控件在其整个屏幕上的坐标位置
初学View时见到这个多个方法可能有点懵逼,下面我来根据编号一一介绍:
1. 这四个方法用于获取View相对于父容器的坐标,如下图

图1.1

从上图可知,可根据View的这四个坐标来获取View的大小:

1 .View的Height值 = view.getBottom() - view.getTop();
2 .View的Width值 = view.getRight() - view.getLeft();

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

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)。

上面介绍的是View获取坐标的几种方法,但是在实际开发中不仅需要获取View的坐标,有时候还需要获取用户点击时的坐标。

MotionEvent的getX和getY

MotionEvent提供的方法:

getX() 获取点击事件距离控件左边的距离,即视图坐标

getY() 获取点击事件距离控件顶边的距离,即视图坐标

getRawX() 获取到的是点击事件距离整个屏幕左边的距离,即绝对坐标

getRawY() 获取到的是点击事件距离整个屏幕顶边的距离,即绝对坐标

getScrollY() 获取 视图坐标原点 到 视图 滚出屏幕 的距离

getScrollX() 类似 同上

getX()和getY()获取到的是相对于当前View左上角的坐标; getRawX和getRawY()获取的是相对于屏幕左上角的坐标。 如下图:

image.png

相关文章

  • View的getX和getY

    Android坐标系和视图坐标系 Android中有两种坐标系,分别称之为Android坐标系和视图坐标系。而对应...

  • Android View体系

    View的上下左右 1、getX\getY\getTop\getBottom\x\y\translationX\t...

  • 关于android中的getX,getY,getRawX,get

    总结: view下的方法: getX(): 该view坐标系中,x坐标值 getY():该view坐标系中,y坐标...

  • Android中的坐标

    View下的方法: getX(): 该view坐标系中,x坐标值 getY():该view坐标系中,y坐标值 ge...

  • View之坐标体系

    View关于坐标方法系列 相对坐标系列 MotionEvent 系列方法 e.getX()/e.getY()/**...

  • 安卓属性动画小技巧

    首先,最重要的一点也是务必要记住的一点 view 的 getX() getY()方法取得的是以父 view 为参考...

  • Android滑动的实现

    坐标系 android 坐标系 View坐标系getX() getY(); 滑动的七种实现 1. layout 2...

  • Android中View的getX,getY...

    Android坐标系的理解直接关系到后面你Android进阶部分的学习,如果没有夯实的基础,你自定义View时就会...

  • 3.MouseEvent

    getX(); 得到鼠标的横向位置坐标 getY(); 得到鼠标的纵向位置坐标

  • Android的坐标系和view的getX,getY,getLe

    参考这篇文章: http://blog.csdn.net/yanbober/article/details/504...

网友评论

      本文标题:View的getX和getY

      本文链接:https://www.haomeiwen.com/subject/abloyltx.html