View的工作流程主要指measure
,layout
,draw
这三大流程,即测量、布局和绘制。
measure
过程
1、View
的measure
过程
2、ViewGroup
的measure
过程
使用measureChildren
遍历调用所有子View的onMeasure
方法
layout
过程
layout
的作用是ViewGroup
用来确定子元素的位置,当ViewGroup
的位置被确定后。它在onLayout
中会遍历所有子元素并调用其Layout
方法,在Layout
方法中onLayout
方法会被调用。
在View
的默认实现中,View
的测量宽/高和最终宽/高是相等的,测量宽/高形成于measure
过程,最终宽/高形成于layout
过程。日常开发中,我们可以认为View
的测量宽/高就等于最终宽/高。
draw
过程
- 绘制背景(
background.draw(canvas)
) - 绘制自己(
onDraw
) - 绘制子
View
(dispatchDraw
) - 绘制装饰(
onDrawScrollBars
)