写在前面
本人android小白,刚学kotlin android ,所以这篇文章是给小白看的
由于项目中需要使用到轮播图,自己造轮子不太可能所以肯定是要用到第三方库的
但是我发现网上大部分都是java android的,或者又有一些都是太老旧
正文
此次采用的是youth5201314的banner库 ,这个项目在github上也是拥有超多的star
第一步
在gradle中添加banner 和 glide 依赖 (这里用到glide是需要用到他的图片加载,也可以不用具体请参考 https://github.com/youth5201314/banner )本文章只将最简单的使用方式
implementation 'com.youth.banner:banner:2.1.0'
implementation 'com.github.bumptech.glide:glide:4.11.0'
第二步
在AndroidManifest.xml中添加网络权限
<uses-permission android:name="android.permission.INTERNET" />
第三步
布局xml中加入banner标签
<com.youth.banner.Banner
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="160dp" />
第四步
创建DataBean (放数据的)
class DataBean {
var imageRes: Int? = null
var imageUrl: String? = null
var title: String?
var viewType: Int
constructor(imageRes: Int?, title: String?, viewType: Int) {
this.imageRes = imageRes
this.title = title
this.viewType = viewType
}
constructor(imageUrl: String?, title: String?, viewType: Int) {
this.imageUrl = imageUrl
this.title = title
this.viewType = viewType
}
companion object {
//测试数据,如果图片链接失效请更换
val testData3: List<DataBean>
get() {
val list: MutableList<DataBean> = ArrayList()
list.add(
DataBean(
"https://img.zcool.cn/community/013de756fb63036ac7257948747896.jpg",
null,
1
)
)
list.add(
DataBean(
"https://img.zcool.cn/community/01639a56fb62ff6ac725794891960d.jpg",
null,
1
)
)
list.add(
DataBean(
"https://img.zcool.cn/community/01270156fb62fd6ac72579485aa893.jpg",
null,
1
)
)
list.add(
DataBean(
"https://img.zcool.cn/community/01233056fb62fe32f875a9447400e1.jpg",
null,
1
)
)
list.add(
DataBean(
"https://img.zcool.cn/community/016a2256fb63006ac7257948f83349.jpg",
null,
1
)
)
return list
}
}
}
第五步
在activity代码中调用
var banner:Banner<DataBean,BannerImageAdapter<DataBean>> = findViewById(R.id.banner)
banner.setAdapter(object : BannerImageAdapter<DataBean>(DataBean.testData3) {
override fun onBindView(holder: BannerImageHolder, data: DataBean, position: Int, size: Int) {
//图片加载自己实现
Glide.with(holder.itemView)
.load(data.imageUrl)
.apply(RequestOptions.bitmapTransform(RoundedCorners(30)))
.into(holder.imageView) }
}).addBannerLifecycleObserver(this).setIndicator(CircleIndicator(this))
大功告成
上图