滑行-加载GIF作为占位符

时间:2018-12-24 19:04:19

标签: android image gif android-glide

我在Android项目中使用的是Glide,我有一个RecyclerView,其中包含CardView的列表。我想做的是为每个CardView加载一个图像,同时显示一个GIF加载图像,直到真实图像被加载为止。现在,如果它尝试加载GIF作为主图像,那就没问题了:

Glide.with(context)
        .load(R.raw.gif_loading_bar)
        .into(imageView);

上面的代码工作正常,并且GIF被加载。但是,当我尝试加载另一张图片并将GIF用作占位符Android Studio时显示错误“可绘制类型的预期资源”

Glide.with(mContext)
        .setDefaultRequestOptions(new RequestOptions()
                .placeholder(R.raw.gif_loading_bar))
        .load(imageUrl)
        .into(imageView);

该如何解决?

3 个答案:

答案 0 :(得分:0)

这应该可以完成工作:

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);

更多信息herehere

答案 1 :(得分:0)

很遗憾,Glide不支持this Github issuethis one中提到的GIF占位符。

答案 2 :(得分:0)

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)
  

它做什么

它将gif加载为缩略图,直到从源下载图像为止。 在 onResourceReady 方法中,它将在资源准备就绪时为您提供回调。确保将 gif文件放在R.raw 包下,并且不要放在drawable 包下。让我知道您是否遇到任何问题。