android draw() onDraw() dispathDraw() onDrawScrollBars

/*
* 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

原文地址:https://www.cnblogs.com/ZacharyHodgeZou/p/3725672.html