主目录

报告问题

如果你有任何问题,可以在Github上提出或者发送e-mail到我们的邮件列表,也可以在IRC频道上联系我们:irc.freenode.net#glide-library

3.0版本的新特性

  • 支持Gif动画的解码 - 与加载图片相同,只要调用Glide.with(...).load(...),如果你加载的图片是一个可以播放的Gif,Glide会自动加载它并显示在一个自定义的Drawable上(注:GifDrawable)。此外,你还可以控制的更多,比如

    // 你想加载Gif为一张静态图片
    Glide.with(context).load(...).asBitmap()。
    // 或者你想只有加载对象是Gif时才能加载成功
    Glide.with(context).load(...).asGif()。
    
  • 本地视频播放技术 - 除了解码Gif,Glide也能解码你设备上的视频(video)。使用方法和加载gif相同,Glide支持所有Android可以直接解码的视频。

  • 支持缩略图加载 - 有时我们希望减少用户等待的时间又不想牺牲图片的质量,我们可以同时加载多张图片到一个View中,先加载缩略图(只有view的1/10大小),然后再加载一个完整的图像覆盖在上面。使用下面的代码

    Glide.with(yourFragment).load(yourUrl).thumbnail(0.1f).into(yourView)
    

当然,你也可以传入一个Request到.thumbnail()函数中作为参数。

  • 与生命周期集成 - 加载请求现在会自动在onStop中暂停在,onStart中重新开始。为了节约电量,Gif动画也会在onStop中自动暂停。此外,当设备的连接状态改变时,所有失败的请求会自动重试,确保Glide不会因为临时性的连接问题,导致请求永远失败。
  • 转码 - 除了解码资源,Glide的.toBytes().transcode()方法允许你在后台正常地获取、解码、变换一张图片。你还可以在这些调用中把图片转码成更有用的格式,比如,上传一张大小为250*250像素的用户头像的图片bytes数据,代码如下

    Glide.with(context)
      .load(“/user/profile/photo/path”)
      .asBitmap()
      .toBytes()
      .centerCrop()
      .into(new SimpleTarget<byte[]>(250, 250) {
          @Override
          public void onResourceReady(byte[] data, GlideAnimation anim) {
              // 在此处,将bytes数据传入后台线程,再上传他们
          }
      });
    
  • 动画 - Glide3.X支持『淡入淡出』动画(.crossFade())和view的属性动画(.animate(ViewPropertyAnimation.Animator))。此外,还有Glide2.0就支持的android view动画。

  • 支持 OkHttp 和 Volley - 现在你可以选择用OkHttp、Volley或者默认的HttpUrlConnection作为网络栈。OkHttp和Volley可以通过添加对应的集成库(integration library)和注册相应的ModelLoaderFactory来引入。具体查看ReadMe文件。
  • 其他 - 可以使用Drawable对象作为加载中的占位图、请求优先级、覆盖自定义宽和高、可以缓存变换后的缩略图或者缓存原始文件

从2.0迁移到3.0

  • 将所有的Glide.load()替换为Glide.with([fragment/activity/context]).load()
  • 将所有的自定义的加载调用Glide.load(url).into(new SimpleTarget(){ ... }).with(context)替换成Glide.with(context).load(url).into(new SimpleTarget(width, height) { ... })

特性

除了3.0引入的新功能,Glide继承了2.0的所有功能:

  • 后台图片加载
  • 如果你使用了listview的复用机制,那么Glide会自动取消作业(job)
  • 内存和磁盘缓存
  • Bitmap和资源池来减少内存抖动
  • 支持任意的图像变换