第一部分:Banner简介
Banner能实现循环播放多个广告图片和手动滑动循环等功能。因为原生ViewPager并不支持循环翻页,要实现循环还得需要自己去动手。Banner框架可以进行不同样式、不同动画设置,以及完善的api方法能满足大部分软件首页轮播图效果的需求。Banner网址
第二部分:Banner的基本使用
导入依赖:
dependencies{
implementation 'com.youth.banner:banner:1.4.10' //最新版本
}
在xml文件中使用
<com.youth.banner.Banner
android:id="@+id/ba_banner"
android:layout_width="match_parent"
android:layout_height="200dp"></com.youth.banner.Banner>
使用
banner.setImages(imageList).setImageLoader(new ImageLoader() {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
Glide.with(context).load(path).into(imageView);
}
}).start();
注意:imageList是一个List集合,可以是图片网址,也可以是R.mipmap.×××
轮播图播放
banner.startAutoPlay();
轮播图停止播放
banner.stopAutoPlay();
轮播图更新
banner.update(imageList);
轮播图更新有bug,我一直没找到解决的方法,希望万能的网友能告诉我
设置动画
banner.setBannerAnimation(AccordionTransformer.class);
动画的方式可以选择的种类还有如下
DefaultTransformer.class;
AccordionTransformer.class;
BackgroundToForegroundTransformer.class;
ForegroundToBackgroundTransformer.class;
CubeInTransformer.class;//兼容问题,慎用
CubeOutTransformer.class;
DepthPageTransformer.class;
FlipHorizontalTransformer.class;
FlipVerticalTransformer.class;
RotateDownTransformer.class;
RotateUpTransformer.class)
ScaleInOutTransformer.class;
StackTransformer.class;
TabletTransformer.class;
ZoomInTransformer.class;
ZoomOutTranformer.class;
ZoomOutSlideTransformer.class;
当然我们也可以参照上面的类自定义动画。
设置不同的样式
banner.setImages(imageList).setBannerTitles(titlesList).setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE).setImageLoader(new ImageLoader() {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
Glide.with(context).load(path).into(imageView);
}
}).start();
可选的样式
BanerConfig.CIRCLE_INDICATOR_TITLE_INSIDE//带有文字,即setBannerTitles()中设置的
BannerConfig.CIRCLE_INDICATOR_TITLE//带有文字,即setBannerTitles()中设置的
BannerConfig.NUM_INDICATOR_TITLE//带有文字,即setBannerTitles()中设置的
BannerConfig.NUM_INDICATOR//右下角圆圈
BannerConfig.CIRCLE_INDICATOR//中间原点
BannerConfig.NOT_INDICATOR;//没有样式
更新样式
banner.updateBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);
设置指示器的位置
banner.setIndicatorGravity(BannerConfig.LEFT);
banner.setIndicatorGravity(BannerConfig.CENTER);
banner.setIndicatorGravity(BannerConfig.RIGHT);