View坐标系

View坐标系_第1张图片

"学而不思则罔,思而不学则殆"
                                                        ————孔子
       Android View体系作为Android基础知识里面比较基础也比较核心的部分,其重要性不比四大组件差多少,从本篇开始将开始整理View的相关知识,形成系列。本篇主要就View的坐标做介绍,在后续的文章里还会涉及到事件的分发、View的绘制等内容。

View简介

       View是Android里面所有控件的基类,ViewGroup也是继承自View,我们常用的控件都是继承自View,掌握好View的相关知识,对后面的界面开发有很大帮助。View这一块内容,展示是基础,交互才是精髓,常见的有点击、长按、滑动等交互事件,点击、长按比较简单,滑动事件离不开坐标点,下面就坐标角度来分析一下。

安卓里的坐标系和数学坐标系的区别

       说到坐标系,大家最熟悉的还是数学里面最常用到的坐标系,如下图。在数学坐标系里面,坐标轴向上是y轴正方向,向右是x轴正方向。

View坐标系_第2张图片

       再来看看我们安卓里面的坐标系,如下图。和数学坐标系还是有区别的,向右是x轴正方向,向下是y轴的正方向,相当于数学坐标系上下颠倒了一下,在后续的开发里不要理解错了。
View坐标系_第3张图片

       在手机屏幕上坐标轴的体现为,如下图。假如粉红色区域为手机屏幕,屏幕的左上角是坐标系的原点(0,0),沿左边向下为y轴正方向,沿顶边向右为x轴正方向。
View坐标系_第4张图片

安卓里的坐标系

       Android坐标系主要分为两种:Android坐标、视图坐标。
              a、Android坐标:Android坐标是以屏幕的左上角为原点,水平向右为x正方向,垂直向下为y轴正方向。
              b、视图坐标:视图坐标和Android坐标相似,也是从原点水平向右代表x正方向,垂直向下代表y正方向,但是原点不再是屏幕的坐上角,而是父View的左上角作为原点,如下图所示。

View坐标系_第5张图片

相对坐标和绝对坐标的区别

       我们通过一幅图来了解相对坐标和绝对坐标的区别。如下图:


View坐标系_第6张图片

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坐标的坐标点。结合上图和这些相关的事件,很轻易就可以理解这两种坐标了。

你可能感兴趣的:(View坐标系)