您的位置:首页 > 移动开发 > Android开发

Android坐标系

2016-07-27 17:21 169 查看

Android坐标系

学习android的期间,总是对各种坐标没有概念,走了很多弯路,今天来总结下,在android中有两种坐标系:

android坐标系

视图坐标系

两个坐标系是有差别的,前面所说的弯路的根本原因也是在于没有搞清楚两个坐标系的关系和区别。

android坐标系

在android中,这个坐标系是相对于整个屏幕的,也是最基本的。在坐标系,屏幕的左上角是坐标轴原点,从这个点向右是X轴的正方向,这个点向下是Y轴正方向。如下图所示。



在andriod的触控事件中,
MotionEvent
getRawX()
getRawY()
得到的数值就是建立在android坐标系中,得到的数值就是在屏幕中的位置。文章最后一张图上面可以看的更明白些。

视图坐标系

视图坐标系是子视图在父视图中的位置描述,它们有相同点,有不同点。坐标原点在父视图的左上角,从这个点向右是X轴的正方向,这个点向下是Y轴正方向。如下图所示。



图中红框为屏幕,假想这时候里面屏幕正好是打开一个应用,应用的某一层布局A里面有且仅有一个》>button,那么这个button的视图坐标系的原点就是A布局的左上角(通俗的来讲就是button的父布局的左>上角是它的原点)。

MotionEvent
getX()
getY()
就是建立在视图坐标系中的,得到的数值就是当前触碰的这个点在视图坐标系中的位置。

View
中的几个常用方法也是建立在这个坐标系内:

getLeft()
得到的是当前调用这个方法的控件的左边缘距离父布局的左边缘的距离。

getRight()
得到的是当前调用这个方法的控件的右边缘距离父布局的左边缘的距离。

getTop()
得到的是当前调用这个方法的控件的上边缘距离父布局的上边缘的距离。

getBottom()
得到的是当前调用这个方法的控件的下边缘距离父布局的上边缘的距离。

还是很有规律的,大致上就是只看离父布局左边和上边的距离。

下面引用一张来自《Android群英传》的图片,可以更加清楚地看出各个坐标系和各个方法的联系和区别。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息