使用Glide显示GIF文件(图像加载和缓存库)

mah*_*di 50 android gif imageview android-glide

我尝试在图像视图中显示GIF图像作为加载占位符 - 使用Glide库:

Glide.with(context)
    .load(ImageUrl())
    .placeholder(R.drawable.loading2)
    .asGif()
    .crossFade()
    .into(image);
Run Code Online (Sandbox Code Playgroud)

我试着显示这个文件

loading2.gif

但得到这个错误:

错误:(54,86)错误:无法找到符号方法asGif()

如何在imageView中使用Glide显示GIF文件?

Pre*_*tam 120

上述答案对我不起作用.以下代码有效.

ImageView imageView = (ImageView) findViewById(R.id.imageView);
GlideDrawableImageViewTarget imageViewTarget = new GlideDrawableImageViewTarget(imageView);
Glide.with(this).load(R.raw.sample_gif).into(imageViewTarget);
Run Code Online (Sandbox Code Playgroud)

  • 我不知道为什么,但这真的**对我有用,而`asGif()`只是让整个事情消失了. (4认同)
  • 这个答案只显示了gif文件.它不像占位符那样工作.当图像像占位符一样加载时,如何使用此答案显示gif文件? (4认同)
  • 您能解释一下GlideDrawableImageViewTarget的目的吗? (2认同)
  • @Jaydev 我关注了 Nick Butcher 的“Plaid”应用程序的源代码。我尝试了 Glide doc 中的所有内容,但都没有奏效。 (2认同)

Sac*_*pan 27

对于Glide 4. +

ImageView imageView = (ImageView) findViewById(R.id.imageView);
Glide.with(this).asGif().load(R.raw.image_gif).into(imageView);
Run Code Online (Sandbox Code Playgroud)


Sam*_*udd 20

对于Glide 3.0,您需要先设置asGif():

Glide.with(context)
    .load(imageUrl)
    .asGif()
    .placeholder(R.drawable.loading2)
    .crossFade()
    .into(imageView);
Run Code Online (Sandbox Code Playgroud)

请记住,只需使用load()将根据数据类型加载GIF或位图.如果您希望加载失败,如果给定的URL不是gif,则无需指定asGif()

  • 无法解析方法'asGif()'消息正在显示 (2认同)

小智 13

我有同样的问题.您可以通过移动它所在的asGif()位置来解决它.它必须直接来.load().

所以改变:

Glide.with(context)
    .load(ImageUrl())
    .placeholder(R.drawable.loading2)
    .asGif()  
    ....
Run Code Online (Sandbox Code Playgroud)

Glide.with(context)
     .asGif()         
     .load(ImageUrl())
     .placeholder(R.drawable.loading2)
    ....
Run Code Online (Sandbox Code Playgroud)


Ram*_*yer 7

这是另一个例子。我观察到 Glide 有时不会自动播放 Gif。这个解决方案对我有用:

在示例中,imageView是 RecyclerView 的 ViewHolder 类中的成员之一。

Glide.with(itemView.getContext())
    .asGif()
    .load(thumbPath)                             
    .placeholder(ResourcesCompat.getDrawable(context.getResources(), 
                     R.drawable.image_loading_placeholder, null))
    .centerCrop()
    .into(new ImageViewTarget<GifDrawable>(imageView) {
         @Override
         protected void setResource(@Nullable GifDrawable resource) {
             imageView.setImageDrawable(resource);
         }
     });
Run Code Online (Sandbox Code Playgroud)

.asGif() 方法需要提前使用,否则无法识别


Arp*_*ain 5

Glide自动播放gif动画文件,无需额外方法

使用下面的代码

Glide.with(this)
   .load(R.drawable.logo)
   .into(imageView);
Run Code Online (Sandbox Code Playgroud)

  • 您确实应该添加一些关于为什么这应该起作用的解释 - 您还可以添加代码以及代码本身中的注释 - 在其当前形式中,它没有提供任何可以帮助社区其他人理解什么的解释你这样做是为了解决/回答问题。这对于较旧的问题和已经有答案的问题尤其重要。 (2认同)