Glide - 加载 GIF 作为占位符
Glide - Load a GIF as a placeholder
我在我的 Android 项目中使用 Glide
,我有一个 RecyclerView
,其中包含 CardView
的列表。我想做的是为每个 CardView
加载图像,同时显示 GIF
加载图像,直到加载真实图像。现在,如果它尝试加载 GIF
作为主图像,没问题:
Glide.with(context)
.load(R.raw.gif_loading_bar)
.into(imageView);
上面的代码工作正常并且 GIF
被加载。但是当我尝试加载另一个图像并将 GIF
设为占位符时 Android Studio
显示错误 "Expected resource of type drawable":
Glide.with(mContext)
.setDefaultRequestOptions(new RequestOptions()
.placeholder(R.raw.gif_loading_bar))
.load(imageUrl)
.into(imageView);
我应该怎么做才能解决这个问题?
这应该可以完成工作:
ImageView imageView = (ImageView) findViewById(R.id.imageView);
GlideDrawableImageViewTarget imageViewTarget = new
GlideDrawableImageViewTarget(imageView);
Glide.with(context)
.asGif()
.setDefaultRequestOptions(new RequestOptions()
.placeholder(R.raw.gif_loading_bar))
.load(imageUrl)
.into(imageView);
很遗憾,Glide
不支持 GIF
占位符,如 this Github issue, and this one 中所述。
Glide 支持 GIF 作为占位符。我最近遇到了这种情况并像下面这样解决了。希望对遇到这种情况的我有帮助。
var builder = Glide.with(mContext).load(path).apply(options).thumbnail(Glide.with(mContext).load(R.raw.loader2))
if (listener == null) {
builder = builder.addListener(object : RequestListener<Drawable> {
override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean {
//TODO; your code here
return false
}
override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
//TODO; your code here
return false
}
})
} else {
builder = builder.addListener(listener)
}
builder.into(myImageView)
What it does
它加载您的 gif 作为缩略图,直到从源下载图像。
在 onResourceReady 方法中,它将在资源准备就绪时为您提供回调。确保将 gif 文件放在 R.raw 包下并且 不在 drawable 包下。如果您遇到任何问题,请告诉我。
只需确保根据您的代码更改 getContext()
。例如,在我的例子中,我将它传递为 holder.img.getContext()
Glide.with(getContext()).load(item[position])
.thumbnail(Glide.with(getContext()).load(R.drawable.gif_image))
.fitCenter()
.crossFade()
.into(imageView);
我在我的 Android 项目中使用 Glide
,我有一个 RecyclerView
,其中包含 CardView
的列表。我想做的是为每个 CardView
加载图像,同时显示 GIF
加载图像,直到加载真实图像。现在,如果它尝试加载 GIF
作为主图像,没问题:
Glide.with(context)
.load(R.raw.gif_loading_bar)
.into(imageView);
上面的代码工作正常并且 GIF
被加载。但是当我尝试加载另一个图像并将 GIF
设为占位符时 Android Studio
显示错误 "Expected resource of type drawable":
Glide.with(mContext)
.setDefaultRequestOptions(new RequestOptions()
.placeholder(R.raw.gif_loading_bar))
.load(imageUrl)
.into(imageView);
我应该怎么做才能解决这个问题?
这应该可以完成工作:
ImageView imageView = (ImageView) findViewById(R.id.imageView);
GlideDrawableImageViewTarget imageViewTarget = new
GlideDrawableImageViewTarget(imageView);
Glide.with(context)
.asGif()
.setDefaultRequestOptions(new RequestOptions()
.placeholder(R.raw.gif_loading_bar))
.load(imageUrl)
.into(imageView);
很遗憾,Glide
不支持 GIF
占位符,如 this Github issue, and this one 中所述。
Glide 支持 GIF 作为占位符。我最近遇到了这种情况并像下面这样解决了。希望对遇到这种情况的我有帮助。
var builder = Glide.with(mContext).load(path).apply(options).thumbnail(Glide.with(mContext).load(R.raw.loader2))
if (listener == null) {
builder = builder.addListener(object : RequestListener<Drawable> {
override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean {
//TODO; your code here
return false
}
override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
//TODO; your code here
return false
}
})
} else {
builder = builder.addListener(listener)
}
builder.into(myImageView)
What it does
它加载您的 gif 作为缩略图,直到从源下载图像。 在 onResourceReady 方法中,它将在资源准备就绪时为您提供回调。确保将 gif 文件放在 R.raw 包下并且 不在 drawable 包下。如果您遇到任何问题,请告诉我。
只需确保根据您的代码更改 getContext()
。例如,在我的例子中,我将它传递为 holder.img.getContext()
Glide.with(getContext()).load(item[position])
.thumbnail(Glide.with(getContext()).load(R.drawable.gif_image))
.fitCenter()
.crossFade()
.into(imageView);