通过Glide在线性布局中将GIF加载为背景

时间:2018-06-20 12:54:30

标签: android gif android-glide

我必须将GIF图像设置为线性布局的背景。我正在使用以下代码

final LinearLayout layoutMain = (LinearLayout) findViewById(R.id.main_layout);

Glide.with(this).load(R.raw.game_screen_background)
     .into(new SimpleTarget<Drawable>() {
         @Override
         public void onResourceReady(Drawable resource, Transition<? super Drawable> transition) {
             layoutMain.setBackground(resource);
         }
     });

但是它没有将GIF设置为背景。 GIF在原始文件夹中,我正在使用以下下滑依赖项

implementation 'com.github.bumptech.glide:glide:4.7.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'

为什么不加载GIF?我想念什么吗?

1 个答案:

答案 0 :(得分:0)

我认为可能是final引起的问题。您可以将其删除并尝试以这种方式。并且您像asGif()一样失踪。 您可以像这样在LinearLayout中加载图像。我只是向您展示将图像设置为背景的困难部分。

对于4.X之前的Glide版本

如果您提供的来源不是Gif,可能只是普通图像,则无法注册该问题。 Glide接受Gif或图片作为load()参数。如果您(开发人员)期望URL是Gif(事实并非如此),则Glide无法自动检测到该URL。因此,他们引入了另一种方法来迫使Glide期望Gif asGif(),并且您可以调用 asBitmap()以保证显示为常规图像。

根据本文档https://futurestud.io/tutorials/glide-displaying-gifs-and-videos

赞: 对于4.X之前的Glide版本

LinearLayout layoutMain = (LinearLayout) findViewById(R.id.main_layout);


    Glide.with(this).load(R.raw.game_screen_background)
            .asGif()
            .into(new SimpleTarget<Drawable>() {
                @Override
                public void onResourceReady(Drawable resource, Transition<? super Drawable> transition) {
                    layoutMain.setBackground(resource);
                }
            });

Gide v4及更高版本的更新:

LinearLayout layoutMain = (LinearLayout) findViewById(R.id.main_layout);
GlideApp.with(this).load(R.drawable.backgroundimage).into(new SimpleTarget<Drawable>() {
            @Override
            public void onResourceReady(Drawable resource, Transition<? super Drawable> transition) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                    layoutMain.setBackground(resource);
                }
            }
        });