Glide 和 Picasso 一样,可以从许多来源加载和显示图像,同时在进行图像处理时还负责缓存和保持较低的内存影响。官方 Google 应用程序(例如 Google I/O 2015 的应用程序)正在使用 Glide。在本文中,我们将探索 Glide 的功能以及为什么它在某些方面更胜一筹。
Glide 是一个由bumptech 开发的Android Image Loader Library,是Google 推荐的一个库。它已被用于包括 Google I/O 2014 官方应用在内的许多 Google 开源项目中。它提供动画 GIF 支持并处理图像加载/缓存。动画 GIF 支持目前未在 Picasso 中实现。是的,图像在使应用程序的 UI 更具交互性和用户友好性方面也发挥着重要作用。所以,作为一个安卓开发者,我们应该注意在 App 中使用图片。我们应该处理图像的不同方面,例如缓慢无响应的图像、内存问题、加载错误等等。如果您没有在您的应用程序中处理这些方面,那么您的应用程序会给您的用户留下不好的印象。
如何使用 Glide Android 库?
1.在android项目中使用Glide,需要在gradle文件中添加依赖。因此,要添加依赖项,请在 Android 项目的 app 文件夹中打开 app/build.gradle 文件,并在其中添加以下几行。
dependencies {
implementation ‘com.github.bumptech.glide:glide:4.11.0’
annotationProcessor ‘com.github.bumptech.glide:compiler:4.11.0’
}
Glide 还需要 Android Support Library v4,请不要忘记像上面一样将 support-v4 导入到您的项目中。但这不是问题,因为在每个新时代的 Android 项目中基本上都需要 Android Support Library v4。现在再次同步你的gradle。如果您遇到任何类型的错误,那么您可以在 stackoverflow 上检查错误。
2.现在在 AndroidManifest.xml 文件中添加 InternetPermission。打开 manifest.xml 文件并添加以下行。
3.打开主活动的布局文件。我们需要在布局中添加一个 ImageView。它不需要花哨。以下代码片段向您展示了我的意思。
ImageView
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:id=”@+id/imageView”
android:layout_alignParentTop=”true”
android:layout_centerHorizontal=”true”
4.现在导航到主活动文件并将以下代码块添加到onCreate()方法。
ImageView imageView = (ImageView) findViewById(R.id.imageView);
Glide.with(context)
.load(“YOUR IMAGE URL HERE”)
.into(imageView)
.error(R.drawable.imagenotfound);
在第一行,我们从布局中获取 ImageView 实例。然后使用 Glide 库从上面的远程 URL 加载图像。
高级用法
对于任何实时应用,我们必须考虑所有可能的情况。在上面的代码中,我们只是将来自服务器链接的图像存储到imageView中。还有一些情况。
- 调整大小
Glide.with(context)
.load(“YOUR IMAGE URL HERE”)
.override(300, 200)
.error(R.drawable.imagenotfound)
.into(imageView);
在这里,我们使用 Glide 获取远程图像并在将其显示在图像视图中之前使用覆盖(调整大小)它。
- 占位符
Glide.with(context)
.load(“YOUR IMAGE URL HERE”)
.placeholder(R.drawable.placeholder)
.into(imageView);
如果您的应用程序依赖于远程资产,那么以占位符图像的形式添加回退很重要。当 Glide 完成获取它时,占位符图像会立即显示并替换为远程图像。
- 处理错误
Glide.with(context)
.load(“YOUR IMAGE URL HERE”)
.placeholder(R.drawable.placeholder)
.error(R.drawable.imagenotfound)
.into(imageView);
我们已经看到了占位符方法的工作原理,但是还有一个错误方法可以接受占位符图像。如果无法获取远程资源,Glide 将尝试下载远程图像 3 次并显示错误占位符图像。
- GIFS 支持
GlideDrawableImageViewTarget imagePreview = new GlideDrawableImageViewTarget(imageView);
Glide.with(this).load(url).listener(new RequestListener() {
@Override
public boolean onException(Exception e, String model, Target target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target target,
boolean isFromMemoryCache, boolean isFirstResource) {
return false;
}
}).into(imagePreview);
- 效果
模糊图像:
Glide.with(context)
.load(“YOUR IMAGE URL HERE”)
.bitmapTransform(new BlurTransformation(context))
.into(imageView);
- 多重变换:
Glide.with(context)
.load(“YOUR IMAGE URL HERE”)
.bitmapTransform(new BlurTransformation(context, 25), new CropCircleTransformation(context))
.into(imageView);
- 圆形作物:
Glide.with(context)
.load(“YOUR IMAGE URL HERE”)
.bitmapTransform(new CropCircleTransformation(context))
.into(imageView);
- 圆角:
int radius = 50;
int margin = 20;
Glide.with(context)
.load(“YOUR IMAGE URL HERE”)
.bitmapTransform(new RoundedCornersTransformation(context, radius, margin))
.into(imageView);