如何在Android中动画.gif图像?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (33)

这里是xml的代码:

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/minepic" />

这里的minepic是一个GIF动画图像,但运行该应用程序后,它只是显示一个静态图像:

有没有解决方案如何动画Android应用程序中的.gif图像?

提问于
用户回答回答于

我不会推荐使用MovieWebView类,ImageView而是使用源可绘制设置animation-list。看看example(mydrawable.xml):

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/image_1" android:duration="100" />
<item android:drawable="@drawable/image_2" android:duration="100" />
<item android:drawable="@drawable/image_3" android:duration="100" />
</animation-list> 

// in your layout : <ImageView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:src="@drawable/my_drawable" />
用户回答回答于

为了在这里给出一个精确和完整的答案,你需要做一些步骤:

  1. 你需要有不同的.png图像,这些图像将用作动画的框架。将它们保存在res/drawable文件夹中
  2. 使用以下内容anim.xmlres/drawable文件夹中创建文件: <?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/image_3" android:duration="250" /> <item android:drawable="@drawable/image_2" android:duration="250" /> <item android:drawable="@drawable/image_1" android:duration="250" /> <item android:drawable="@drawable/image" android:duration="250" /> </animation-list>
  3. xml你想要显示动画的布局文件中: //... <ImageView android:id="@+id/iv_animation" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:contentDescription="Animation" /> //...
  4. 在装载布局xml文件并调用的Java文件中 setContentView//... @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final ImageView animImageView = (ImageView) findViewById(R.id.iv_animation); animImageView.setBackgroundResource(R.drawable.anim); animImageView.post(new Runnable() { @Override public void run() { AnimationDrawable frameAnimation = (AnimationDrawable) animImageView.getBackground(); frameAnimation.start(); } }); // ... other code ... } // ...

扫码关注云+社区

领取腾讯云代金券