初探Glide,Google推介的图片缓存库

0 .Thanks

项目地址
Android Glide图片加载(加载监听、加载动画)
【Glide】重新加载图片

---导入:2017年2月15日19:06:06

repositories {
  mavenCentral() // jcenter() works as well because it pulls from Maven Central
}

dependencies {
  compile 'com.github.bumptech.glide:glide:3.7.0'
  compile 'com.android.support:support-v4:19.1.0'
}

1 .基本用法

Glide
    .with( context )
    .placeholder(R.drawable.loading)
    .error(R.drawable.failed)
    .load( eatFoodyImages[0] )
    .into( imageViewInternet );
  • with : 传入Context,最好传入Activity,Glide会根据Activity的生命周期去加载,当Activity Destory的时候,其加载会取消。
  • load : 图片的地址:可以是Drawable, ResId, URL 等等。
  • into : 图片加载的目标。其必须是<? extend ImageView> .
  • placeholder : 放置一张占位符,也就是在加载进行的时候所显示的
  • error :加载失败显示的图片

2 .设置其缓存策略

在默认情况下,例如上面的请求,Glide默认开启:磁盘缓存,内存缓存。
我们可以控制这个策略:

Glide
    .with( context )
    .placeholder(R.drawable.loading)
    .error(R.drawable.failed)
    .skipMemoryCache( true )
    .diskCacheStrategy( DiskCacheStrategy.NONE )
    .load( eatFoodyImages[0] )
    .into( imageViewInternet );
  • skipMemoryCache : true:设置内存缓存,false:不适用内存缓存
  • diskCacheStrategy :传入的是一个枚举:
  • DiskCacheStrategy.NONE :不缓存图片
  • DiskCacheStrategy.SOURCE :缓存图片源文件
  • DiskCacheStrategy.RESULT:缓存修改过的图片
  • DiskCacheStrategy.ALL:缓存所有的图片,默认

3 .动画

  • 添加图片淡入加载的效果 : .crossFade()
  • 添加自定义动画:
    • .animate( android.R.anim.slide_in_left ) //在图片从网络加载完并准备好之后将从左边滑入。
    • Java代码动画:
ViewPropertyAnimation.Animator animationObject = new ViewPropertyAnimation.Animator() {  
    @Override
    public void animate(View view) {
        // if it's a custom view class, cast it here
        // then find subviews and do the animations
        // here, we just use the entire view for the fade animation
        view.setAlpha( 0f );

        ObjectAnimator fadeAnim = ObjectAnimator.ofFloat( view, "alpha", 0f, 1f );
        fadeAnim.setDuration( 2500 );
        fadeAnim.start();
    }
};

然后再Glide中设置: .animate( animationObject )

4 .加载完成监听

Glide.with(ShowImgActivity.this)
     .load(urlString)
     .centerCrop()
     .error(R.drawable.failed)
     .crossFade()
     .into(new GlideDrawableImageViewTarget(imageView) {
        @Override
        public void onResourceReady(GlideDrawable drawable, GlideAnimation anim) {
            super.onResourceReady(drawable, anim);
            //在这里添加一些图片加载完成的操作
        }
    )};

5 .加载优先级

在Glide的内部,图片的加载可以变得有优先级:
通过:.priority( Priority.HIGH )设置

6 .其他的小问题

1)Glide去加载头像:
  • 使用Glide去加载头像
    在实际项目当中,我遇到一个 问题:

    • 客户端更新头像,方法是:URL不会变,但是图片内容会改变。
      这样,就会在客户端上遗留一个问题:客户端是以URL作为
      图片缓存的key,所以,每次更新头像,而本地的图片却不会
      变,因为URL不变,缓存没有更新。

    • 对于上面的问题,客户端可以采用这样的操作:每次更新完头像
      之后,顺便把头像的缓存给替换一下,OK,这样的话,可以
      更新头像。

    • 然后,我们又发现,会存在另外一个隐患:用户A在手机M,N
      都登陆过,然后,其手机M,N上都缓存这一个相同Key的URL头像,
      而,当用户在手机M上更新了头像,成功了。但是当他在手机N上
      登陆的时候,发现头像还是之前那个。有人说,把图片设置成,每次
      读取都去获取服务器的图片,不做任何缓存。但是,这样,缓存就
      没有意义了。

    • 最终解决方法(综合网上的解法)
      1)服务器接口更改:
      记录每次更新头像的时间:例如有头像:http://xxx/headpic/125.png
      在其更新后,保留其时间戳,拼接到URL后面,以?作为分隔符:
      http://xxx/headpic/125.png?1324564

    这样,每次客户端在获取到这个URL的时候,就直接走缓存策略。
    每次更新的URL,都会改变,而在任何的地方上获取URL都保证是能
    识别到最新的头像URL。

    参考:http://www.codexiu.cn/android/blog/21429/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容