Categories
Android

Android播放gif格式图片

关于gif的播放,Android ApiDemos给出一个实例:

ApiDemos/src/com/example/android/apis/graphics/BitmapDecode.java

小的gif图片用Movie播放还行,大一点的就搞不定了。官方文档说不推荐使用gif格式的。解析gif要占很大的内存,不过你可以把gif分解成N张png格式的,用AnimationDrawable来播放。在MTK,展信平台上,一些连续动画的游戏,也是采用这样样的方法,分解gif为N多个Frame,做过Flash的网页设计师应该是很熟悉了。

在res/anim目录下创建相应的xml文件,举个例子: girl_kiss.xml:

<?xml version="1.0" encoding="UTF-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true" android:visible="true">
<item android:drawable="@drawable/kiss_frame00_160ms" android:duration="160" />
<item android:drawable="@drawable/kiss_frame01_160ms" android:duration="160" />
<item android:drawable="@drawable/kiss_frame02_160ms" android:duration="160" />
<item android:drawable="@drawable/kiss_frame03_160ms" android:duration="160" />
<item android:drawable="@drawable/kiss_frame04_160ms" android:duration="160" />
<item android:drawable="@drawable/kiss_frame05_160ms" android:duration="160" />
<item android:drawable="@drawable/kiss_frame06_160ms" android:duration="160" />
<item android:drawable="@drawable/kiss_frame07_160ms" android:duration="160" />
<item android:drawable="@drawable/kiss_frame08_160ms" android:duration="160" />
<item android:drawable="@drawable/kiss_frame09_160ms" android:duration="160" />
<item android:drawable="@drawable/kiss_frame10_160ms" android:duration="160" />
<item android:drawable="@drawable/kiss_frame11_160ms" android:duration="160" />
<item android:drawable="@drawable/kiss_frame12_160ms" android:duration="160" />
<item android:drawable="@drawable/kiss_frame13_160ms" android:duration="160" />
<item android:drawable="@drawable/kiss_frame14_160ms" android:duration="160" />
<item android:drawable="@drawable/kiss_frame15_0ms" android:duration="0" />
</animation-list>

然后在主程序通过AnimationDrawable来操作。

If you enjoyed this post, make sure you subscribe to my RSS feed!

One reply on “Android播放gif格式图片”

不赞成,我的FileBrowser(文件浏览器)也支持gif动态显示,我是对gif文件进行解析得出的. 再显示. pname:guotao.huizhong.FileBrowser

Leave a Reply

Your email address will not be published. Required fields are marked *