CoordinateLayout框架初步總結(未完)

總體流程可以總結如下:
CoordinateLayout正常分發點擊事件給Recyclerview之類的(在這裏完全可以把他當成一個普通的ViewGroup),然後NestedScrollView或者Recyclerview在onTouchEvent裏頭消費點擊和滾動事件,並且調用startNestedScroll方法來通知CoordinateLayout自己開始滾動了,讓其他的所有的含有behavior並且重寫了相關方法的子view跟着一起變化,至於怎麼變化那是他們自己的事情(比如AppBarLayout收到了RecyclerView通過Coor傳播的滾動事件,於是AppBarLayout開始隨之滾動)。

變化完了,開始繪製了,這時候CoordinateLayout在OnMeasure方法裏頭在ViewTreeObserver註冊的preDrawListener開始派上用場,Coor框架的依賴關係也是在這個監聽器裏頭起作用。他們讓依賴他人的view隨着被依賴的view進行相應的位置和大小的變化,還處理Anchor這種依賴關係。

舉例來說,Recyclerview裏頭經常使用ScrollingViewBehavior就是一個對AppBarLayout的依賴.AppBarLayout隨着Recyclerview滾動進行相應動作之後,AppBarLayout極有可能已經發生了大小位置變化,那麼處在下方的RecyclerView就要進行相應的大小位置變化
(就是調用onDependentViewChanged方法) 這就是註冊繪製前監聽器的作用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章