1、引入依赖:compile 'com.github.bumptech.glide:glide:3.7.0'
2、配置
1、 配置需要实现 GlideModule,在此,GlideModule 相当于 Application 的角色,属于全局配置,在该实现类中可以设置图片缓存信息;
2、在 AndroidManifest.xml 中需要配置
public class MyGlideModule implements GlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
MemorySizeCalculator calculator = new MemorySizeCalculator(context);
int defaultMemoryCacheSize = calculator.getMemoryCacheSize();
int defaultBitmapPoolSize = calculator.getBitmapPoolSize();
int cacheSize100MegaBytes = 104857600;
builder.setMemoryCache(new LruResourceCache(defaultMemoryCacheSize));
builder.setBitmapPool(new LruBitmapPool(defaultBitmapPoolSize));
String downloadDirectoryPath = context.getExternalCacheDir().getPath() + File.separator + "glide";
builder.setDiskCache(new DiskLruCacheFactory(downloadDirectoryPath,cacheSize100MegaBytes));
}
@Override
public void registerComponents(Context context, Glide glide) {
}
}
3、界面调用,示例如下:
Glide.with(YourFragment).load(imageUrl).error(失败时显示的图片)
.diskCacheStrategy(DiskCacheStrategy.SOURCE).into(YourImageView);
4、缓存说明:
说明:本文章只是为了记录下自己学习 glide 时对缓存的理解,文章将的浅显,具体使用方法推荐查看官方文档。
2、配置
1、 配置需要实现 GlideModule,在此,GlideModule 相当于 Application 的角色,属于全局配置,在该实现类中可以设置图片缓存信息;
2、在 AndroidManifest.xml 中需要配置
<meta-data
android:name="com.heyha.www.glidetest.MyGlideModule"
android:value="GlideModule" />
至此,配置完成。GlideModule 实现类如下
public class MyGlideModule implements GlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
MemorySizeCalculator calculator = new MemorySizeCalculator(context);
int defaultMemoryCacheSize = calculator.getMemoryCacheSize();
int defaultBitmapPoolSize = calculator.getBitmapPoolSize();
int cacheSize100MegaBytes = 104857600;
builder.setMemoryCache(new LruResourceCache(defaultMemoryCacheSize));
builder.setBitmapPool(new LruBitmapPool(defaultBitmapPoolSize));
String downloadDirectoryPath = context.getExternalCacheDir().getPath() + File.separator + "glide";
builder.setDiskCache(new DiskLruCacheFactory(downloadDirectoryPath,cacheSize100MegaBytes));
}
@Override
public void registerComponents(Context context, Glide glide) {
}
}
3、界面调用,示例如下:
Glide.with(YourFragment).load(imageUrl).error(失败时显示的图片)
.diskCacheStrategy(DiskCacheStrategy.SOURCE).into(YourImageView);
4、缓存说明:
调用第 3 步时,获取的图片先保存在内存,然后是本地磁盘,最后显示在界面上,如果在内存或者本地磁盘中发生错误,可能不会显示在界面上。当成功执行第 3 步后,在内存和本地磁盘均缓存了该图片的信息,缓存策略是最近最久未使用策略,当想要再次使用缓存的图片时,继续执行第 3 步,但本次执行会先在内存中查找,然后是本地磁盘缓存,如果都没找到,最后再从网络上根据 imageUrl 获取该图片。
5、推荐加入第三方库:compile 'jp.wasabeef:glide-transformations:2.0.1'
该库包含一些常用的图片样式,例如图片模糊、圆角、圆形图片、转为黑白图片等等,使用方法很简单,只需加上一个 bitmapTransform(该库提供的图片样式),如:Glide.with(MainActivity.this).load("http://pic33.nipic.com/20130916/3420027_192919547000_2.jpg").error(R.mipmap.ic_launcher) .bitmapTransform(new CropCircleTransformation(this)) .diskCacheStrategy(DiskCacheStrategy.SOURCE).into(glide);
说明:本文章只是为了记录下自己学习 glide 时对缓存的理解,文章将的浅显,具体使用方法推荐查看官方文档。