码个蛋(CodeEgg)第859次推文
科技园地——码妞视角
此前,我们曾经探讨过一款热门技术:
今日,我们将继续关注另一款技术新星——ViewPage2。你是否对ViewPager2有所了解?如果你对此感到陌生,那么请准备好你的探索热情,本篇推文将为你揭示ViewPager2的独特魅力。
一、ViewPager2的新特性
从名称上看,ViewPager2显然是ViewPager的升级版。既然有了升级版,那它相比原版的ViewPager又有哪些新的特性和API的变化呢?让我们一起来探究。
-
基于RecyclerView实现:这意味着RecyclerView的优点将被ViewPager2所继承。
-
支持竖直滑动:只需一个简单的参数调整,即可改变滑动方向。
-
用户输入可关闭:通过setUserInputEnabled方法,你可以决定是否禁止用户滑动页面。
-
编程方式滚动支持:通过fakeDragBy(offsetPx)代码,可以模拟用户滑动页面的动作。
-
CompositePageTransformer支持同时添加多个PageTransformer。
-
支持DiffUtil,为数据集变更的item添加动画。
-
支持RTL(右到左)布局:虽然这个功能对国内开发者来说可能使用不多...
在深入研究之后,我还发现了ViewPager2相对于ViewPager的更多改变,比如FragmentStatePagerAdapter被FragmentStateAdapter所替代等等。这些改变都使得ViewPager2的使用更加灵活和便捷。
二、开启ViewPager2之旅
ViewPager2位于androidx包下,并非像ViewPager那样内置在系统源码中。使用ViewPager2需要额外添加依赖库。android support中不包含ViewPager2,也就是说使用ViewPager2需要进行迁移至androidx。
由于ViewPager2内部封装了RecyclerView,因此其Adapter就是RecyclerView的Adapter。
以下是关于item_page的简单代码实现,以及其效果展示:
三、探索PageTransformer的魅力
相比ViewPager,ViewPager2的PageTransformer功能有了显著的扩展。不仅可以通过PageTransformer设置页面动画,还可以设置页面间距,并且支持同时添加多个PageTransformer。
在这里,我们将深入了解如何设置页面间距,以及如何使用CompositePageTransformer来同时应用多个PageTransformer效果。
四、ViewPager2与Fragment的融合使用
我们还提到过ViewPager2中新增的FragmentStateAdapter,它替代了ViewPager的FragmentStatePagerAdapter。接下来,我们将通过实例演示如何在Activity中嵌套使用Fragment,并配合ViewPager2实现页面切换。
-
在Activity的layout文件中添加ViewPager2组件。
-
在Activity中为ViewPager2设置FragmentStateAdapter实例。
本篇文章带大家认识了ViewPager2的新特性和用法。无论是在性能还是功能上,ViewPager2都有了显著的提升。我相信在不久的将来,ViewPager2必定会成为主流,取代原有的ViewPager。那么,你是否已经考虑将ViewPager2应用到你的项目中了呢?
小贴士
-
Effective Java in Kotlin: 当遇到多个构造器参数时,考虑使用构建者模式。
你开始使用ViewPager2了吗?快来分享你的体验吧!