转载自:http://mobile.51cto.com/android-224521.htm

本文将为讲解Android中Gif图片播放的教程。Android 中是不支持直接使用Gif 图片关联播放帧动画,如下动画在Android 中是无法播放的:

Android 提供了另外一种解决的办法,就是使用AnimationDrawable 这一函数使其支持逐帧播放,但是如何把gif 图片打散开来,成为每一帧的图片呢?下面介绍两种比较不错的软件,可以帮我们打散图片。

gifsplitter2.0

下载地址:gif分割

使用方法如下:

这一软件分割图片都是bmp图片,图片比较大,这里不推荐使用,尽量节省不必要的字节,所以这里推荐使用如下 软件

easygifanimator

软件下载:动画分割器

使用方法如下:

点击文件将帧文件导出即可

得到了帧文件后我们可以就编写代码,在res目录下新建anim动画文件夹,写下如下代码

        
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <animation-list android:oneshot="false"
  3. xmlns:android="http://schemas.android.com/apk/res/android">

        
  1. <item android:duration="150" android:drawable="@drawable/xiu0" />
  2. <item android:duration="150" android:drawable="@drawable/xiu1" />
  3. <item android:duration="150" android:drawable="@drawable/xiu2" />
  4. <item android:duration="150" android:drawable="@drawable/xiu3" />
  5. </animation-list>

对应的item 为顺序的图片从开始到结束,duration为每张逐帧播放间隔,oneshot 为false 代表循环播放,设置为true 即播放一次即停止。

对应Activity 代码如下编写:

        
  1. import android.app.Activity;
  2. import android.graphics.drawable.AnimationDrawable;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.view.View.OnClickListener;
  6. import android.widget.ImageView;
  7. public class animActivity extends Activity implements OnClickListener {
  8. ImageView iv = null;
  9. /** Called when the activity is first created. */
  10. @Override
  11. public void onCreate(Bundle savedInstanceState) {
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.main);
  14. iv = (ImageView) findViewById(R.id.ImageView01);
  15. iv.setOnClickListener(this);
  16. }
  17. @Override
  18. public void onClick(View v) {
  19. // TODO Auto-generated method stub
  20. AnimationDrawable anim = null;
  21. Object ob = iv.getBackground();
  22. anim = (AnimationDrawable) ob;
  23. anim.stop();
  24. anim.start();
  25. }
  26. }

使用AnimationDrawable 对象获得图片的图片,然后指定这个AnimationDrawable 开始播放动画

Tip:使用此方法不会默认播放,必须要有事件触发才可播放动画,如上面的通过点击监听触发动画的播放

那么如何使用图片自动播放呢?我们可以联想一下,ProgressBar 是不是默认的时候就会转,那就是那个圆形的进度条,是的。我们可以对它进行改造合它也可以自动播放,在Values 文件下新建一个styles 文件,编写如下代码 :

        
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <resources>
  3. <style name="animStyle" parent="@android:style/Widget.ProgressBar.Large">
  4. <item name="android:indeterminateDrawable">@anim/test</item>
  5. </style>
  6. </resources>

上面样式文件自Widget.ProgressBar.Large 为其设置动画文件,我们在XML中就可以通过设置它的样式使其为我们工作

        
  1. <ProgressBar android:id="@+id/ProgressBar01" style="@style/animStyle"
  2. android:layout_width="128px" android:layout_height="128px"></ProgressBar>

OK,就是这么简单,下面看看运行效果:

更多相关文章

  1. android流媒体播放器
  2. Android除了三大动画,还有哪些动画?
  3. 安卓View理解总结
  4. Android动态加载外部jar包及jar包中图片等资源文件
  5. Android简单音乐播放器
  6. 谁说Android的动画不廉价(四)之元素动画
  7. Android实现网络视频播放
  8. Android(安卓)视频列表(RecyclerView)实现自动播放
  9. 浅谈android中的图片处理之基本绘图(一)

随机推荐

  1. Android导入第三方jar包,proguard混淆脚本
  2. android 同时发送几条通知
  3. 自定义RatingBar的样式
  4. 记一次Android(安卓)OOM探险之旅
  5. 从网络获取图片,并缓存到SD卡
  6. Picasso学习
  7. 最新Android系统版本与API等级对应关系表
  8. Android AsyncTask 深入解析
  9. Android 中的定时事件使用
  10. Android(安卓)Notification.Builder通知