前言
做android开发的同学,基本上都会用到ViewPager,比如Banner、TabPage等常用场景。
但是,也发生过很多不愉快。
比如:
- ViewPagerAdapter的刷新问题(由于销毁导致)
- ViewPager子元素少于3的bug
- 无线循环空白问题
- 动态修改子元素
总之,如果要用ViewPager去实现很多产品的需求,一不小心就调入坑中。
抛弃以前,重新出发
技术需要不断的更新完善,我们用的库也是这样,有好的库当然不放过。
随着kotlin升级为android官方开发语言,google也基于kotlin开发了jetpack这个工具集,其中androidx目前就被大量使用,当然包含了今天的主角:ViewPager2。
从此,你可以抛弃ViewPager了,尝尝新鲜出炉的ViewPager2吧!我尝了下,的确很香,哈哈!!
有多香?
首先看下有啥用?
官方回答:解决了大部分ViewPager的痛点
- 支持动态的View和Fragment
- 从右到左布局
- 垂直布局
以前,这些功能都得自己实现,现在,直接就提供了,能不香吗?
ViewPager2还是基于ViewGroup实现,但是adapter使用了RecyclerView的Adapter,天生强大,使用无阻碍。
用起来
- 安装
dependencies {
implementation "androidx.viewpager2:viewpager2:1.0.0-alpha02"
}
最新发布Notes:https://developer.android.google.cn/jetpack/androidx/releases/viewpager2
参考文档:
https://developer.android.google.cn/reference/androidx/viewpager2/widget/package-summary.html
https://developer.android.google.cn/reference/androidx/viewpager2/adapter/package-summary
从API设计上看,简化了很多
- 常用功能
- 方向:设置竖向:setOrientation(ViewPager2.ORIENTATION_VERTICAL),默认横向
- 适配器:可以使用RecyclerView.Adapter、FragmentStateAdapter
- TabLayout配合使用:再也不需要setupWithViewPager了,曾经这个配合Fragment引起了销毁问题,后面google修复了
上图就可以看出来配合TabLayout使用变得很简单了。
最后
目前,ViewPager2还没有正式发布,但是不妨尝试用起来,感受下google爸爸的温暖也是不错的!!
最后,附上官方案例:
https://github.com/googlesamples/android-viewpager2
提供了:
- 使用View作为Page集合
- 使用Fragment作为Page集合
- 使用可变集合View作为Page集合
- 使用可变集合Fragment作为Page集合
- 与TabLayout结合
不过,要用这个库,必须要开启androidx!切记!
祝大家品尝愉快!
閱讀更多 全職碼農 的文章