ViewPager2实现内部Item的动态滚动

2022-02-09 14:30:41 浏览数 (1)

需求决定起因

最近接到了一个需求,大概类似如下图所示的一个样式(省略了部分细节,不影响大概)。

我们这是一个视频播放页 详情页,考虑到简单快捷,就想到了一个 ViewPager2 就可以实现,简单又快捷,为自己点赞。一想到如此easy,瞬时笑出了猪叫。当然RecyclerView也可以,用一个仿抖音的那种 LayoutManager 就行,但是为什么不呢,因为涉及到了视频播放,手动去处理一些生命周期和懒加载,总是非常麻烦,而且ViewPager2本身就是基于 RecyclerView ,所以何乐而不为呢。

当然有些同学会说了,这个玩意自定义一个可滑动的ViewGroup就行啊,这个方案也可以。但是首先你要考虑的东西就很多,如果视频详情页超出一屏呢,也就是内部用了 RecyclerView或者NestedScrollView 呢,是不是还需要处理一下滑动冲突,当然这也不是很困难,内部拦截法就可以搞定。然后写完后,相应的加载回调是不是得自己再手动定义一个接口去伪造。比如不可见,页面加载,总体相对来说并不是那么容易。

就在我以为又可以摸鱼一个ViewPager2就可以搞定之时。突然,产品同学发了新指示,下意识预感不妙。

产品:得加一个第一次使用时的提示啊,要不然用户都不知道页面可以下滑呢?效果我发你了,你看看:

下图为我实现好的简单样式,大意体会即可。

好家伙,不按套路出牌啊,我故作深沉,实则稳如老狗( ViewPager2 不是有一个 fakeDragBy() 方法设置偏移量吗),这个有点麻烦,我得考虑考虑。

接下来不却知道自己要开启了啪啪打脸时刻,满心欢喜,太easy啊,ViewPager2 真香

0 人点赞