ViewPager2的新特性
ViewPager2从名字就可以看出来它是ViewPager的升级版,既然是升级版那么它相比ViewPager有哪些新功能和哪些API变化呢?我们接着往下看。
1.ViewPager2新特性
- 基于RecyclerView实现。这意味着RecyclerView的优点将会被ViewPager2所继承。
- 支持竖直滑动。只需要一个参数就可以改变滑动方向。
- 支持关闭用户输入。通过setUserInputEnabled来设置是否禁止用户滑动页面。
- 支持通过编程方式滚动。通过fakeDragBy(offsetPx)代码模拟用户滑动页面。
- CompositePageTransformer 支持同时添加多个PageTransformer。
- 支持DiffUtil ,可以添加数据集合改变的item动画。
- 支持RTL (right-to-left)布局。我觉得这个功能对国内开发者来说可能用处不大..
2.相比ViewPager变化的API
ViewPager2相比ViewPager做了哪些改变呢?研究了一番之后我大概列出以下几点:
- ViewPager2与ViewPager同是继承自ViewGrop,但是ViewPager2被声明成了final。意味着我们不可能再像ViewPager一样通过继承来修改ViewPager2的代码。
- FragmentStatePagerAdapter被FragmentStateAdapter 替代
- PagerAdapter被RecyclerView.Adapter替代
- addPageChangeListener被registerOnPageChangeCallback。我们知道ViewPager的addPageChangeListener接收的是一个OnPageChangeListener的接口,而这个接口中有三个方法,当想要监听页面变化时需要重写这三个方法。而ViewPager2的registerOnPageChangeCallback方法接收的是一个叫OnPageChangeCallback的抽象类,因此我们可以选择性的重写需要的方法即可。
- 移除了setPargeMargin方法。
更详细解释移步以下两篇文章
https://zhuanlan.zhihu.com/p/97511079
https://www.jianshu.com/p/924046eae137
网友评论