------------------------------------------------------------------------------
GitHub:lightSky
微博: light_sky , 即时分享最新技术,欢迎关注
------------------------------------------------------------------------------
View绘制机制
1. View树的绘图流程
整个View树的绘图流程是在ViewRoot.java类的performTraversals()函数展开的,该函数做的执行过程可简单概况为根据之前设置的状态,判断是否需要重新计算视图大小(measure)、是否重新需要安置视图的位置(layout)、以及是否需要重绘(draw),这里就不做延展了,我们只介绍在自定义View中直接涉及到的一些部分,整个流程如下
View绘制流程调用链
图片来自 https://plus.google.com/+ArpitMathur/posts/cT1EuBbxEgN
2. 概念
参考文献:http://developer.android.com/guide/topics/ui/how-android-draws.html
当Activity接收到焦点的时候,它会被请求绘制布局。Android framework将会处理绘制的流程,但Activity必须提供View层级的根节点。绘制是从根节点开始的,需要measure和draw布局树。绘制会遍历和渲染每一个与无效区域相交的view。相反,每一个ViewGroup负责绘制它所有的子视图,而最底层的View会负责绘制自身。树的遍历是有序的,父视图会先于子视图被绘制,
measure和layout