近期在瞭解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的繪製流程中進行繪製