Android-Banner
Banner1.4.10
github地址: https://github.com/youth5201314/banner/tree/release-1.4.10
引入Banner1
在build.gradle的dependencies中加入
1 | dependencies{ |
如果是本地arr文件文件
如何引入arr文件
使用Banner1
在布局中添加
在布局中插入Banner控件
1 |
|
创建图片加载器
重写图片加载器,继承ImageLoader类
MysetImageLoader继承ImageLoader
1 | package com.a.practice; |
调用图片加载器
在Activity中调用图片加载器
1.初始化Banner控件,创建Banner所需的List集合
1 | private Banner banner;//初始化banner控件 |
1 | urls.add("https://pics2.baidu.com/feed/a8014c086e061d95bae4a9350d7a45d763d9cab6.png?token=a817a8157f425a71e0730e89fba08644&s=EC3807D166031CF67E2D059B0300E012"); |
2.调用图片加载器
1 | // 设置图片加载器 |
3.设置banner的其它一些属性
banner.start()一定要放在最后
1 | banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);//设置banner的指示器样式 |
4.记得在清单文件中添加网络权限
1 | <uses-permission android:name="android.permission.INTERNET" /> |
默认图片加载器
如果只想实现图片轮播功能,那大可不必继承,直接调用ImageLoader
1 | // 设置图片加载器 |
效果展示

其它相关设置
常量
| 常量名称 | 描述 | 所属方法 |
|---|---|---|
| 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方法调用)
| 常量类名 |
|---|
| 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的布局文件复制出来进行修改) |
Banner2.0
github地址:https://github.com/youth5201314/banner
在gradle文件中引入
注意,使用了阿里云maven,所以下面引入的banner是在阿里云maven中的地址
1 | implementation 'io.github.youth5201314:banner:2.2.2'//Banner |
使用Banner2
插入Banner控件
在布局中插入Banner控件
1 |
|
创建适配器
创建MyBannerAdapter类继承BannerAdapter,BannerAdapter定义了一个泛型类,并强制进行ViewHolder优化,泛型类的类型决定了适配器的构造器中参数的类型
1 | import android.view.View; |
配置适配器
使用了Glide动态设置图片
1 | import android.content.Context; |
调用适配器
具体调用请看setBanner()方法
1 | import androidx.appcompat.app.AppCompatActivity; |
默认Banner适配器
如果仅想实现简单的图片轮播,就使用默认的Banner适配器,具体改动请看setBanner()方法
1 | import androidx.appcompat.app.AppCompatActivity; |
网络权限
不要忘记在清单文件中添加网络权限
1 | <!-- 网络权限 --> |
效果展示

Banner2方法
| 方法名 | 返回类型 | 描述 |
|---|---|---|
| getAdapter() | extends BannerAdapter | 获取你设置的BannerAdapter |
| getViewPager2() | ViewPager2 | 获取ViewPager2 |
| getIndicator() | Indicator | 获取你设置的指示器(没有设置直接获取会抛异常哦) |
| getIndicatorConfig() | IndicatorConfig | 获取你设置的指示器配置信息(没有设置直接获取会抛异常哦) |
| getRealCount() | int | 返回banner真实总数 |
| setUserInputEnabled(boolean) | this | 禁止手动滑动Banner;true 允许,false 禁止 |
| setDatas(List) | this | 重新设置banner数据 |
| isAutoLoop(boolean) | this | 是否允许自动轮播 |
| setLoopTime(long) | this | 设置轮播间隔时间(默认3000毫秒) |
| setScrollTime(long) | this | 设置轮播滑动的时间(默认800毫秒) |
| start() | this | 开始轮播(主要配合生命周期使用),或者你手动暂停再次启动 |
| stop() | this | 停止轮播(主要配合生命周期使用),或者你需要手动暂停 |
| setAdapter(T extends BannerAdapter) | this | 设置banner的适配器 |
| setAdapter(T extends BannerAdapter,boolean) | this | 设置banner的适配器,是否支持无限循环 |
| setOrientation(@Orientation) | this | 设置banner轮播方向(垂直or水平) |
| setOnBannerListener(this) | this | 设置点击事件,下标是从0开始 |
| addOnPageChangeListener(this) | this | 添加viewpager2的滑动监听 |
| setPageTransformer(PageTransformer) | this | 设置viewpager的切换效果 |
| addPageTransformer(PageTransformer) | this | 添加viewpager的切换效果(可以设置多个) |
| setIndicator(Indicator) | this | 设置banner轮播指示器(提供有base和接口,可以自定义) |
| setIndicator(Indicator,boolean) | this | 设置指示器(传false代表不将指示器添加到banner上,配合布局文件,可以自我发挥) |
| setIndicatorSelectedColor(@ColorInt) | this | 设置指示器选中颜色 |
| setIndicatorSelectedColorRes(@ColorRes) | this | 设置指示器选中颜色 |
| setIndicatorNormalColor(@ColorInt) | this | 设置指示器默认颜色 |
| setIndicatorNormalColorRes(@ColorRes) | this | 设置指示器默认颜色 |
| setIndicatorGravity(@IndicatorConfig.Direction) | this | 设置指示器位置(左,中,右) |
| setIndicatorSpace(int) | this | 设置指示器之间的间距 |
| setIndicatorMargins(IndicatorConfig.Margins) | this | 设置指示器的Margins |
| setIndicatorWidth(int,int) | this | 设置指示器选中和未选中的宽度,直接影响绘制指示器的大小 |
| setIndicatorNormalWidth(int) | this | 设置指示器未选中的宽度 |
| setIndicatorSelectedWidth(int) | this | 设置指示器选中的宽度 |
| setIndicatorRadius(int) | this | 设置指示器圆角,不要圆角可以设置为0 |
| setIndicatorHeight(int) | this | 设置指示器高度 |
| setBannerRound(float) | this | 设置banner圆角(还有一种setBannerRound2方法,需要5.0以上) |
| setBannerGalleryEffect(int,int,float) | this | 画廊效果 |
| setBannerGalleryMZ(int,float) | this | 魅族效果 |
| setStartPosition(int) | this | 设置开始的位置 (需要在setAdapter或者setDatas之前调用才有效哦) |
| setIndicatorPageChange() | this | 设置指示器改变监听 (一般是为了配合数据操作使用,看情况自己发挥) |
| setCurrentItem() | this | 设置当前位置,和原生使用效果一样 |
| addBannerLifecycleObserver() | this | 给banner添加生命周期观察者,内部自动管理banner的生命周期 |
Banner2属性
| Attributes | format | describe |
|---|---|---|
| banner_loop_time | integer | 轮播间隔时间,默认3000 |
| banner_auto_loop | boolean | 是否自动轮播,默认true |
| banner_infinite_loop | boolean | 是否支持无限循环(即首尾直接过渡),默认true |
| banner_orientation | enum | 轮播方向:horizontal(默认) or vertical |
| banner_radius | dimension | banner圆角半径,默认0(不绘制圆角) |
| banner_indicator_normal_width | dimension | 指示器默认的宽度,默认5dp (对RoundLinesIndicator无效) |
| banner_indicator_selected_width | dimension | 指示器选中的宽度,默认7dp |
| banner_indicator_normal_color | color | 指示器默认颜色,默认0x88ffffff |
| banner_indicator_selected_color | color | 指示器选中颜色,默认0x88000000 |
| banner_indicator_space | dimension | 指示器之间的间距,默认5dp (对RoundLinesIndicator无效) |
| banner_indicator_gravity | dimension | 指示器位置,默认center |
| banner_indicator_margin | dimension | 指示器的margin,默认5dp,不能和下面的同时使用 |
| banner_indicator_marginLeft | dimension | 指示器左边的margin |
| banner_indicator_marginTop | dimension | 指示器上边的margin |
| banner_indicator_marginRight | dimension | 指示器右边的margin |
| banner_indicator_marginBottom | dimension | 指示器下边的margin |
| banner_indicator_height | dimension | 指示器高度(对CircleIndicator无效) |
| banner_indicator_radius | dimension | 指示器圆角(对CircleIndicator无效) |
| banner_round_top_left | boolean | 设置要绘制的banner圆角方向(如果都不设置默认全部) |
| banner_round_top_right | boolean | 设置要绘制的banner圆角方向(如果都不设置默认全部) |
| banner_round_bottom_left | boolean | 设置要绘制的banner圆角方向(如果都不设置默认全部) |
| banner_round_bottom_right | boolean | 设置要绘制的banner圆角方向(如果都不设置默认全部) |