主目录
报告问题
如果你有任何问题,可以在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和资源池来减少内存抖动
- 支持任意的图像变换