android中的逐帧动画

  在android中实现动画最简单的一种方式就是使用逐帧动画(AnimationDrawable).逐帧动画的原理同最古老的动画机制是一样的,通过快速的播放一组变化微小的图片,在人眼的视差时间下,达到一种连续播放的效果。逐帧动画涉及到的类是AnimationDrawable,这个类是一个Drawable类,因此需要将该类设置为一个view的background,然后让背景动起来。

  定义一个AnimationDrawable:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:oneshot="false">
 4     <item
 5         android:drawable="@drawable/radar_001"
 6         android:duration="30" />
 7     <item
 8         android:drawable="@drawable/radar_002"
 9         android:duration="30" />
10     <item
11         android:drawable="@drawable/radar_003"
12         android:duration="30" />
13     <item
14         android:drawable="@drawable/radar_004"
15         android:duration="30" />
16     <item
17         android:drawable="@drawable/radar_005"
18         android:duration="30" />
19     <item
20         android:drawable="@drawable/radar_006"
21         android:duration="30" />
22 
23 </animation-list>

android:oneshot表示动画是否循环播放,如果是true,表示只播放一次;如果是false,循环播放

调用动画:

1   AnimationDrawable ad = (AnimationDrawable)mImageView.getBackground();
2   ad.start();

也可以在代码中实例化一个AnimationDrawable对象

1   AnimationDrawable ad2 = new AnimationDrawable();
2   ad2.addFrame(this.getResources().getDrawable(R.drawable.radar_001), 50);
3   ad2.addFrame(this.getResources().getDrawable(R.drawable.radar_002), 50);
4   ad2.setOneShot(false);

效果:

原文地址:https://www.cnblogs.com/summerpxy/p/4931310.html