我必须将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?我想念什么吗?
答案 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);
}
}
});