如何使用Glide从drawable文件夹中加载GIF图像到ImageView?

7

我需要使用Glide来展示从drawable中加载的GIF图像到ImageView上。我已经尝试了以下方法。

Glide.with(LoginActivity.this)
                .load(getResources().getDrawable(R.drawable.bg_gif)).asGif()
                .crossFade()
                .into(relativeLayout);

但似乎不起作用,只有当我将图像放置在raw文件夹中时才有效。但问题是我必须使用不同尺寸的图像。

任何帮助都将不胜感激。


你正在尝试将图像加载到相对布局中吗? - Shoeb Siddique
一些重要的链接-
  1. https://github.com/bumptech/glide
  2. http://inthecheesefactory.com/blog/get-to-know-glide-recommended-by-google/en
- Shoeb Siddique
5个回答

15

你可以尝试使用Ion,对我来说它很好用。 Ion

使用Ion

 Ion.with(imgView)
.error(R.drawable.default_image)
.animateGif(AnimateGifMode.ANIMATE)
.load("file:///android_asset/animated.gif");

使用Glide

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

另一种方法

对于Glide 3.0,您需要更早地设置asGif()

Glide.with(context)
    .load(imageUrl)
    .asGif()
    .placeholder(R.drawable.loading2)
    .crossFade()
    .into(imageView);

请记住,仅使用load()将根据数据类型加载GIF或位图。除非你希望在给定的URL不是gif时load()失败,否则不需要指定asGif()


这是一种替代方案,请回答我的问题。 - Stella
我已经尝试了你的两个代码,但是都没有为我显示动画。我正在使用Glide。 - user5399980
@Skizo-ozᴉʞS 是一个可以在 ImageView 中显示 Drawable 的目标。 - Kristo
1
使用 DrawableImageViewTarget 替换较新版本的 Glide 中的 GlideDrawableImageViewTarget - Alston
@davids。所以我告诉你,对于新的Glide版本,你选择的API已被弃用。你需要使用上面的新API。 - Alston
显示剩余3条评论

8

直接将资源id传递给load()方法:

Glide.with(LoginActivity.this)
            .load(R.drawable.bg_gif)
            .asGif()  // you may not need this
            .crossFade()
            .into(relativeLayout);

它对我来说完美地运行 - 我编写并执行了代码。您可能需要考虑一下您的ImageView是否正确可见。 - Doug Stevenson

3

从drawable文件夹加载Gif图片的步骤

  1. 将您的Gif图片移动到项目的res/raw文件夹中 (如果您的项目在资源目录中没有raw文件夹,则只需创建一个并将gif放入其中)

  2. 然后,您只需要一行代码就可以轻松加载您的gif了

Glide.with(this)
                  .load(R.raw.splash)
                  .into(new GlideDrawableImageViewTarget(
                          (ImageView) findViewById(R.id.image)));

1
对于Glide 4。
GlideApp.with(this)
            .load(R.raw.gif_file)
            .diskCacheStrategy(DiskCacheStrategy.NONE)
            .into(imageView);

1
将您的Gif放置在“raw”文件夹中,然后使用该代码:

  GlideDrawableImageViewTarget imageViewTarget = new GlideDrawableImageViewTarget(imageView);
    Glide.with(this).load(R.raw.test).into(imageViewTarget);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接