描述一下View的绘制原理
View的绘制流程主要分为三步:
-
onMeasure:测量视图的大小,从顶层父View到子View递归调用measure()方法,measure()调用onMeasure()方法,onMeasure()方法完成绘制工作。
-
onLayout:确定视图的位置,从顶层父View到子View递归调用layout()方法,父View将上一步measure()方法得到的子View的布局大小和布局参数,将子View放在合适的位置上。
-
onDraw:绘制最终的视图,首先ViewRoot创建一个Canvas对象,然后调用onDraw()方法进行绘制。onDraw()方法的绘制流程为:① 绘制视图背景。② 绘制画布的图层。 ③ 绘制View内容。
④ 绘制子视图,如果有的话。⑤ 还原图层。⑥ 绘制滚动条。 -
其中measure确定View的测量宽/高,layout来确定View的最终宽/高和四个顶点的位置,draw负责将View绘制到屏幕上。
说到底其实就是,measure就是给个建议值,View多大合适;layout就是去放View的外框,放在哪里,具体多大;draw就是去画View里面的内容。