close
当前位置: 物联网在线 > 技术文库 > android >

Android 图片轮播控件

Android图片轮播控件 (如果对你有帮助请star哦!)

现在的绝大数app都有banner界面,实现循环播放多个广告图片和手动滑动循环等功能。因为ViewPager并不支持循环翻页, 所以要实现循环还得需要自己去动手,所以其他的轮播控件大多都是重写viewpager,而且代码很臃肿。 我就把项目中的控件剔了出来,希望大家觉得有用。

效果图 模式 图片
指示器模式  

Android 图片轮播控件

 
数字模式  

Android 图片轮播控件

 
数字加标题模式  

Android 图片轮播控件

 
指示器加标题模式  

Android 图片轮播控件

 
联系方式

如果遇到问题和建议欢迎在给我发送邮件,希望让这个工程越来越完善。

Gradle dependencies{ compile 'com.youth.banner:banner:1.1.5' //指定版本 compile 'com.youth.banner:banner:+' //最新版本 }

或者引用本地lib

compile project(':banner') 常量 方法名 描述
Banner.NOT_INDICATOR   不显示指示器和标题  
Banner.CIRCLE_INDICATOR   显示圆形指示器  
Banner.NUM_INDICATOR   显示数字指示器  
Banner.NUM_INDICATOR_TITLE   显示数字指示器和标题  
Banner.CIRCLE_INDICATOR_TITLE   显示圆形指示器和标题  
Banner.LEFT   指示器居左  
Banner.CENTER   指示器居中  
Banner.RIGHT   指示器居右  
方法 方法名 描述
setBannerStyle(int bannerStyle)   设置轮播样式(默认为Banner.NOT_INDICATOR)  
setIndicatorGravity(int type)   设置轮播样式(没有标题默认为右边,有标题时默认左边)  
isAutoPlay(boolean isAutoPlay)   设置是否自动轮播(默认自动)  
setBannerTitle(String[] titles)   设置轮播要显示的标题和图片对应(如果不传默认不显示标题)  
setDelayTime(int time)   设置轮播图片间隔时间(默认为2000)  
setImages(Object[]/List<?> imagesUrl)   设置轮播图片(所有设置参数方法都放在此方法之前执行)  
setImages(Object[]/List<?> imagesUrl,OnLoadImageListener listener)   设置轮播图片,并且自定义图片加载方式  
setOnBannerClickListener(this)   设置点击事件,下标是从1开始  
setOnBannerImageListener(this)   设置图片加载事件,可以自定义图片加载方式  
使用步骤

1.在布局文件中添加Banner,可以设置自定义属性

简单使用

<com.youth.banner.Banner xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/banner" android:layout_width="match_parent" android:layout_height="高度自己设置" />

深度自定义

<com.youth.banner.Banner xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/banner" android:layout_width="match_parent" android:layout_height="高度自己设置" app:indicator_margin="指示器之间的间距" app:indicator_drawable_selected="指示器选中效果" app:indicator_drawable_unselected="指示器未选中效果" app:indicator_height="指示器圆形按钮的高度" app:indicator_width="指示器圆形按钮的宽度" />

2.在Activity或者Fragment中配置Banner

private Banner banner; String[] images= new String[] {"url"}; String[] titles=new String[]{"标题"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); banner = (Banner) findViewById(R.id.banner); /** * 需要什么设置,请看着文档在设置图片和标题前完成设置 */ //可以选择设置图片网址,或者资源文件,默认加载框架Glide //banner.setImages(images); //自定义图片加载框架 banner.setImages(images, new Banner.OnLoadImageListener() { @Override public void OnLoadImage(ImageView view, Object url) { Glide.with(getApplicationContext()).load(url).into(view); } }); } //如果你需要考虑更好的体验,可以这么操作 @Override protected void onStart() { super.onStart(); //在页面可见时开始轮播, //默认的是页面初始化时就开始轮播了,如果你不需要可以再onCreate方法里设置banner.isAutoPlay(false); banner.isAutoPlay(true); } @Override protected void onStop() { super.onStop(); //在页面不可见时停止轮播 banner.isAutoPlay(false); } 更新说明

v1.1.5

感谢<imexception>朋友的反馈

创建指示器初始化时默认的背景的添加,减少延迟等待更新

优化指示器背景更新操作

v1.1.4

更新内容

增加setImages传参可以接收list集合

优化在添加数据和创建指示器时的对象内存回收

v1.1.3

修复了 <2316692710@qq.com> 朋友反馈的bug:

bug① 有标题的时候,向左滑动 ,会数组越界崩溃

bug② 指示器为数字的时候,向左滑动时会有一次显示为0/5

v1.1.2

感谢 <cssxn@qq.com> 朋友提的意见,做出了如下更改:

增加设置轮播图片,并且自定义图片加载方式:setImages(Object[] imagesUrl,OnLoadImageListener listener)

增加设置图片加载事件,可以自定义图片加载方式:setOnBannerImageListener(this)

v1.1.1

感谢 <969482412@qq.com> 朋友提的意见,做出了如下更改:

增加圆形指示器的位置方法setIndicatorGravity(int type)

增加设置是否自动轮播的方法isAutoPlay(boolean isAutoPlay)

v1.1.0

感谢 <997058003@qq.com> 朋友提的意见,做出了如下更改:

修改指示器样式

增加5种轮播样式,更加灵活方便的运用轮播控件,满足项目需求


(责任编辑:ioter)

用户喜欢...

Android Weekly #276 安卓开发周刊 中文版

您是否了解过Android的Lifecycle-Aware库?(android.jlelse.eu) 我们如何了解Lifecycle-Aware库代码? Nishant Srivastava展示了可以跟踪活动或Lifecycle-Aware的Lifecycle Arch组件的片段,并相应地调整其行为。 为Mos...


Android Weekly #275 安卓开发周刊 中文版

MapMe — Android地图适配器 (medium.com) Josh Burton介绍MapMe,是一个用Kotlin编写的Android库,可以将适配器模式带到地图上。 赞助 CloudRail - 连接到API 10x更快 (cloudrail.com) 当我们用单一的界面连接到所...


使用Android Studio开发可独立运行(runnable)混淆过的Jar程序

之前开发Java程序一直都是使用Eclipse 开发Jar程序,现在开发基本上都已经弃用Eclipse了,但是有时偶尔开发个小的Jar程序,还要切换回去好麻烦,刚好前几天有人问几个相关的问题,就顺便整...


Android Weekly #274 安卓开发周刊 中文版

探索Android Oreo上的别后执行限制(medium.com) 在这篇文章中,Joe Birch解释了关于Android Oreo在后台运行服务的变化。 non-Time领主的time – 第5部分 (blog.stylingandroid.com) Mark Allison继续分析JSR 310 date和...


Android Weekly #273 安卓开发周刊 中文版

开源你的Android代码(android.jlelse.eu) 通过您的开源Android代码,您将(希望地)为Android社区提供有价值的代码,收到建设性的反馈,并与您最初建立的内容进行协作从而使您的代码变得更好。这...


Android Weekly #272 安卓开发周刊 中文版

Android Dev 101:每个初学者都应该知道的一些做法() 看一些初学者或媒介等级开发人员(不要错过任何人)应该知道的一些做法,以便更好地摆脱Android框架。 99.9% crash free sessions (medium.com) Chr...


Android Weekly #271 安卓开发周刊 中文版

依赖注入检查(medium.com) 在本文中,MihályNagy引入了依赖注入检查,一种开源注释处理器,可帮助您解决一些出现在所有JSR 330 DI库中常见的问题。 使用Android Studio插件提高效率 (blog.mindorks.com...


Android Weekly #270 安卓开发周刊 中文版

带有RxJava2的SOLID Android分析 (medium.com) 在这篇文章中,Aris Papadopoulos将解释如何正确创建一个分析系统,同时遵循SOLID原则,并使用RxJava2来解决问题。 (blog.stylingandroid.com) Java中的编程时间很难...


Android内存泄漏思考

Android内存泄漏是一个经常要遇到的问题,程序在内存泄漏的时候很容易导致OOM的发生。那么如何查找内存泄漏和避免内存泄漏就是需要知晓的一个问题,首先我们需要知道一些基础知识。...


Android Weekly #269 安卓开发周刊 中文版

在Google上快速提出操作 () Wolfram Rittmeyer分享了开始在Google上快速创建操作所需的所有信息(为了家庭与助理)。 RxJava中的错误处理(rongi.github.io) 一旦开始编写RxJava代码,你就会意识到有些事...