前言
做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!切記!
祝大家品嚐愉快!
閱讀更多 全職碼農 的文章