/*
* Draw traversal performs several drawing steps which must be executed
* in the appropriate order:
*
* 1. Draw the background
* 2. If necessary, save the canvas' layers to prepare for fading
* 3. Draw view's content
* 4. Draw children
* 5. If necessary, draw the fading edges and restore layers
* 6. Draw decorations (scrollbars for instance)
*/
// Step 1, draw the background, if needed
// skip step 2 & 5 if possible (common case)
// Step 3, draw the content
if (!dirtyOpaque) onDraw(canvas);
// Step 4, draw the children
dispatchDraw(canvas);
// Step 6, draw decorations (scrollbars)
onDrawScrollBars(canvas);
onDraw():When custom a view, overriding this method
measure(内部调用onMeasure)
layout(内部调用onLayout)
draw(内部调用ondraw、dispatchDraw、onDrawScrollBars)
CustomView Override onDraw()
CustomViewGroup Override dispatchDraw()
ondraw:draw View's content
dispatchDraw:draw children
处理组件的布局通常要重写onMesure和onLayout这两个方法
Reference:
http://blog.csdn.net/czh0766/article/details/5790295
http://blog.csdn.net/scorplopan/article/details/6302827