仿写豆瓣详情页(五)联动和其他细节
仿写豆瓣概略页(一)开篇
仿写豆瓣概略页(二)底部浮层
仿写豆瓣概略页(三)内容列表
仿写豆瓣概略页(四)弹性布局
仿写豆瓣概略页(五)联动和其他细节
1、前语
前面几篇文章主要讲了几个为了仿写豆瓣概略页而自定义的 View
,底部浮层 BottomSheetLayout
、内容列表联动翻滚的 LinkedScrollView
和弹性布局 JellyLayout
,有了这些根本就可以完结概略页的效果,本文简略介绍一下我在详细1 v / j ] I完结的时o 6 I Y ;分是怎样安排这些自定义 View
的,详细代码可以参阅 github.com/funnywog D 9lfda… 中 com.funnywolf.hollowkit.douban
下的文件。
2、内容列表和底部浮层的联动
查看动图
这儿的内容列表主要是上面的 RecyclerView
列表和下面 ViewPagerN w 5 ` 6 v
两个 View
,RecyclerView
一向放在 LinkedScrollVi$ n % X Q cew
的 topView
中,View * S ` (wPager
放在 Linkea k c 5 Q z y :dScrollView
的 bottomView
中,然后完结上下衔接的翻滚。
浮层 BottomSheetLayout
在 LinkedScrollView
上面盖着,根据 LinkedScrollVi8 J eew
的 bottomView
的方位决定将内容列表的 View} m S Z -Pager
放在 LinkedScrollView
的 bottomView
中,仍是 BottomS# W T EheetLayout
中。当 bottomView
显露的高度小于 TabLayout
的高度时,就放在浮层中,大于时就从浮层中移除,放到 LinkedScrollView
的 b! m h f ;ottomView
中,然后完结内容列表和底部浮P 8 4层的联动。
3、标题栏
查看动图
首先,标题栏布景的透明度是随着内容列表翻滚突变;然} ] F ~ P后,再翻滚到必定阈值时,会呈现标题和内容概略+ | / –的翻} m [ V P S H I Z转o f T ) m u 3动画;最后,浮层的是否弹起也影响标题和内容概略的显现。所以咱们需求 Linkew 4 B [ f /dScrollView
topView
中 RecyclerView
翻滚的累加值,需求知道 Lin7 | +kedScrollView
翻滚的累加值(因为或许 RecyclerView
内容缺乏一屏时是无法翻滚i Q l z L 8 n p O的),还需求知道浮层的情况。
这儿我自定义了 ToolbarView
,对外显露一个 process
特点,限制范围在 @FloatRange(from = 0.0, to = 1.0)
。布景透明度直接等于 process
(这样功用会稍微差点,不过还好),在 process
从 1
的边界变化时,做动画改动标题和内容概略的显现。外部运用时,假如浮层是悉数翻开的 BOTTOM_SK S THEET_STATE_EXTENDED
,process
赋值为 1
,其他情况时等于「Recm [ j , u yclerView
翻滚的累加值和LinkG J K o B . e (edQ ; m 1 Q P P H RScrollView
翻滚的累加值中最大的」/「标题栏高度」。o # G = +
4、内容列表
LinkedScrollView
的 topView
中只有y K Y = S v [一个 RecyclerView
,运用 SimpleAdapteh ^ b S _ f J 8r 完结不同 ViewHolder
的分发处理。
5、完毕
前面几篇文章介绍的 Bot5 x H 7 @ ( 7 1tomSheetLa= , d O k K _yout
、LinkedScrollView
和 JellyLayout
等自定义 View
都是为了处理同方向翻滚时的嵌套翻滚问题(其中心就是「{ ] + v z . _ 6 ~翻滚量」的分发),也提供了不同的处理思路和方案,在仿写豆瓣概略页的过程中也验证了方案的可行性。不过这些 View
的整体完结仍是比较粗a : W | $ / = 4陋的,许多情况并没有考虑到,比如想要 LinkedScrollView
和 JellyLayout
直接嵌套起来完结弹性的效果就不太行,之后还需求持续学习,不断改进o _ 4 P 7 y。