您当前的位置:首页 > 计算机 > 编程开发 > 安卓(android)开发

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

时间:12-14来源:作者:点击数:
城东书院 www.cdsy.xyz

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

相关链接

  • github 地址:https://github.com/bumptech/glide
城东书院 www.cdsy.xyz
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐