近期在了解RecyclerView中引用ViewGroup作为Header的内容(https://blog.csdn.net/zxt0601/article/details/52267325)
期间突然对view、viewGroup与可以算作自定义viewGroup的recyclerView绘制的生命周期感到迷茫,所以又重新了解了一番
view(https://www.jianshu.com/p/c5785cf1fd57 && https://www.jianshu.com/p/c151efe22d0d)
viewGroup(https://www.jianshu.com/p/f327511f21cf &&https://www.jianshu.com/p/a8ca7f6ebfdf)
看完几篇文章后,稍作总结得出 绘制的时候是以从依附到容器开始:
1.测量大小
2.确认布局位置
3.绘制
测量大小从performMeasure开始,measure测量自己的大小,measureChild测量子组件大小
确认布局从performLayout开始,onLayout确认自己在容器里面的位置,然后再调用子组件的layout方法确认子组件在自己中的位置
最后是绘制的Draw从performDraw开始到最后调用子组件每一个View的Draw
重新整理了一番view的绘制流程后,开始也对recycleView的绘制流程有了思路
把recycleView比作viewGroup的话先是测量完本体的大小,之后就要测量子组件的大小
而子组件的数量与数据绑定在一起,所以绘制流程肯定在数据绑定之后
而添加一个viewGroup到recycleView里面作为Header的话,是在绘制之前添加一个子组件?还是在绘制完成后添加然后重新进行一次绘制流程?
而添加进来的viewGroup在没有依附view的状态已经确认了大小?作为一个以完成绘制流程的viewGroup加入到recycleView?还是仅仅是把数据布局等先绑定之后放进recycleView的绘制流程中作为子组件进行绘制?
上述view的绘制流程来说是从依附到显示的父容器开始的
所以按结论来说 是把viewGroup初始化参数后放置到recycleView的绘制流程中进行绘制