view绘制:draw阶段&dispatchDraw实现

如何将View绘制到屏幕上?

View --- > darw(Canvas canvas)

Draw the background 绘制背景
Draw view's content 绘制自己的内容
Draw chidren 绘制子View的内容
Draw decorations(scrollbars for instance) 给View添加自己的装饰

draw

one Draw the background 首先绘制背景,根据View的不同做不同的处理

dispatchDraw

当点击进去发现在这个View类当中这个dispatchDraw是一个空实现.因为他是View中子View的所以不需要实现dispatchDraw这个方法.但ViewGroup不一样有子View所以我们去ViewGroup中看一下

他会调用cihld.draw()这个方法,它会遍历我们的子View,去调用我们子View的这个方法.来去进行绘制

当我们点击draw()这个方法的时候会发现我们又回到了View里的draw()方法 所以说dispatchDraw()这个方法遍历调用我们所有的元素,然后调用这个子元素的draw()方法,这样我们的绘制事件他就是一层一层的传递下去的.回到View的draw()方法中重新走一遍方法 绘制好自定义View

ViewGroup里的drawChild

你可能感兴趣的:(view绘制:draw阶段&dispatchDraw实现)