前言:
在前面的文章中,我们介绍了如何对Glide进行默认配置的基础知识,现在我们就来介绍如何配置自定义缓存
Glide 系列目录
- 1.Glide-入门教程
- 2.Glide-占位图以及加载动画
- 3.Glide-加载本地图片
- 4.Glide-加载Gif
- 5.Glide-绑定生命周期
- 6.Glide-内存缓存与磁盘缓存
- 7.Glide-通过Modules定制Glide
- 8.Glide-自定义缓存
- 9.Glide-图片的压缩
- 10.Glide-图片预处理(圆角,高斯模糊等)
- 11.Glide-图片的剪裁(ScaleType)
- 12.Glide-源码详解
1.如何使用GlideModule
首先我们要对Glide进行默认配置,需要了解如何使用GlideModule,前面文章已经做了详细介绍了,这边就不再介绍了
http://blog.csdn.net/yulyu/article/details/55194237
前面还介绍了关于Glide缓存的基础知识,有兴趣的也可以看看
http://blog.csdn.net/yulyu/article/details/55096713
2.自定义内存缓存
通过调用builder的setXXX方法就可以自定义内存缓存的大小了
(MemoryCach以及BitmapPool都与内存缓存有关)
public class XiayuGlideModule implements GlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
//配置内存缓存大小 10MB
builder.setMemoryCache(new LruResourceCache(10*1024*1024));
//配置图片池大小 20MB
builder.setBitmapPool(new LruBitmapPool(20*1024*1024));
}
@Override
public void registerComponents(Context context, Glide glide) {
}
}
但是内存缓存的大小数值其实不应该是随便配置的,Glide的内部的默认值是通过一系列的计算获取的,比如说判断手机是否高配置手机等(有兴趣的可以去看他的源码,或者等待本系列后面的源码分析)
这样有个取巧的办法,就是获取Glide默认的设置,然后在这个设置的基础上进行修改
public class XiayuGlideModule implements GlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
//获取内存计算器
MemorySizeCalculator calculator = new MemorySizeCalculator(context);
//获取Glide默认内存缓存大小
int defaultMemoryCacheSize = calculator.getMemoryCacheSize();
//获取Glide默认图片池大小
int defaultBitmapPoolSize = calculator.getBitmapPoolSize();
//将数值修改为之前的1.1倍
int myMemoryCacheSize = (int) (1.1 * defaultMemoryCacheSize);
int myBitmapPoolSize = (int) (1.1 * defaultBitmapPoolSize);
//修改默认值
builder.setMemoryCache(new LruResourceCache(myMemoryCacheSize));
builder.setBitmapPool(new LruBitmapPool(myBitmapPoolSize));
}
@Override
public void registerComponents(Context context, Glide glide) {
}
}
3.自定义磁盘缓存
磁盘缓存按照访问权限及路径可以分为两种
- 私有缓存 (自己本app可以使用,目录在data/data/应用包名 下面)
- 外部缓存(都可以访问,目录在扩展空间内,如SD卡)
3.1私有缓存
下面这样配置的话,主要是修改缓存大小,缓存路径仍为默认路径(即data/data/应用包名/cache/image_manager_disk_cache)
public class XiayuGlideModule implements GlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
//设置磁盘缓存大小
int size = 100 * 1024 * 1024;
//设置磁盘缓存
builder.setDiskCache(new InternalCacheDiskCacheFactory(context, size));
}
@Override
public void registerComponents(Context context, Glide glide) {
}
}
如果需求修改缓存路径的话,需要增加一下参数即可(变为data/data/应用包名/cache/xiayu)
//设置磁盘缓存大小
int size = 100 * 1024 * 1024;
String dir = "xiayu";
//设置磁盘缓存
builder.setDiskCache(new InternalCacheDiskCacheFactory(context,dir, size));
3.2外部缓存
下面这样配置的话,缓存会在 SDCard/Android/data/应用包名/cache/image_manager_disk_cache目录下
public class XiayuGlideModule implements GlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
//设置磁盘缓存大小
int size = 100 * 1024 * 1024;
//设置磁盘缓存
builder.setDiskCache(new ExternalCacheDiskCacheFactory(context, size));
}
@Override
public void registerComponents(Context context, Glide glide) {
}
}
如果需求修改缓存路径的话,需要增加一下参数即可(变为SDCard/Android/data/应用包名/cache/xiayu)
//设置磁盘缓存大小
int size = 100 * 1024 * 1024;
String dir = "xiayu";
//设置磁盘缓存
builder.setDiskCache(new ExternalCacheDiskCacheFactory(context,dir, size));
3.3完全自定义路径
上面两种缓存都是把缓存的父目录定死的,能够改变的只是子目录,Glide还提供了一种方式可以完全自定义缓存目录
(需要注意的是这里的路径是配置的绝对路径,所以如果没有指定在sd卡目录下的话是无法直接看到的)
public class XiayuGlideModule implements GlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
//设置磁盘缓存大小
int size = 100 * 1024 * 1024;
String dirFolder = "xia";
String dirName = "yu";
//设置磁盘缓存
builder.setDiskCache(new DiskLruCacheFactory(dirFolder, size));
//builder.setDiskCache(new DiskLruCacheFactory(dirFolder, dirName,size));
}
@Override
public void registerComponents(Context context, Glide glide) {
}
}

本文介绍了如何在Glide中实现自定义缓存,包括如何调整内存缓存大小,自定义私有和外部磁盘缓存路径,并提供了完全自定义缓存目录的方法。通过这些配置,可以更好地优化图片加载的性能和存储管理。
3万+

被折叠的 条评论
为什么被折叠?



