仿写豆瓣详情页(五)联动和其他细节

仿写豆瓣概略页(一)开篇
仿写豆瓣概略页(二)底部浮层
仿写豆瓣概略页(三)内容列表
仿写豆瓣概略页(四)弹性布局
仿写豆瓣概略页(五)联动和其他细节

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 两个 ViewRecyclerView 一向放在 LinkedScrollVi$ n % X Q cewtopView 中,View * S ` (wPager 放在 Linkea k c 5 Q z y :dScrollViewbottomView 中,然后完结上下衔接的翻滚。

浮层 BottomSheetLayoutLinkedScrollView 上面盖着,根据 LinkedScrollVi8 J eewbottomView 的方位决定将内容列表的 View} m S Z -Pager 放在 LinkedScrollViewbottomView 中,仍是 BottomS# W T EheetLayout 中。当 bottomView 显露的高度小于 TabLayout 的高度时,就放在浮层中,大于时就从浮层中移除,放到 LinkedScrollViewb! m h f ;ottomView 中,然后完结内容列表和底部浮P 8 4层的联动。

3、标题栏

仿写豆瓣详情页(五)联动和其他细节

查看动图

首先,标题栏布景的透明度是随着内容列表翻滚突变;然} ] F ~ P后,再翻滚到必定阈值时,会呈现标题和内容概略+ | / –的翻} m [ V P S H I Zo f T ) m u 3动画;最后,浮层的是否弹起也影响标题和内容概略的显现。所以咱们需求 Linkew 4 B [ f /dScrollView topViewRecyclerView 翻滚的累加值,需求知道 Lin7 | +kedScrollView 翻滚的累加值(因为或许 RecyclerView 内容缺乏一屏时是无法翻滚i Q l z L 8 n p O的),还需求知道浮层的情况。

这儿我自定义了 ToolbarView,对外显露一个 process 特点,限制范围在 @FloatRange(from = 0.0, to = 1.0)。布景透明度直接等于 process(这样功用会稍微差点,不过还好),在 process1 的边界变化时,做动画改动标题和内容概略的显现。外部运用时,假如浮层是悉数翻开的 BOTTOM_SK S THEET_STATE_EXTENDEDprocess 赋值为 1,其他情况时等于「Recm [ j , u yclerView 翻滚的累加值和LinkG J K o B . e (edQ ; m 1 Q P P H RScrollView 翻滚的累加值中最大的」/「标题栏高度」。o # G = +

4、内容列表

LinkedScrollViewtopView 中只有y K Y = S v [一个 RecyclerView,运用 SimpleAdapteh ^ b S _ f J 8r 完结不同 ViewHolder 的分发处理。

5、完毕

前面几篇文章介绍的 Bot5 x H 7 @ ( 7 1tomSheetLa= , d O k K _youtLinkedScrollViewJellyLayout 等自定义 View 都是为了处理同方向翻滚时的嵌套翻滚问题(其中心就是「{ ] + v z . _ 6 ~翻滚量」的分发),也提供了不同的处理思路和方案,在仿写豆瓣概略页的过程中也验证了方案的可行性。不过这些 View 的整体完结仍是比较粗a : W | $ / = 4陋的,许多情况并没有考虑到,比如想要 LinkedScrollViewJellyLayout 直接嵌套起来完结弹性的效果就不太行,之后还需求持续学习,不断改进o _ 4 P 7 y