📅  最后修改于: 2023-12-03 14:59:15.016000             🧑  作者: Mango
Glide是一个图片加载库,可以帮助Android开发者在应用中高效、平滑地加载图片。它不仅可以加载本地图片,还可以加载网络图片,而且具有一定缓存功能,能够有效减少对设备资源的占用。
在工程的gradle文件中添加以下依赖:
dependencies {
implementation 'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
}
Glide.with(context)
.load(url) // 图片地址
.into(imageView); // 加载到的ImageView
其中,with()方法传入Context参数,load()方法传入图片的地址(可以是本地图片,也可以是网络图片),into()方法传入需要加载到的ImageView控件即可。
Glide默认会对图片进行缓存,建议不要去手动做缓存,避免重复劳动。如果想要清除缓存,可以调用以下方法:
Glide.get(context).clearDiskCache();
Glide.get(context).clearMemory();
clearDiskCache()方法用于清除磁盘缓存,clearMemory()方法用于清除内存缓存。
Glide还提供了其他一些配置选项,例如设置加载过程中的占位图、错误图等。以下是一些常用的配置选项的示例:
// 设置占位图
Glide.with(context)
.load(url)
.placeholder(R.drawable.placeholder)
.into(imageView);
// 设置错误图
Glide.with(context)
.load(url)
.error(R.drawable.error)
.into(imageView);
// 设置缩略图比例
Glide.with(context)
.load(url)
.thumbnail(0.1f)
.into(imageView);
如果需要对图片进行一些特殊处理,例如转换成圆形图片、使用GIF动图等,则需要创建一个自定义的GlideModule,并在其中添加对应的转换器。以下是一个在Glide中使用圆形图片的示例:
@GlideModule
class MyAppGlideModule : AppGlideModule() {
override fun applyOptions(context: Context, builder: GlideBuilder) {
// 设置磁盘缓存大小
builder.setDiskCache(DiskLruCacheFactory(context.cacheDir.absolutePath, "image", 50 * 1024 * 1024))
// 设置默认占位图
builder.setDefaultRequestOptions(RequestOptions().placeholder(R.drawable.placeholder).error(R.drawable.error))
}
override fun registerComponents(context: Context, glide: Glide, registry: Registry) {
registry.append(StorageReference::class.java, InputStream::class.java, FirebaseImageLoader.Factory())
super.registerComponents(context, glide, registry)
}
override fun isManifestParsingEnabled(): Boolean {
return false
}
}
// 自定义Transformation,将图片转换成圆形
class CircleTransformation : BitmapTransformation() {
override fun transform(pool: BitmapPool, toTransform: Bitmap, outWidth: Int, outHeight: Int): Bitmap {
val size = Math.min(toTransform.width, toTransform.height)
val x = (toTransform.width - size) / 2
val y = (toTransform.height - size) / 2
val squared = Bitmap.createBitmap(toTransform, x, y, size, size)
val result = pool.get(size, size, Bitmap.Config.ARGB_8888)
val canvas = Canvas(result)
val paint = Paint()
paint.shader = BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP)
paint.isAntiAlias = true
val r = size / 2f
canvas.drawCircle(r, r, r, paint)
return result
}
override fun hashCode(): Int {
return ID.hashCode()
}
override fun equals(other: Any?): Boolean {
return other is CircleTransformation
}
companion object {
private const val ID = "com.example.myapp.CircleTransformation"
}
}
// 使用CircleTransformation将图片转换成圆形
Glide.with(context)
.load(url)
.apply(RequestOptions().transform(CircleTransformation()))
.into(imageView);
Glide是一款高效、方便、易用的图片加载库,非常适合Android开发者使用。通过添加依赖、加载图片、缓存处理、配置选项、进阶用法等流程,我们可以很容易地在应用中使用Glide。