原博客地址:https://blog.csdn.net/weixin_40400031/article/details/103458554
引言:最近做了一款广告轮播banner,可以支持自动轮播,手指触摸停止,手指移开恢复轮播,支持高度自定义布局和交互事件,使用builder链式写法,使用简单
github地址:https://github.com/bigdongdong/Banner
项目配置
allprojects {
repositories {
...
maven { url 'https://jitpack.io' } //添加jitpack仓库
}
}
dependencies {
implementation 'com.github.bigdongdong:Banner:2.1' //添加依赖
}
使用方式
private List<String> banners ;
/**
* 设置banner底部指示点 ... 的样式
*/
PointsOptions options = new PointsOptions.Builder()
.count(banners.size()) //点的数量
.marginBottom(30) //点距离底部的距离(px)
.selectedColor(Color.WHITE) //当前广告页对应的点的颜色
.unSelectedColor(Color.GRAY) //非当前广告页对应点的颜色
.space(10) //点与点之间的间隔(px)
.width(15) //点的宽高尺寸(px),点为圆形
.build();
/**
* 创建banner
*/
banner = new Banner.Builder()
.context(this)
.banners(banners) //设置banner列表数据,List<? extends Object>
.layoutStyle(Banner.LAYOUT_STYLE_IMAGEVIEW) //提供一个ImageView
// .layoutStyle(Banner.LAYOUT_STYLE_RELATIVELAYOUT) //提供RelativeLayout,可以高度自定义布局
.playStyle(Banner.PLAY_STYLE_JUST_GO) //无限循环播放
// .playStyle(Banner.PLAY_STYLE_JUST_ONCE) //播放一次,播放完停留在最后一张
.stayDuration(800) //每张广告页停留时间(毫秒)
.animDuration(500) //广告切换的时间(毫秒)
.isDisplayPoints(true) //是否显示底部指示点,默认显示
.pointsOptions(options) //设置底部的指示点
/**
* 设置广告页监听
* 第一个泛型对应layoutStyle:
* (Banner.LAYOUT_STYLE_IMAGEVIEW 对应 ImageView)
* (Banner.LAYOUT_STYLE_RELATIVELAYOUT 对应 RelativeLayout)
* 第二个泛型是banners传的list中的泛型
*/
.onSelectedListener(new OnSelectedListener<ImageView,String>() {
@Override
public void onSelectedListener(ImageView iv, String url, int position) {
//可以使用任意框架加载布局
Glide.with(MainActivity.this).load(url).into(iv);
//给view设置交互监听
iv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
})
.build();
parentLayout.addView(banner); //将banner add进准备好的父布局
/**
* 在onStart中开启轮播,在onDestory中停止轮播,避免内存泄漏
*/
@Override
protected void onStart() {
super.onStart();
if(banner != null){
banner.start();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if(banner != null){
banner.stop();
}
}
来源:CSDN
作者:Spring大酱
链接:https://blog.csdn.net/weixin_40400031/article/details/103458554