Glide图片发请求+缓存简单实用解析

来源:互联网 发布:宝马刷隐藏软件 编辑:程序博客网 时间:2024/05/21 03:25
 

Glide图片发请求+缓存简单实用解析

标签: Androidglide
 1438人阅读 评论(2) 收藏 举报
 分类:

1、引入依赖:compile 'com.github.bumptech.glide:glide:3.7.0'


2、配置
        1、 配置需要实现 GlideModule,在此,GlideModule 相当于 Application 的角色,属于全局配置,在该实现类中可以设置图片缓存信息;
        2、在 AndroidManifest.xml 中需要配置
[html] view plain copy
  1. <span style="white-space:pre">  </span><meta-data  
  2.             android:name="com.heyha.www.glidetest.MyGlideModule"  
  3.             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 时对缓存的理解,文章将的浅显,具体使用方法推荐查看官方文档。
原创粉丝点击