文章概述
本篇文章记录开源的Banner库:android-banner 的使用。android-banner实现了一般banner循环轮播的效果,一页只显示一张图片,也可以一页显示一张图和相邻两个图片的一部分,此项目仅仅是banner展示图片,没有多余的诸如指示器、页面切换动画等效果代码,详见效果图和案例代码。
概述
注:本banner仅仅是banner,不包含指示器、变换动画、图片加载器等多余的代码,作者认为这些部件完全应该分离出来,详细用法见案例app。
- 项目地址
- overview
usage
Gradle
1 | dependencies { |
ProGuard
1 | -keep class com.lw.banner.** {*;} |
Layout
1 | <com.lw.banner.Banner |
xml中可设置的一些属性
属性名称 | 属性值类型 | 作用 |
---|---|---|
delayTime | integer | 循环轮播时间间隔 |
scrollDuration | integer | banner滚动过程持续时间 |
isAutoPlay | boolean | 是否自动轮播 |
scrollable | boolean | banner是否可以手动滑动 |
pageMargin | dimension | banner页面之间的间隔 |
pageLimit | integer | banner预加载页面数 |
leftPageWidth | dimension | 当前页面左侧页面可以显示的宽度 |
rightPageWidth | dimension | 当前页面右侧页面可以显示的宽度 |
emptyImage | reference | banner为空时的占位图片资源引用 |
案例:xml中设置循环轮播时间间隔1
2
3
4
5<com.lw.banner.Banner
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="160dp"
app:delayTime="1000"/>
Code
1 | List<String> urls=getUrls(); |
代码中可以配置的一些属性:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25banner.setImages(Arrays.asList(imgRes)) //设置图片资源
//.setImageLoader(new FrescoImageLoader()) // 设置fresco图片加载器
.setImageLoader(new GlideImageLoader()) //设置Glide图片加载器
//.setPageTransformer(true, new PageScaleYTransformer()) //页面切换动画
.setOnItemClickListener(new Banner.OnItemClickListener() {
public void callBack(int position) {
Toast.makeText(MainActivity.this, "position=" + position, Toast.LENGTH_SHORT).show();
}
}) //设置banner点击监听
//.setScrollable(false) // 禁用banner手动滑动
//.setDelayTime(1000) // 循环轮播时间间隔
//.setPageLimit(4) // 设置预加载页面数量
//.setPageMargin(20) // banner页面之间的间隔
//.setRightPageWidth(50) // 当前页面右侧页面可以显示的宽度
//.setLeftPageWidth(50) // 当前页面左侧页面可以显示的宽度
//.setEmptyImageRes(R.mipmap.no_banner) // banner为空时占位图
//.setEmptyImageScaleType(ImageView.ScaleType.FIT_CENTER) // 占位图的缩放类型,默认FIT_XY
.isAutoPlay(true) // 设置自动循环轮播
.init();
// 拿到占位图ImageView对象
ImageView emptyView = mBinding.banner2.getEmptyView();
emptyView.setImageResource(R.mipmap.mn_01);
// 拿到BannerViewPager对象
BannerViewPager bannerViewPager = mBinding.banner2.getBannerViewPager();
生命周期中控制循环轮播的周期1
2
3
4
5
6
7
8
9
10
11
12
protected void onStart() {
super.onStart();
//开始轮播
banner.startAutoPlay();
}
protected void onStop() {
super.onStop();
//结束轮播
banner.stopAutoPlay();
}