本章中,首先是一些基础知识讲解。
在基础知识讲解部分,作者介绍了ViewRoot和DecorView,ViewRoot的实现类是ViewRootImpl,它是连接WindowManager和DecorView的纽带,View的measure,layout,draw三大方法都是由ViewRoot调用。DecorView是Activity的顶级View,我们通过setContentView方法设置的布局,就是添加到DecorView下的。
MeasureSpec是一个32位的int值,高两位代表SpecMode,低30位代表SpecSize。SpecMode指测量模式,SpecSize指在某种测量模式下的规格大小。在测量过程中,系统会将View的LayoutParams根据父容器所施加的规则转换成对应的MeasureSpec,然后再根据这个MeasureSpec来测量出View的宽高。
MeasureSpec具体的创建逻辑和View的measure,layout,draw过程详见《View的工作流程》。
网友评论