自上篇文章《打造一个丝滑般自动轮播无限循环Android库》发布之后BannerViewPager又迎来了众多功能更新(还不了解BannerViewPager的同学可以戳上边链接查看)。现在的BannerViewPager已经具有非常丰富的API接口,功能十分强大。它几乎可以支持市面上所有的Banner样式。大家可以先下载Apk体验,效果会比看GIF好很多哦!demo apk存放在github上,下载速度可能会比较慢。

点击或扫描二维码下载apk


接下来一起来看下BannerViewPager有哪些新增功能吧。

一.新增setPageStyle(int)

通过setPageStyle(int)一行代码开启一屏三页模式,一屏三页模式下目前有三种样式,分别如下图所示:

MULTI_PAGE MULTI_PAGE_SCALE MULTI_PAGE_OVERLAP

点击查看PageStyle示例代码

二.新增setIndicatorStyle(int)

同样通过setIndicatorStyle(int)一行代码来改变indicator的样式,目前BannerViewPager中内置CIRCLE和DASH两种样式。而BannerViewPager的强大之处在于当内置样式不满足需求的情况下可以通过setIndicatorView(IIndicator)来设置自定义的指示器(如图:自定义),自定义指示器通过自定义View可实现任意的样式哦!。

CIRCLE DASH 自定义

点击查看IndicatorStyle示例代码

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

指示器位于Banner下方

上图中将Indicator放在了Banner的下方。其实Indicator是支持摆放在任意位置的。之所以能做到任意摆放位置是因为自定义指示器替换了内置的IndicatorView,也就是说此时的IndicatorView已经脱离了BannerViewPager,也就理所当然的可以放在任意位置了。接下来通过代码来看下如何实现:

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.BannerViewPagerandroid: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.CircleIndicatorViewandroid: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)来隐藏内部的指示器

四.其它新增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。

源码戳此处

这可能是全网最好用的Banner轮播库相关推荐

  1. php轮播代码生成器,最简单的Banner轮播左右切换效果代码及实现思路(附带源码)...

    Banner轮播左右切换效果代码及实现思路,支持左右切换图片,支持点击选择对应的图片.实现思路通过定时器去自动选图和点击触发事件去选择图片.而图片的选择是通过计算对应图片的宽度和第几张图的距离进行动画 ...

  2. 【Flutter】Banner 轮播组件 ( flutter_swiper 插件 | Swiper 组件 )

    文章目录 一.flutter_swiper 插件 二.Swiper 组件使用 三.完整代码示例 四.相关资源 一.flutter_swiper 插件 到 https://pub.dev/package ...

  3. Mint-UI 移动首页开发 - header导航、banner轮播图

    Mint-UI 移动首页style排版问题:header导航.banner轮播图.footer底部版权··· ··· 资源预览: 中文 2.x官方文档(含演示地址): 文档首页 中文 2.x官方文档( ...

  4. html中制作banner,css banner轮播图怎么做?

    css banner轮播图怎么做?下面本篇文章给大家简单介绍一下.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 初步了解动画效果吧.轮播图我一直以为靠jquery插件完成的,突然发 ...

  5. 谷粒学院-首页数据显示-banner轮播图微服务搭建

    新建banner轮播图微服务 1.在service模块下创建子模块service_cms 2.配置application.properties # 服务端口 server.port=8004 # 服务 ...

  6. AxureRP实战(三)Banner轮播图交互(进阶篇)

    前一篇<AxureRP实战(二)Banner轮播图交互(基础篇)>用淘宝的首页banner案例讲解了如何运用动态面板实现banner轮播图的切换,有了基本交互功能.但是,交互效果还有些欠缺 ...

  7. banner轮播图切换插件

    下载地址 banner轮播图切换插件,基于jquery实现的图片轮播效果. dd:

  8. php课程banner,如何利用react 实现banner轮播效果

    最近在看react , jsx的语法一开始看起来确实不习惯,但是确实比较灵活 运行效果: import React from 'react'; // import ShadowDOM from 're ...

  9. 游戏陪玩源码开发,仿某看书app首页Banner轮播+背景渐变

    在游戏陪玩源码开发时,会设计到很多UI界面设计,其中首页Banner轮播就很重要,最近发现一个比较有意思的效果图,于是想自己操作实践下.效果图如下: 作者实现的效果: 1. 游戏陪玩源码开发,仿某看书 ...

最新文章

  1. matlab中normfit,MATLAB中如何得到一组统计数据的分布特征
  2. 【solr专题之一】Solr快速入门
  3. RabbitMQ 入门:2. Exchange 和 Queue
  4. sql server 迁移 mysql_【转】sql server迁移到mysql
  5. Spring安装与入门
  6. python `__bool__`
  7. 物联网技术或颠覆传统高等教育
  8. python 招聘 少_Python招聘需求猛增123%!学完Python工资多少?
  9. [原创]java导出excel
  10. Android 解决qq分享后返回程序出现的Bug
  11. 用eclipse无法打开html里用绝对路径添加的图片但是在外面可以打开的解决方法
  12. 跨境电商如何服务客户
  13. Git官网下载windows版本慢的问题
  14. 真实的感情---可是你没有
  15. 实践:手把手教你写滴滴打车 APP
  16. MPLS V*N OptionC1 RR
  17. Stronger Data Poisoning Attacks Break Data Sanitization Defenses
  18. 其实袁萌还是挺可爱的
  19. 获得PMP证书之后该如何获取续证PDU?
  20. 【SVG.js】简介

热门文章

  1. 算法--水题-DNA合成
  2. android 微信登录与分享集成
  3. GitHub贡献全球第5,超15,000名软件工程师,后深度学习时代英特尔如何「软硬兼施」
  4. 自定义ImageView系列 - 区域截图(下)
  5. 深圳宏旺半导体宣布以“ICMAX”自主品牌正式进军中国半导体存储市场
  6. failed to load dx.jar
  7. kubelet not ready 问题排查
  8. Trafficmointor状态栏实时显示网速的小软件
  9. Echarts雷达图1.0
  10. 5、类型转换构造函数