读书笔记:Android开发艺术探索之第4章 View的工作原理
1ViewRoot的对应实现类ViewRootImpl,它是连接WindowsManager和DecorView的纽带,
ActivityThread创建完Activity,将DecorView添加到Window中通过ViewRootImpl对象和DecorView建立联系
View的绘制流程是从ViewRoot 的performTraversals开始的,流程图大概为:
DecorView图
MeasureSpec的参数:
getMode获取Mode,具体有三个
UNSPECIFIED:要多大有多大,一般用于系统测量
EXACTLY:固定大小,及LayoutParams中的match_parent,或者固定大小,如100dp
AT_MOST:View的大小不能超过父容器大小,一般相当于LayoutParams的wrap_content
View的measure中执行了onMeasure,只需要看这个方法,这个方法是测量自己本身大小的方法;
ViewGroup的measure继承自view,根据不同ViewGroup重写onMeasure,在这个里面不仅要测量自己的大小,还要递归遍历其子View的大小
ViewGroup和View的layout用来确定自身的位置,
View的onLayout是一个空实现方法。
ViewGroup的onLayout会调用子view的layout来确放置子元素,所以onLayout是一个抽象方法,根据不同的ViewGroup放置view
View的draw方法是绘制自身的内容,
ViewGroup在有背景的时候才会调用draw方法,在dispatchDraw方法中会调用子view的draw方法,然后绘制子view