根 View 和 View 树的绘制过程

2016-2-26 chenhui Surface

ViewRoot 和 ViewImpl 是非常重要的两个类:前者由 ViewRootImpl 类实例化,是 WindowManager 和 DecorView 的连接器;后者则作为 Activity 的根 View 存在。


Activity 在绘制他的布局时,其流程从 ViewRoot 的 performTraversals() 方法开始,他一次调用 performMeasure()、performLayout()、performDraw() 这三个方法,也就是测量宽高、确定位置、绘制这三个过程来完成顶级 View 的绘制。


performMeasure() 在测量 DecorView 的宽高时,会调用其 onMeasure() 方法,我们知道,一个 ViewGroup 的 onMeasure() 方法会得到所有子 View 的高宽(在固定高宽的情况下不需要获得),也就是说,当测量顶级 View 的宽高的过程中,整个布局的 View 数的所有 View 的高宽都会被测量。


performLayout() 和 performDraw() 这两个方法也是一样的,使用的都是委托机制,测量绘制出整个界面。



发表评论:

Copyright ©2015-2016 freehui All rights reserved