Glide 快速高效的 Android 图片加载库

发布于 2020-10-20 15:11:27 字数 4760 浏览 1534 评论 0

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,见 文档页
  • RecyclerViewCircleImageView/CircularImageView/RoundedImageView大家都知道 问题 带着TransitionDrawable(.crossFade() 带着 .thumbnail() 或 .placeholder() )和动画GIF,使用 BitmapTransformation (.circleCrop() 将在第4版中提供或 .dontAnimate()来解决这个问题。
  • 巨像(地图,连环画):Glide 可以通过降低采样来加载巨大的图像,但不支持缩放和平移。ImageView 因为它们需要特殊的资源优化(如平铺)才能在不使用的情况下工作。OutOfMemoryError

相关链接

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

lorenzathorton8

文章 0 评论 0

Zero

文章 0 评论 0

萧瑟寒风

文章 0 评论 0

mylayout

文章 0 评论 0

tkewei

文章 0 评论 0

17818769742

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文