Glide 快速高效的 Android 图片加载库 - 文章教程

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

发布于 2020-10-20 字数 5345 浏览 1203 评论 0

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

相关链接

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

目前还没有任何评论,快来抢沙发吧!

关于作者

JSmiles

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

2583 文章
29 评论
84935 人气
更多

推荐作者

Jay

文章 0 评论 0

guowei007

文章 0 评论 0

2668157715

文章 0 评论 0

HY阳

文章 0 评论 0

想挽留

文章 30 评论 3