![](https://i-blog.csdnimg.cn/blog_migrate/47c3485e0660036b37060d6b1de1d231.webp?x-image-process=image/format,png)
————孔子
Android View体系作为Android基础知识里面比较基础也比较核心的部分,其重要性不比四大组件差多少,从本篇开始将开始整理View的相关知识,形成系列。本篇主要就View的坐标做介绍,在后续的文章里还会涉及到事件的分发、View的绘制等内容。
View简介
View是Android里面所有控件的基类,ViewGroup也是继承自View,我们常用的控件都是继承自View,掌握好View的相关知识,对后面的界面开发有很大帮助。View这一块内容,展示是基础,交互才是精髓,常见的有点击、长按、滑动等交互事件,点击、长按比较简单,滑动事件离不开坐标点,下面就坐标角度来分析一下。
安卓里的坐标系和数学坐标系的区别
说到坐标系,大家最熟悉的还是数学里面最常用到的坐标系,如下图。在数学坐标系里面,坐标轴向上是y轴正方向,向右是x轴正方向。
再来看看我们安卓里面的坐标系,如下图。和数学坐标系还是有区别的,向右是x轴正方向,向下是y轴的正方向,相当于数学坐标系上下颠倒了一下,在后续的开发里不要理解错了。
在手机屏幕上坐标轴的体现为,如下图。假如粉红色区域为手机屏幕,屏幕的左上角是坐标系的原点(0,0),沿左边向下为y轴正方向,沿顶边向右为x轴正方向。
安卓里的坐标系
Android坐标系主要分为两种:Android坐标、视图坐标。
a、Android坐标:Android坐标是以屏幕的左上角为原点,水平向右为x正方向,垂直向下为y轴正方向。
b、视图坐标:视图坐标和Android坐标相似,也是从原点水平向右代表x正方向,垂直向下代表y正方向,但是原点不再是屏幕的坐上角,而是父View的左上角作为原点,如下图所示。
相对坐标和绝对坐标的区别
我们通过一幅图来了解相对坐标和绝对坐标的区别。如下图:
View获取自己坐标的事件:
getLeft():当前View的左边离父控件左边的距离;
getTop():当前View的顶边离父控件顶边的距离;
getRight():当前View的右边距父控件左边的距离;
getBottom():当前View的底边距父控件的顶边的距离;
View获取自身宽高:
getWidth():当前View自身的宽度;
getHeight():当前View自身的高度;
MotionEvent获取坐标:
getX():当前触摸点距当前View的左边的距离;
getY():当前触摸点距当前View的顶边的距离;
getRawX():当前触摸点距屏幕左边的距离;
getRawY():当前触摸点距屏幕的顶边的距离;
这里getX()、getY()获取到的就是视图坐标的坐标点,getRawX()、getRawY()获取到的就是Android坐标的坐标点。结合上图和这些相关的事件,很轻易就可以理解这两种坐标了。