这多是全网最好用的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。

源码戳此处

相关文章
相关标签/搜索