自上篇文章《打造一個絲滑般自動輪播無限循環Android庫》發佈以後BannerViewPager又迎來了衆多功能更新(還不瞭解BannerViewPager的同窗能夠戳上邊連接查看)。如今的BannerViewPager已經具備很是豐富的API接口,功能十分強大。它幾乎能夠支持市面上全部的Banner樣式。你們能夠先下載Apk體驗,效果會比看GIF好不少哦!demo apk存放在github上,下載速度可能會比較慢。java
經過setPageStyle(int)一行代碼開啓一屏三頁模式,一屏三頁模式下目前有三種樣式,分別以下圖所示:android
MULTI_PAGE | MULTI_PAGE_SCALE | MULTI_PAGE_OVERLAP |
---|---|---|
一樣經過setIndicatorStyle(int)一行代碼來改變indicator的樣式,目前BannerViewPager中內置CIRCLE和DASH兩種樣式。而BannerViewPager的強大之處在於當內置樣式不知足需求的狀況下能夠經過setIndicatorView(IIndicator)來設置自定義的指示器(如圖:自定義),自定義指示器經過自定義View可實現任意的樣式哦!。github
CIRCLE | DASH | 自定義 |
---|---|---|
指示器位於Banner下方 |
---|
上圖中將Indicator放在了Banner的下方。其實Indicator是支持擺放在任意位置的。之因此能作到任意擺放位置是由於自定義指示器替換了內置的IndicatorView,也就是說此時的IndicatorView已經脫離了BannerViewPager,也就理所固然的能夠放在任意位置了。接下來經過代碼來看下如何實現:app
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.zhpan.bannerview.BannerViewPager
android:id="@+id/banner_view"
android:layout_width="match_parent"
android:layout_height="180dp"
android:layout_marginTop="20dp"
app:bvp_page_style="multi_page" />
<com.zhpan.bannerview.indicator.CircleIndicatorView
android:id="@+id/indicator_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/banner_view"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp" />
</RelativeLayout>
複製代碼
CircleIndicatorView indicatorView = findViewById(R.id.indicator_view);
mViewPager.setPageStyle(PageStyle.MULTI_PAGE_OVERLAP)
.setIndicatorVisibility(View.GONE)
.setIndicatorView(indicatorView)
.setIndicatorColor(Color.parseColor("#888888"),
Color.parseColor("#118EEA"))
.setPageMargin(BannerUtils.dp2px(10))
.setRevealWidth(BannerUtils.dp2px(10))
.setHolderCreator(() -> new ImageResourceViewHolder(BannerUtils.dp2px(5)))
.create(mDrawableList);
複製代碼
注意下面兩行代碼佈局
mViewPager.setIndicatorVisibility(View.GONE)
.setIndicatorView(indicatorView)
複製代碼
能夠看到經過setIndicatorVisibility(View.GONE)隱藏了內部IndicatorView,在實際開發中是不須要添加這行代碼的。由於在demo中切換不一樣的PageStyle時影響了BannerViewPager內部IndicatorView的建立,因此須要手動隱藏。但在實際開發中沒必要再調用setIndicatorVisibility(View.GONE)來隱藏內部的指示器。post
在2.3.5版本中新添加的兩個API。性能
setCurrentItem(int item)切換到指定的頁面。優化
getCurrentItem()獲取當前頁面的position。
在2.4.0版本中新添加了setPageMargin(int pageMargin),能夠設置BannerViewPager頁面的間距。
2.4.1版中中新增了設置setIndicatorMargin(int left, int top, int right, int bottom)的接口。便於調節IndicatorView距離BannerViewPager的距離。
2.4.3(該版本目前暫未發佈)版本新增對於頁面狀態的監聽,能夠方便在切面切換後作些操做,好比切換到最後一頁後顯示出一個Buttong。
一樣是在2.4.3(該版本目前暫未發佈)版本中新增disableTouchScroll,用來禁止手指滑動切換頁面。
將來版本中將針對目前存在的問題進行優化更新,並會着重提高BannerViewPager性能。文章末尾放源碼連接,歡迎start。