Glide 快速高效的 Android 图片加载库
Glide 是一个 Android 上的图片加载和缓存库,其目的是实现平滑的图片列表滚动效果。Glide 是 Android 的一个快速高效的开源媒体管理和图像加载框架,它将媒体解码、内存和磁盘缓存以及资源池封装到一个简单易用的接口中。
Glide 支持获取、解码和显示视频静态、图像和动画 GIF。Glide 包括一个灵活的 API,允许开发人员插入几乎任何网络堆栈。默认情况下,幻灯片使用自定义 HttpUrlConnection
基于堆栈,但也包括实用程序库插入谷歌的 Volley 项目或 Square 的 OkHttp 库代替。
Glide 的主要关注点是尽可能平滑和快速地滚动任何类型的图像列表,但是对于需要获取、调整大小和显示远程图像的几乎任何情况,幻灯片都是有效的。
下载
有关详细说明和要求,请参见 下载和安装文档页。
你可以从 GitHub 下载一个 JAR 发布页面。
或者使用 Gradle:
repositories {
google()
jcenter()
}
dependencies {
implementation 'com.github.bumptech.glide:glide:4.11.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
}
或者 Maven:
<dependency>
<groupId>com.github.bumptech.glide</groupId>
<artifactId>glide</artifactId>
<version>4.11.0</version>
</dependency>
<dependency>
<groupId>com.github.bumptech.glide</groupId>
<artifactId>compiler</artifactId>
<version>4.11.0</version>
<optional>true</optional>
</dependency>
有关使用出血边缘的信息,请参阅 快照 文档页。
ProGuard
根据ProGuard(DexGuard)的配置和使用情况,您可能需要将以下行包含在proGuard d.cfg中(请参阅下载和安装文档页关于更多细节):
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep class * extends com.bumptech.glide.module.AppGlideModule {
<init>(...);
}
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
**[] $VALUES;
public *;
}
-keep class com.bumptech.glide.load.data.ParcelFileDescriptorRewinder$InternalRewinder {
*** rewind();
}
# for DexGuard only
-keepresourcexmlelements manifest/application/meta-data@value=GlideModule
我该怎么用 Glide?
简单的用例看起来如下所示:
// For a simple view:
@Override public void onCreate(Bundle savedInstanceState) {
...
ImageView imageView = (ImageView) findViewById(R.id.my_image_view);
Glide.with(this).load("http://goo.gl/gEgYUd").into(imageView);
}
// For a simple image list:
@Override public View getView(int position, View recycled, ViewGroup container) {
final ImageView myImageView;
if (recycled == null) {
myImageView = (ImageView) inflater.inflate(R.layout.my_image_view, container, false);
} else {
myImageView = (ImageView) recycled;
}
String url = myUrls.get(position);
Glide
.with(myFragment)
.load(url)
.centerCrop()
.placeholder(R.drawable.loading_spinner)
.into(myImageView);
return myImageView;
}
兼容性
- 最小Android SDK:glidev 4 要求最低 API 级别为 14。
- 编译AndroidSDK:glidev 4 要求您使用 API 26 或更高版本进行编译。
如果您需要支持较早版本的 Android,请考虑继续使用 Glide v3,它在 API 10 上工作,但没有积极维护。
- OkHttp 3.x:有一个可选的依赖项,称为
okhttp3-integration
,见 文档页。 - Volley:有一个可选的依赖项,称为
volley-integration
,见 文档页。 - RecyclerView:
CircleImageView
/CircularImageView
/RoundedImageView
大家都知道 问题 带着TransitionDrawable
(.crossFade()
带着.thumbnail()
或.placeholder()
)和动画GIF,使用BitmapTransformation
(.circleCrop()
将在第4版中提供或.dontAnimate()
来解决这个问题。 - 巨像(地图,连环画):Glide 可以通过降低采样来加载巨大的图像,但不支持缩放和平移。
ImageView
因为它们需要特殊的资源优化(如平铺)才能在不使用的情况下工作。OutOfMemoryError
。
相关链接
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论