Android中的窗口坐标体系(分二种)、获取坐标的方法

  1. Android坐标系

    在Android中,将屏幕最左上角的顶点作为Android坐标系的原点,从这个点向右是X轴正方向,从这个点向下是Y轴正方向。这里写图片描述
    系统提供了getLocationOnScreen(intlocation[])获取Android坐标系中点的位置,即该View左上角在Android坐标系的坐标。另外,在触控事件中使用`getRawX() getRawY()方法所获得的坐标同样是Android坐标系的坐标。

  2. 视图坐标系

    它描述的是子视图在父视图中的位置关系。
    视图坐标系
    如上图所示,视图坐标系是以父视图的左上角为坐标原点的。相应的原点向右为x轴正方向,原点向下为y轴正方向。在触控中,通过getX()和getY()来获取的坐标值就是视图坐标系中的坐标值。

获取坐标的方法

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

为了将这些方法一一说明清楚,我也准备了一张图,如下:
获取坐标的方法
上面的那张图很好的说明了每个方法获得的坐标值或者距离都是从哪里到哪里的。说明一下,图中有三个黑色的框框,最外层的是手机屏幕,中间层的是ViewGroup,最内层的是ViewGroup中放置的view。

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

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

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

MotionEvent提供的方法:

getX() 获取点击事件距离控件左边的距离,即视图坐标
getY() 获取点击事件距离控件顶边的距离,即视图坐标
getRawX() 获取到的是点击事件距离整个屏幕左边的距离,即绝对坐标
getRawY() 获取到的是点击事件距离整个屏幕顶边的距离,即绝对坐标

猜你喜欢

转载自blog.csdn.net/u010217055/article/details/52805857