在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);
效果: