去年8月份,我在Github開源了一個無限循環的輪播圖庫---BannerViewPager(以下簡稱BVP)。時至今日,一年多的時間過去了,BVP在大家的支持下已經在GitHub上收穫了1.9k的Star。前段時間,我將BVP遷移到了Gitee,也很有幸受到了Gitee官方的認可,並得到了Gitee官方的推薦,短時間內在Gitee上收穫了近120個Star。當然,能夠卻得這麼大的成績離不開大家的支持。
BVP最初的目標是做一個全網最好用的輪播圖庫,讓大家用盡可能少的代碼實現任意想要的效果。現在回頭看看,那些吹過的牛似乎也在慢慢實現。今年四月份,BVP迎來了3.0版本的重大更新---從ViewPager遷移到了ViewPager2。在3.0版本中BVP的API向ViewPager2對齊,並且大幅優化了代碼結構。使得BVP在使用上大幅簡化。
而在近期的3.4.0版本中,BVP又進行了一次重要更新。這次更新使得開發者無需開發者無需再編寫ViewHolder類,這一優化讓BVP的使用進一步簡化。那麼讓我們來看一下使用最新版本的BVP實現一個無限循環輪播圖究竟有多簡單吧。
1.gradle中添加依賴
在項目根目錄的build.gradle中添加如下配置:
allprojects {
repositories {
...
maven { url 'https://www.jitpack.io' }
}
}
複製代碼
然後在app目錄下的gradle中添加依賴:
implementation 'com.github.zhpanvip:BannerViewPager:3.4.0'
複製代碼
2.繼承BaseBannerAdapter,並重寫相關方法
重寫getLayoutId方法,並在這個方法中返回Item佈局。然後重寫bindData方法,在這個方法中通過BaseViewHolder進行數據綁定。
class SimpleAdapter : BaseBannerAdapter<CustomBean>() {
override fun bindData(holder: BaseViewHolder<CustomBean>, data: CustomBean?, position: Int, pageSize: Int) {
holder.setImageResource(R.id.banner_image, data!!.imageRes)
}
override fun getLayoutId(viewType: Int): Int {
return R.layout.item_custom_view;
}
}
複製代碼
3.在Activity中構建BannerViewPager
private lateinit var mViewPager: BannerViewPager<CustomBean>
...
private fun setupViewPager() {
mViewPager = findViewById(R.id.banner_view)
mViewPager.apply {
adapter = SimpleAdapter()
setLifecycleRegistry(lifecycle)
}.create(getPicList(4))
}
複製代碼
OK!到這裏一個頁面自動切換、無限循環且帶有指示器的輪播圖就完成了!沒錯,就是這麼簡單,就是這麼不講武德!!還是運行起來看下效果吧。
有同學可能説,這個效果太難看了。我們產品説想要一個炫酷一點的。沒關係,這是一個加參(jiā)數(qián)就能解決的問題。看代碼:
mViewPager.apply {
adapter = SimpleAdapter()
setLifecycleRegistry(lifecycle)
setScrollDuration(800)
setRevealWidth(resources.getDimensionPixelOffset(R.dimen.dp_15))
setPageStyle(PageStyle.MULTI_PAGE_OVERLAP)
setIndicatorSliderColor(getColor(R.color.red_normal_color), getColor(R.color.red_checked_color))
setIndicatorSliderRadius(resources.getDimensionPixelOffset(R.dimen.dp_4), resources.getDimensionPixelOffset(R.dimen.dp_6))
setIndicatorSlideMode(IndicatorSlideMode.SCALE)
}.create(getPicList(4))
複製代碼
運行起來看下效果:
什麼?產品小姐姐還不滿意?沒關係,現在就把BVP的文檔摔到她臉上,讓她 隨!便!挑!包她滿意。
最後歡迎大家到Github關注BVP,你的Star是給我最大的支持!
Github連接:BannerViewPager
Gitee連接 : BannerViewPager