我想在我的应用程序中显示动画GIF图像。 我发现Android本身并不支持GIF动画。
但是它可以使用AnimationDrawable显示动画:
开发>指南>图像和图形>绘图概述
这个例子使用动画保存为框架的应用程序资源,但我需要的是直接显示动画gif。
我的计划是将动画GIF分解为帧,并将每帧添加为可绘制的AnimationDrawable。
有人知道如何从动画GIF中提取帧并将它们转换为可绘制的吗?
我想在我的应用程序中显示动画GIF图像。 我发现Android本身并不支持GIF动画。
但是它可以使用AnimationDrawable显示动画:
开发>指南>图像和图形>绘图概述
这个例子使用动画保存为框架的应用程序资源,但我需要的是直接显示动画gif。
我的计划是将动画GIF分解为帧,并将每帧添加为可绘制的AnimationDrawable。
有人知道如何从动画GIF中提取帧并将它们转换为可绘制的吗?
当前回答
@PointerNull给出了很好的解决方案,但并不完美。它不能在一些大文件的设备上工作,并显示有bug的Gif动画与前ICS版本的delta帧。 我找到了没有这个bug的解决方案。它是带有原生解码到可绘制的库:koral的android-gif-drawable。
其他回答
我找到了一个非常简单的方法,这里有一个很好的简单的工作例子
显示动画小部件
在让它工作之前,在代码中有一些更改要做
在下面
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceStated);
setContentView(new MYGIFView());
}
}
只是替换
setContentView(new MYGIFView());
in
setContentView(new MYGIFView(this));
而在
public GIFView(Context context) {
super(context);
提供您自己的gif动画文件
is = context.getResources().openRawResource(R.drawable.earth);
movie = Movie.decodeStream(is);
}
替换第一行
public MYGIFView(Context context) {
根据课程名称…
在做了这个小改变后,它应该为我工作…
希望这对你有所帮助
为了节省资源,有滑翔库。 不知道为什么要使用其他任何东西,特别是webview只显示图像。 Glide是一个完美而简单的库,它可以从gif中准备动画,并将其直接放到imageview中。 gifdrawable句柄动画本身的逻辑。 Gif有lzw压缩原始rgb数据的动画里面。 没有理由复杂的使用webview和管理更多的文件,只显示一个gif文件在应用程序。
只是想补充一点,Movie类现在已弃用。
这个类在API级别P中已弃用。
建议使用此方法
AnimatedImageDrawable
用于绘制动画图像(如GIF)。
使用ImageViewEx,一个库,使使用gif像使用ImageView一样简单。
首先,Android浏览器应该支持动画gif。如果没有,那就是bug!看一下问题跟踪器。
如果你在浏览器外显示这些动画gif,情况可能就不一样了。要做到你所要求的,将需要外部库,支持动画gif解码。
第一个接口是Java2D或JAI (Java Advanced Imaging) API,如果Android Dalvik在你的应用程序中支持这些库,我会感到非常惊讶。