android自定义Glide图片加载(以更改Glide缓存路径和使用ARGB_8888的图片格式为例)

首先引入Glide:

  compile 'jp.wasabeef:glide-transformations:2.0.1'

自定义GlideModule

package tsou.cn.glidetest.Glide;

import android.content.Context;

import com.bumptech.glide.Glide;
import com.bumptech.glide.GlideBuilder;
import com.bumptech.glide.load.DecodeFormat;
import com.bumptech.glide.load.engine.cache.ExternalCacheDiskCacheFactory;
import com.bumptech.glide.module.GlideModule;

/**
 * 自定义模块
 * <p>
 * 目前Glide还无法识别我们自定义的MyGlideModule,
 * 如果想要让它生效,
 * 还得在AndroidManifest.xml文件当中加入如下配置才行
 */
public class MyGlideModule implements GlideModule {
    /**
     * setMemoryCache()
     * 用于配置Glide的内存缓存策略,默认配置是LruResourceCache。
     * <p>
     * setBitmapPool()
     * 用于配置Glide的Bitmap缓存池,默认配置是LruBitmapPool。
     * <p>
     * setDiskCache()
     * 用于配置Glide的硬盘缓存策略,默认配置是InternalCacheDiskCacheFactory。
     * <p>
     * setDiskCacheService()
     * 用于配置Glide读取缓存中图片的异步执行器,默认配置是FifoPriorityThreadPoolExecutor,
     * 也就是先入先出原则。
     * <p>
     * setResizeService()
     * 用于配置Glide读取非缓存中图片的异步执行器,默认配置也是FifoPriorityThreadPoolExecutor。
     * <p>
     * setDecodeFormat()
     * 用于配置Glide加载图片的解码模式,默认配置是RGB_565。
     */

    public static final int DISK_CACHE_SIZE = 500 * 1024 * 1024;
    public static final String DISK_CACHE_NAME = "huangxiaoguo";

    @Override
    public void applyOptions(Context context, GlideBuilder builder) {
        /**
         将所有Glide加载的图片缓存到SD卡上,
         默认硬盘缓存大小都是250M,这里改为500
         * */
        //builder.setDiskCache(new ExternalCacheDiskCacheFactory(context));

        /**
         ExternalCacheDiskCacheFactory的默认缓存路径
         是在sdcard/Android/data/包名/cache/image_manager_disk_cache目录当中
         */
        //builder.setDiskCache(new ExternalCacheDiskCacheFactory(context, DISK_CACHE_SIZE));

        /**
         * 更改缓存最总文件夹名称
         *
         * 是在sdcard/Android/data/包名/cache/DISK_CACHE_NAME目录当中
         */
        builder.setDiskCache(new ExternalCacheDiskCacheFactory(context, DISK_CACHE_NAME, DISK_CACHE_SIZE));

        /**
         * Glide也能使用ARGB_8888的图片格式
         * 虽然图片质量变好了,但同时内存开销也会明显增大
         */
        builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);
    }

    @Override
    public void registerComponents(Context context, Glide glide) {
    }
}

配置MyGlideModule:

在AndroidManifest.xml的application节点下进行配置:

 <meta-data
            android:name="tsou.cn.glidetest.Glide.MyGlideModule"
            android:value="GlideModule" />

例如我的:

这里写图片描述

最后使用Glide加载图片

 String url = "https://unsplash.it/200/200?random&35";
        Glide.with(this)
                .load(url)
                .into(mIv);

效果:

这里写图片描述

注意添加网络权限:

    <uses-permission android:name="android.permission.INTERNET" />
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值