源码分析 view体系(一)坐标系

微博上有幸认识了GcsSloop,并给我提了非常好的意见,以后文章的干货一点会更多!

赫赫,好了该说正题了,view可以说是非常重要的,现在很多开发者只会去用,很难知道为什么要去这么做,一旦出了问题就Stack Overflow一下,这种程序员就是面向Stack Overflow编程 哈哈,好了 ,今天开始我会分几篇文章给大家讲解View的大部分基本原理。当你遇到嵌套,触摸冲突,自定义动画效果就不会害怕啦,这也是证明你通向Android高级开发工程师的第一步。

AndroidView体系是界面的核心,在这个系列中我分为多个章节陆续讲到 View坐标系、View的滑动机制、View的事件分发机制 、View的绘制流程 等等 来介绍Android View体系。 我们从最基础的坐标系开始!

1.View介绍

View是Android所有控件的基类,而且ViewGroup也是继承View的,下站图可以让大家更加直观的让大家了解View的体系.

《源码分析 view体系(一)坐标系》

2.坐标系

Android中分为两种Android坐标系和视图坐标系

(-) Android坐标系

Android坐标系还是比较简单的, 将屏幕的左上角的顶点作为Android坐标系的原点,这个原点向右是X轴正方向,原点向下是Y轴正方向。

还是看图比较直观:(虽然是我百度的哈哈)

《源码分析 view体系(一)坐标系》

在MotionEvent中的getRawX()和getRawY()获取的坐标都是Android坐标系的坐标。

(二)视图坐标系

顾名思义 Android的屏幕是有限的 ,有时候view会很大,我们通过屏幕能看到的View大小称为视图,

我们还是直接看图吧!(哈哈)

《源码分析 view体系(一)坐标系》

View自身坐标

如下方法可以获得View到其父控件(ViewGroup)的距离:

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

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

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

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

MotionEvent提供的方法

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

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

getRawX():获取点击事件距离整个屏幕左边距离,即绝对坐标

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

今天就写到这里 ,如果那里有不明白的可以直接在评论回复!

祝大家过一个好的 5.1!

由于本人水平有限,某些地方可能存在误解或不准确,如果你对此有疑问可以[gitHub](https://github.com/JunWeiUp/view)上提交issues进行反馈,,如果喜欢的话可以star一下。╭(╯ε╰)╮

    原文作者:JunWeiUp
    原文地址: https://www.jianshu.com/p/2c43386f6452
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞