📜  android glide 依赖 - Java (1)

📅  最后修改于: 2023-12-03 14:59:15.016000             🧑  作者: Mango

android glide 依赖 - Java

简介

Glide是一个图片加载库,可以帮助Android开发者在应用中高效、平滑地加载图片。它不仅可以加载本地图片,还可以加载网络图片,而且具有一定缓存功能,能够有效减少对设备资源的占用。

使用方法
1. 添加依赖

在工程的gradle文件中添加以下依赖:

dependencies {
    implementation 'com.github.bumptech.glide:glide:4.12.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
}
2. 加载图片
Glide.with(context)
    .load(url) // 图片地址
    .into(imageView); // 加载到的ImageView

其中,with()方法传入Context参数,load()方法传入图片的地址(可以是本地图片,也可以是网络图片),into()方法传入需要加载到的ImageView控件即可。

3. 缓存处理

Glide默认会对图片进行缓存,建议不要去手动做缓存,避免重复劳动。如果想要清除缓存,可以调用以下方法:

Glide.get(context).clearDiskCache();
Glide.get(context).clearMemory();

clearDiskCache()方法用于清除磁盘缓存,clearMemory()方法用于清除内存缓存。

4. 配置选项

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);
5. 进阶用法

如果需要对图片进行一些特殊处理,例如转换成圆形图片、使用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。