這多是全網最好用的Banner輪播庫

自上篇文章《打造一個絲滑般自動輪播無限循環Android庫》發佈以後BannerViewPager又迎來了衆多功能更新(還不瞭解BannerViewPager的同窗能夠戳上邊連接查看)。如今的BannerViewPager已經具備很是豐富的API接口,功能十分強大。它幾乎能夠支持市面上全部的Banner樣式。你們能夠先下載Apk體驗,效果會比看GIF好不少哦!demo apk存放在github上,下載速度可能會比較慢。java

點擊或掃描二維碼下載apk

掃碼下載apk
接下來一塊兒來看下BannerViewPager有哪些新增功能吧。

一.新增setPageStyle(int)

經過setPageStyle(int)一行代碼開啓一屏三頁模式,一屏三頁模式下目前有三種樣式,分別以下圖所示:android

MULTI_PAGE MULTI_PAGE_SCALE MULTI_PAGE_OVERLAP
MULTI_PAGE
MULTI_PAGE_SCALE
MULTI_PAGE_OVERLAP

點擊查看PageStyle示例代碼git

二.新增setIndicatorStyle(int)

一樣經過setIndicatorStyle(int)一行代碼來改變indicator的樣式,目前BannerViewPager中內置CIRCLE和DASH兩種樣式。而BannerViewPager的強大之處在於當內置樣式不知足需求的狀況下能夠經過setIndicatorView(IIndicator)來設置自定義的指示器(如圖:自定義),自定義指示器經過自定義View可實現任意的樣式哦!。github

CIRCLE DASH 自定義
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

點擊查看IndicatorStyle示例代碼bash

三.支持Indicator位置任意擺放。

指示器位於Banner下方
指示器位於Banner下方

上圖中將Indicator放在了Banner的下方。其實Indicator是支持擺放在任意位置的。之因此能作到任意擺放位置是由於自定義指示器替換了內置的IndicatorView,也就是說此時的IndicatorView已經脫離了BannerViewPager,也就理所固然的能夠放在任意位置了。接下來經過代碼來看下如何實現:app

1.Xml佈局文件以下

<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>
複製代碼

2.經過setIndicatorView(IIndicator)替換指示器

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

四.其它新增API

1.setCurrentItem(int item)與getCurrentItem()

在2.3.5版本中新添加的兩個API。性能

setCurrentItem(int item)切換到指定的頁面。優化

getCurrentItem()獲取當前頁面的position。

2.setPageMargin(int pageMargin)

在2.4.0版本中新添加了setPageMargin(int pageMargin),能夠設置BannerViewPager頁面的間距。

3.setIndicatorMargin(int left, int top, int right, int bottom)

2.4.1版中中新增了設置setIndicatorMargin(int left, int top, int right, int bottom)的接口。便於調節IndicatorView距離BannerViewPager的距離。

4. setOnPageChangeListener(OnPageChangeListener l)

2.4.3(該版本目前暫未發佈)版本新增對於頁面狀態的監聽,能夠方便在切面切換後作些操做,好比切換到最後一頁後顯示出一個Buttong。

5.disableTouchScroll(boolean disableTouchScroll)

一樣是在2.4.3(該版本目前暫未發佈)版本中新增disableTouchScroll,用來禁止手指滑動切換頁面。

五.將來計劃

將來版本中將針對目前存在的問題進行優化更新,並會着重提高BannerViewPager性能。文章末尾放源碼連接,歡迎start。

源碼戳此處

相關文章
相關標籤/搜索