现在的绝大数App都有banner界面,也就是轮播控件,主要是实现循环播放多个广告图片和手动滑动循环等功能。因为ViewPager并不支持循环翻页,所以要实现循环还得需要自己去动手,我为了方便就开源了一个轮播控件,希望大家觉得有用。详细内容可进入github上查看。
Gradle
1 2 3 | dependencies{ compile 'com.youth.banner:banner:+' //最新版本 } |
或者引用本地lib
1 | compile project(':banner') |
常量
方法名 | 描述 |
BannerConfig.NOT_INDICATOR | 不显示指示器和标题 |
BannerConfig.CIRCLE_INDICATOR | 显示圆形指示器 |
BannerConfig.NUM_INDICATOR | 显示数字指示器 |
BannerConfig.NUM_INDICATOR_TITLE | 显示数字指示器和标题 |
BannerConfig.CIRCLE_INDICATOR_TITLE | 显示圆形指示器和标题(垂直显示) |
BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE | 显示圆形指示器和标题(水平显示) |
BannerConfig.LEFT | 指示器居左 |
BannerConfig.CENTER | 指示器居中 |
BannerConfig.RIGHT | 指示器居右 |
动画常量类
常量类名 |
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) | 设置轮播样式(默认为Banner.NOT_INDICATOR) |
setIndicatorGravity(int type) | 设置指示器位置(没有标题默认为右边,有标题时默认左边) |
isAutoPlay(boolean isAutoPlay) | 设置是否自动轮播(默认自动) |
setBannerTitle(String[] titles) | 设置轮播要显示的标题和图片对应(如果不传默认不显示标题) |
setBannerTitleList(List titles) | 设置轮播要显示的标题和图片对应(如果不传默认不显示标题) |
setDelayTime(int time) | 设置轮播图片间隔时间(默认为2000) |
setImages(Object[]/List<?> imagesUrl) | 设置轮播图片(所有设置参数方法都放在此方法之前执行) |
setImages(Object[]/List<?> imagesUrl,OnLoadImageListener listener) | 设置轮播图片,并且自定义图片加载方式 |
setOnBannerClickListener(this) | 设置点击事件,下标是从1开始 |
setOnBannerImageListener(this) | 设置图片加载事件,可以自定义图片加载方式 |
setOnPageChangeListener(this) | viewpager的滑动监听 |
setBannerAnimation(Class<? extends PageTransformer> transformer) | 设置viewpager的默认动画,传值见动画表 |
setPageTransformer(boolean reverseDrawingOrder, ViewPager.PageTransformer transformer) | 设置viewpager的自定义动画 |
[ 点击查看 ViewPager的PageTransformer用法 ]
使用步骤
在布局文件中添加Banner
简单使用
1 2 3 4 5 | <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="高度自己动态设置" /> |
xml自定义属性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <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:default_image="默认加载图片" app:delay_time="轮播间隔时间" app:is_auto_play="是否自动轮播" app:indicator_margin="指示器之间的间距" app:indicator_drawable_selected="指示器选中效果" app:indicator_drawable_unselected="指示器未选中效果" app:indicator_height="指示器圆形按钮的高度" app:indicator_width="指示器圆形按钮的宽度" app:title_background="标题栏的背景色" app:title_height="标题栏高度" app:title_textcolor="标题字体颜色" app:title_textsize="标题字体大小"/> |
在Activity或者Fragment中配置Banner
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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); /** *一步搞定,设置图片就行了(如果需要其他设置,请在setImages之前完成) */ banner.setImages(images); } |