最近小伙伴有个需求,就是在加载网络图片的同时显示加载进度,本来以为简单调用一下监听即可,查了一圈发现实现该功能需要重写不少类和方法,存在大量样板代码,于是便做了一个开源Library项目,方便大家集成后,一行代码实现Glide网络图片加载进度监听。
使用方式:
1、集成Library
allprojects {
repositories {
...
maven { url 'https://www.jitpack.io' }
}
}
implementation 'com.github.bumptech.glide:glide:4.11.0'
implementation "com.github.bumptech.glide:okhttp3-integration:4.11.0"
implementation 'com.github.Arcns:glide-extension:0.3'
2、使用方式
- Kotlin
Glide.with(this)
.loadWithProgress(
context = this, // 上下文
networkUrl = "https://data.1freewallpapers.com/download/surreal-landscape-4k.jpg", // 图片网络地址
progressBar = binding.pbTest, // 进度条,可为空
progressTextView = binding.tvTest, // 进度文本(x%),可为空
lifecycleOwner = this,// 生命周期感知,生命周期结束时自动解除监听,可为空
listener = object : com.arcns.glide.grogress.GlideProgressListener<Drawable>() { // 进度监听,可为空
override fun onProgress(current: Long, total: Long, percent: Float) {
Log.e("GlideProgress", "current:$current,total:$total,percent:$percent")
}
}
)
.skipMemoryCache(true)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.into(binding.ivTest)
- Java
GlideProgressExtensionKt.loadWithProgress(
Glide.with(context), // Glide RequestManager或RequestBuilder
context, // 上下文
"", // 图片网络地址
new GlideProgressListener<Drawable>() {
@Override
public void onProgress(long current, long total, float percent) {
}
}, // 进度监听,可为空
null, // 生命周期感知,生命周期结束时自动解除监听,可为空
null, // 进度条,可为空
null // 进度文本(x%),可为空
).into(imageView);
项目地址(含案例):
https://github.com/Arcns/glide-extension