文章目录
1 前言
Android
的 View
体系是 Android
中非常重要的一块内容,包括自定义控件、事件的分发等都属于 View
体系。
2 View 简介
View
是 Android
中所有控件的基类,ViewGroup
也是继承自 View
。ViewGroup
是 View
的组合,可以包含 ViewGroup
也可以包含 View
,以此类推,组成一个 View
树。
3 坐标系
Android
坐标系分为两种。
- Android 坐标系
- 视图坐标系
3.1 Android 坐标系
Android 坐标系,以屏幕的左上角为原点,向右为 X
轴,向下为 Y
轴,如下图所示:
3.2 视图坐标系
视图坐标系也叫 View
坐标系,如下图所示:
3.2.1 View 获取自身宽高
由上图可知 View
自身的高度计算公式:
- width = getRigth() - getLeft()
- height = getBottom() - getTop()
View
源码中提供的 getWidth()
和 getHeight()
获取 View
的宽高,内部处理是相同的。
3.2.2 View 自身坐标
下面方法获取 View
到父控件的距离:
- getTop():View 自身顶部到父控件顶部距离
- getBottom():View 自身底部到父控件顶部距离
- getLeft():View 自身左边到父控件左边距离
- getRight():View 自身右边到父控件左边距离
3.2.3 MotionEvent 提供方法
当我们点击手机屏幕时候,点击事件会封装成 MotionEvent
,然后由 onTouchEvent(MotionEvent ev)
方法进行处理,MotionEvent
提供获取焦点左边的方法:
- getX():视图坐标,点击位置距离控件左边距离
- getY():视图坐标,点击位置距离控件顶部距离
- getRawX():绝对坐标,点击位置距离整个屏幕左边距离
- getRawY():绝对坐标,点击位置距离整个屏幕顶部距离