绘画流程,计算视图大小(measure)、设置视图的位置(layout),绘画(draw)
1.计算视图大小(measure)
计算视图大小是从measure开始的,view的measure是final类型方法,所以实际调用的是View的measure,在measure里面调用的是onMeasure(ViewGroup没有重写onMeasure)。
如果是ViewGroup的实现类一般都会重写onMeasure,在onMeansure一般需要计算子类视图大小ViewGroup提供了meansureChildren方法,meansureChildren方法实际是调用子类的meansure方法。
onMeasure最后会设置控件大小会调用setMeasureDimension。
2.设置视图的位置(layout)
视图的位置设置是从layout开始的,layout会调用onlayout
3.绘画(draw)
绘画是从draw开始的,draw依次调用onDraw dispatchDraw onDrawForegroup。ViewGroup的dispatchDraw会调用drawChild,drawChild调用子控件的draw。