Android初识View笔记

136 阅读1分钟

在Android中,View是所有的控件的基类,是控件这一概念的抽象,代表了一个控件。

View坐标系

如图所示:

top:View在父组件中的上边距,可以通过getTop方法获得。

left:View在父组件中的左边距,可以通过getLeft方法获得。

right:View在父组件中的右边距,可以通过getRight方法获得。

bottom:View在父组件中的下边距,可以通过getBottom方法获得。

工作流程

View共有三大流程:

measure

测量View的宽高,只是测量的值,不一定未最终值。并且在ViewGroup中还要便利子元素的measure方法,然后递归执行直至叶子节点。

普通View的MeasureSpec的创建规则

layout

在layout方法中初始化mLeft、mBottom、mRight、mTop来确定组件位置与实际宽高。

如果是ViewGroup组件还要调用onLayout方法来计算子组件的位置与宽高。之后便利子组件的layout方法并传入计算后的位置与大小。

直接继承于View与ViewGroup的自定义控件的padding值是默认不生效的,需要自己处理,如果直接继承于ViewGroup的控件不但要处理padding值,还要处理子组件的margin值

draw

  1. 绘制背景background.draw(canvas)

  2. 绘制自己(onDraw)

  3. 绘制children(dispatchDraw)

  4. 绘制装饰(onDrawScrollBars)

通过dispatchDraw来调用子元素的draw方法,来一层层的往下传。