哈,转眼已经十一月了。
这期需求是跟CoordinaterLayout相关,需要根据滑动位置动态更新一个ImageView的位置与大小。
需求分析
- 根据页面滑动距离,动态更新view layout,其中分为位置和大小两个方面
- 页面中部title条上滑到顶后吸顶
- view保持可点击状态并且最后固定在吸顶title上,更新点击事件
实现思路
- 先考虑第二个需求,吸顶可以通过CoordinaterLayout配合AppBarLayout以及CollapsingToolBarLayout实现
- 那么再来考虑第一个需求,现在有两个思路
- 第一个,我们可以通AppBarLayout.OnOffsetChangedListener来监听AppBarLayout的offset,来确定view需要的translation以及scale
- 我们可以通过CoordinaterLayout中的Behavior来对view进行设置,而这也有两种实现方式
- 某个view监听另一个view的状态变化,例如大小、位置、显示状态等需要重写layoutDependsOn和onDependentViewChanged方法
- 某个view监听CoordinatorLayout内NestedScrollingChild的接口实现类的滑动状态重写onStartNestedScroll和onNestedPreScroll方法
- view吸顶可以在CollapsingToolBarLayout中通过layout_scrollFlags来指定状态条吸顶的状态