入门指南
基本用法
使用 Glide 加载图像很容易,通常情况下只需要一行代码:
Glide.with(fragment)
.load(myUrl)
.into(imageView);
取消您不再需要的负载也很简单:
Glide.with(fragment).clear(imageView);
尽管清除不再需要的负载是好的做法,但您不需要这样做。事实上,当您通过 Glide.with() 方法传入的 Activity 或者 Fragment 被销毁时,Glide 将自动清除负载并且回收负载使用的任何资源。
应用
应用程序可以添加恰当的注解给 AppGlideModule 实现,以生成灵活的 API,其中包含大多数选项,包括在集成库中定义的选项。
package com.example.myapp;
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;
@GlideModule
public final class MyAppGlideModule extends AppGlideModule {}
默认情况下,生成的 API 会跟您的 AppGlideModule 实现在同一包下,类名为 GlideApp。使用该 API,应用程序可以在所有的负载中用 GlideApp.with() 代替 Glide.with() 。
GlideApp.with(fragment)
.load(myUrl)
.placeholder(placeholder)
.fitCenter()
.into(imageView);
有关更多信息,请参阅 Glide 的 生成的 API 页面。
ListView 和 RecyclerView
在 ListView 或者 RecyclerView 中加载图像使用相同的加载行,就像加载到单个的 View 一样。Glide 会处理 View 的复用跟请求的自动取消。
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
String url = urls.get(position);
Glide.with(fragment)
.load(url)
.into(holder.imageView);
}
您不需要检测您传递的 URL 是否为空,如果 URL 为空,Glide 会清除这个 View 或者使用您指定的占位图像,或者回调的图像。
Glide 唯一的要求是,对于任何可重用的目标 View,您可以复用之前的 View 加载新的图像或者调用 clare() API 来显示的清除。
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
if (isImagePosition(position)) {
String url = urls.get(position);
Glide.with(fragment)
.load(url)
.into(holder.imageView);
} else {
Glide.with(fragment).clear(holder.imageView);
holder.imageView.setImageDrawable(specialDrawable);
}
}
通过调用 clear() 或者 into(view) 方法作用在 View 上,您可以取消负载或者保证 Glide 在调用完成之后不会改变 View 的内容。如果您忘记调用 clear() 方法并且没有在该 View 上开启新的图像负载,那么在复用之前的位置的 View 时,您将不能指定 Drawable,并且可能会加载到老的图像从而改变 View 的内容。
虽然,我们在这里展示的示例是 RecyclerView,但同样的原则也适用于 ListView。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论