转载地址:https://github.com/youth5201314/banner
参考视频:http://ke.atguigu.com/course/150
Android图片轮播控件
新框架发布,欢迎大家Star
现在的绝大数app都有banner界面,实现循环播放多个广告图片和手动滑动循环等功能。因为ViewPager并不支持循环翻页, 所以要实现循环还得需要自己去动手,我就把项目中的控件剔了出来,希望大家觉得有用。目前框架可以进行不同样式、不同动画设置, 以及完善的api方法能满足大部分的需求了。
效果图
模式 | 图片 |
---|---|
指示器模式 | |
数字模式 | |
数字加标题模式 | |
指示器加标题模式 垂直显示 | |
指示器加标题模式 水平显示 |
联系方式
- 如果遇到问题和建议欢迎在给我发送邮件或者加入qq群,希望让这个工程越来越完善。
- 群满可以加群2:594813900
常量
常量名称 | 描述 | 所属方法 |
---|---|---|
BannerConfig.NOT_INDICATOR | 不显示指示器和标题 | setBannerStyle |
BannerConfig.CIRCLE_INDICATOR | 显示圆形指示器 | setBannerStyle |
BannerConfig.NUM_INDICATOR | 显示数字指示器 | setBannerStyle |
BannerConfig.NUM_INDICATOR_TITLE | 显示数字指示器和标题 | setBannerStyle |
BannerConfig.CIRCLE_INDICATOR_TITLE | 显示圆形指示器和标题(垂直显示) | setBannerStyle |
BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE | 显示圆形指示器和标题(水平显示) | setBannerStyle |
BannerConfig.LEFT | 指示器居左 | setIndicatorGravity |
BannerConfig.CENTER | 指示器居中 | setIndicatorGravity |
BannerConfig.RIGHT | 指示器居右 | setIndicatorGravity |
动画常量类(setBannerAnimation方法调用)
ViewPagerTransforms 动画时集成的第三方库,可能有兼容问题导致position位置不准确,你可以选择参考动画然后自定义动画
常量类名 |
---|
Transformer.Default |
Transformer.Accordion |
Transformer.BackgroundToForeground |
Transformer.ForegroundToBackground |
Transformer.CubeIn |
Transformer.CubeOut |
Transformer.DepthPage |
Transformer.FlipHorizontal |
Transformer.FlipVertical |
Transformer.RotateDown |
Transformer.RotateUp |
Transformer.ScaleInOut |
Transformer.Stack |
Transformer.Tablet |
Transformer.ZoomIn |
Transformer.ZoomOut |
Transformer.ZoomOutSlide |
方法
方法名 | 描述 | 版本限制 |
---|---|---|
setBannerStyle(int bannerStyle) | 设置轮播样式(默认为CIRCLE_INDICATOR) | 无 |
setIndicatorGravity(int type) | 设置指示器位置(没有标题默认为右边,有标题时默认左边) | 无 |
isAutoPlay(boolean isAutoPlay) | 设置是否自动轮播(默认自动) | 无 |
setViewPagerIsScroll(boolean isScroll) | 设置是否允许手动滑动轮播图(默认true) | 1.4.5开始 |
update(List<?> imageUrls,List titles) | 更新图片和标题 | 1.4.5开始 |
update(List<?> imageUrls) | 更新图片 | 1.4.5开始 |
startAutoPlay() | 开始轮播 | 1.4开始,此方法只作用于banner加载完毕-->需要在start()后执行 |
stopAutoPlay() | 结束轮播 | 1.4开始,此方法只作用于banner加载完毕-->需要在start()后执行 |
start() | 开始进行banner渲染 | 1.4开始 |
setOffscreenPageLimit(int limit) | 同viewpager的方法作用一样 | 1.4.2开始 |
setBannerTitle(String[] titles) | 设置轮播要显示的标题和图片对应(如果不传默认不显示标题) | 1.3.3结束 |
setBannerTitleList(List titles) | 设置轮播要显示的标题和图片对应(如果不传默认不显示标题) | 1.3.3结束 |
setBannerTitles(List titles) | 设置轮播要显示的标题和图片对应(如果不传默认不显示标题) | 1.4开始 |
setDelayTime(int time) | 设置轮播图片间隔时间(单位毫秒,默认为2000) | 无 |
setImages(Object[]/List<?> imagesUrl) | 设置轮播图片(所有设置参数方法都放在此方法之前执行) | 1.4后去掉数组传参 |
setImages(Object[]/List<?> imagesUrl,OnLoadImageListener listener) | 设置轮播图片,并且自定义图片加载方式 | 1.3.3结束 |
setOnBannerClickListener(this) | 设置点击事件,下标是从1开始 | 无(1.4.9以后废弃了) |
setOnBannerListener(this) | 设置点击事件,下标是从0开始 | 1.4.9以后 |
setOnLoadImageListener(this) | 设置图片加载事件,可以自定义图片加载方式 | 1.3.3结束 |
setImageLoader(Object implements ImageLoader) | 设置图片加载器 | 1.4开始 |
setOnPageChangeListener(this) | 设置viewpager的滑动监听 | 无 |
setBannerAnimation(Class<? extends PageTransformer> transformer) | 设置viewpager的默认动画,传值见动画表 | 无 |
setPageTransformer(boolean reverseDrawingOrder, ViewPager.PageTransformer transformer) | 设置viewpager的自定义动画 | 无 |
Attributes属性(banner布局文件中调用)
Attributes | forma | describe |
---|---|---|
delay_time | integer | 轮播间隔时间,默认2000 |
scroll_time | integer | 轮播滑动执行时间,默认800 |
is_auto_play | boolean | 是否自动轮播,默认true |
title_background | color | reference |
title_textcolor | color | 标题字体颜色 |
title_textsize | dimension | 标题字体大小 |
title_height | dimension | 标题栏高度 |
indicator_width | dimension | 指示器圆形按钮的宽度 |
indicator_height | dimension | 指示器圆形按钮的高度 |
indicator_margin | dimension | 指示器之间的间距 |
indicator_drawable_selected | reference | 指示器选中效果 |
indicator_drawable_unselected | reference | 指示器未选中效果 |
image_scale_type | enum | 和imageview的ScaleType作用一样 |
banner_default_image | reference | 当banner数据为空是显示的默认图片 |
banner_layout | reference | 自定义banner布局文件,但是必须保证id的名称一样(你可以将banner的布局文件复制出来进行修改) |
[ 点击查看 ViewPager的PageTransformer用法 ]
使用步骤
Step 1.依赖banner
Gradle
或者引用本地lib
Step 2.添加权限到你的 AndroidManifest.xml
Step 3.在布局文件中添加Banner,可以设置自定义属性
!!!此步骤可以省略,直接在Activity或者Fragment中new Banner();
Step 4.重写图片加载器
Step 5.在Activity或者Fragment中配置Banner
Step 6.(可选)增加体验
混淆代码
常见问题
-
问:eclipse怎么使用banner?
- 答:
在历史版本列表中下载你想要版本的aar包提取最新资源/也可以自己把工程转成eclipse的
eclipse的集成demo群文件里有共享!
- 答:
-
问:怎么显示的一片空白?
- 答:
1、没有添加网络权限
2、检查图片链接是否能打开。
- 答:
-
问:怎么加载其他图片资源(资源文件、文件、Uri、assets、raw、ContentProvider、sd卡资源)?
- 答:列如!如果你使用的是glide,那么可以如下操作,其他图片图片加载框架可能有不同
- 答:列如!如果你使用的是glide,那么可以如下操作,其他图片图片加载框架可能有不同
-
问:设置banner指示器颜色怎么变成方的了?
- 答:首先我先要说很多软件的指示器也是矩形的,然后banner的指示器可以设置color、资源图片、drawable文件夹自定义xml, 所以形状你自己可以根据需求定义哦!
-
问:为什么banner的点击事件没有反应,需要下一次轮播才行?
- 答:请将点击事件放在start方法之前执行,详情可以看demo。