Android中View的getX,getY...(转载)

原文链接:点击打开链接

=============================================================================================

Android座标系的理解直接关系到后面你Android进阶部分的学习,如果没有夯实的基础,你自定义View时就会有种欲求不满,欲罢不能——想搞懂却又觉得难,想放弃又觉得舍不得。

Android中的座标系以及获取座标的方法 

Android中有两种座标系,分别称之为Android座标系和视图座标系。而对应的也有一些相关的方法可以获取座标系中的座标值。只有搞清楚这些区别,才能在实现的时候不至于出错或者得不到你想要的效果。

一、Android座标系和视图座标系

    (1)Android座标系

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


 

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

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

    (2)视图座标系

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


 

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

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

 

 

二、获取座标值以及相对距离的那些方法

      在android中,提供了非常丰富的方法来获得座标值和相对距离。但是在使用这些方法的时候,一定要清楚是以哪个座标系为标准来获取的。

为了将这些方法一一说明清楚,我也准备了一张图,如下:

     上面的那张图很好的说明了每个方法获得的座标值或者距离都是从哪里到哪里的。说明一下,图中有三个黑色的框框,最外层的是手机屏幕,

中间层的是ViewGroup,最内层的是ViewGroup中放置的view。

     其实上图中标注的方法可以分为两类,一类是View提供的方法,一类是MotionEvent提供的方法。分别说明如下:

View提供的获取的座标以及距离的方法:

getTop()           获取到的是view自身的顶边到其父布局顶边的距离

getLeft()           获取到的是view自身的左边到其父布局左边的距离

getRight()        获取到的是view自身的右边到其父布局左边的距离

getBottom()     获取到的是view自身底边到其父布局顶边的距离

 

MotionEvent提供的方法:

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

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

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

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

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

getScrollX() 类似 同上


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章