可绘制动画

可绘制动画(Drawable Animation)可以按顺序加载一系列的Drawable资源产生动画效果,它的原理类似于播放动画片,一帧一帧展示图片,具体播放使用AnimationDrawable类。

使用可绘制动画时,首先需要定义其XML文件:

1
2
3
4
5
6
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true">
<item android:drawable="@drawable/rocket_thrust1" android:duration="200" />
<item android:drawable="@drawable/rocket_thrust2" android:duration="200" />
<item android:drawable="@drawable/rocket_thrust3" android:duration="200" />
</animation-list>

注意要将android:oneshot属性设置为true,这样动画会播放一次,否则,动画会循环播放。定义好的XML文件可作为View的背景图片,具体播放过程如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
AnimationDrawable rocketAnimation;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image);
rocketImage.setBackgroundResource(R.drawable.rocket_thrust);
rocketAnimation = (AnimationDrawable) rocketImage.getBackground();
}

public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
rocketAnimation.start();
return true;
}
return super.onTouchEvent(event);
}

注意动画的播放方法start()不能在onCreate()方法执行,因为这个时候动画还没被加载到Activity的Window上。如果需要在没有交互的情况下播放可绘制动画,可以在Activity的onWindowFocusChanged()中进行。

坚持原创技术分享,您的支持将鼓励我继续创作!