我想在我的应用程序中显示动画GIF图像。 我发现Android本身并不支持GIF动画。

但是它可以使用AnimationDrawable显示动画:

开发>指南>图像和图形>绘图概述

这个例子使用动画保存为框架的应用程序资源,但我需要的是直接显示动画gif。

我的计划是将动画GIF分解为帧,并将每帧添加为可绘制的AnimationDrawable。

有人知道如何从动画GIF中提取帧并将它们转换为可绘制的吗?


当前回答

更新:

使用滑动:

dependencies {
  implementation 'com.github.bumptech.glide:glide:4.9.0'
}

用法:

Glide.with(context).load(GIF_URI).into(new DrawableImageViewTarget(IMAGE_VIEW));

看文档

其他回答

直接从URL到应用程序布局显示动画GIF的简单方法是使用WebView类。

步骤1: 在XML布局中

< WebView android: id =“@ + id / webView” android: layout_width = " 50 dp” android: layout_height = " 50 dp” />

第二步:在活动中

网络视图 wb; wb = (WebView) findViewById(R.id.webView); wb.loadUrl(“https://.......);

步骤3:在Manifest.XML中设置Internet权限

< uses-permission android: name = " android.permission。互联网" / >

步骤4:如果你想让你的GIF背景透明,让GIF适合你的布局

wb.setBackgroundColor (Color.TRANSPARENT); wb.getSettings () .setLoadWithOverviewMode(真正的); wb.getSettings () .setUseWideViewPort(真正的);

我解决了这个问题,在将gif动画保存到手机之前将其分割成帧,这样我就不必在Android中处理它了。

然后我把每一帧下载到手机上,从中创建Drawable,然后创建AnimationDrawable -非常类似于我的问题中的例子

首先,Android浏览器应该支持动画gif。如果没有,那就是bug!看一下问题跟踪器。

如果你在浏览器外显示这些动画gif,情况可能就不一样了。要做到你所要求的,将需要外部库,支持动画gif解码。

第一个接口是Java2D或JAI (Java Advanced Imaging) API,如果Android Dalvik在你的应用程序中支持这些库,我会感到非常惊讶。

更新:

使用滑动:

dependencies {
  implementation 'com.github.bumptech.glide:glide:4.9.0'
}

用法:

Glide.with(context).load(GIF_URI).into(new DrawableImageViewTarget(IMAGE_VIEW));

看文档

滑翔

Image Loader Library for Android,由谷歌推荐。

Glide和毕加索的很相似,但比毕加索的快得多。 Glide比毕加索消耗的内存要少。

格莱德有而毕加索没有的东西

能够将GIF动画加载到一个简单的ImageView可能是Glide最有趣的功能。是的,你不能这样对待毕加索。 一些重要的环节-

https://github.com/bumptech/glide http://inthecheesefactory.com/blog/get-to-know-glide-recommended-by-google/en