哈,轉(zhuǎn)眼已經(jīng)十一月了。
這期需求是跟CoordinaterLayout相關(guān),需要根據(jù)滑動(dòng)位置動(dòng)態(tài)更新一個(gè)ImageView的位置與大小。
需求分析
- 根據(jù)頁(yè)面滑動(dòng)距離,動(dòng)態(tài)更新view layout,其中分為位置和大小兩個(gè)方面
- 頁(yè)面中部title條上滑到頂后吸頂
- view保持可點(diǎn)擊狀態(tài)并且最后固定在吸頂title上,更新點(diǎn)擊事件
實(shí)現(xiàn)思路
- 先考慮第二個(gè)需求,吸頂可以通過(guò)CoordinaterLayout配合AppBarLayout以及CollapsingToolBarLayout實(shí)現(xiàn)
- 那么再來(lái)考慮第一個(gè)需求,現(xiàn)在有兩個(gè)思路
- 第一個(gè),我們可以通AppBarLayout.OnOffsetChangedListener來(lái)監(jiān)聽(tīng)AppBarLayout的offset,來(lái)確定view需要的translation以及scale
- 我們可以通過(guò)CoordinaterLayout中的Behavior來(lái)對(duì)view進(jìn)行設(shè)置,而這也有兩種實(shí)現(xiàn)方式
- 某個(gè)view監(jiān)聽(tīng)另一個(gè)view的狀態(tài)變化,例如大小、位置、顯示狀態(tài)等需要重寫(xiě)layoutDependsOn和onDependentViewChanged方法
- 某個(gè)view監(jiān)聽(tīng)CoordinatorLayout內(nèi)NestedScrollingChild的接口實(shí)現(xiàn)類的滑動(dòng)狀態(tài)重寫(xiě)onStartNestedScroll和onNestedPreScroll方法
- view吸頂可以在CollapsingToolBarLayout中通過(guò)layout_scrollFlags來(lái)指定狀態(tài)條吸頂?shù)臓顟B(tài)