Drawable Animation
Drawable Animation
帧动画能使得你一个接一个的加载一组图片资源来产生动画。这是一种传统的动画方式。通过顺序的播放不同的图片,如同播放一个电影。AnimationDrawable类是Drawable动画(帧动画)的基础。
当你通过代码实现帧动画,你需要使用到AnimationDrawable类的API。而使用一个XML文件列出组成动画的所有帧来实现动画更简单。这种动画的XML文件位于你的Android工程的res/drawable/目录下。这种情况下,XML定义的是动画的帧顺序和每帧持续的时间。
XML文件由<animation-list>元素和一些列的<item>子节点组成。<animation-list>元素作为XML文件的根节点。<item>子节点定义每一帧:每一帧对应一个drawable资源,还有该帧对应的动画持续时间。如下是帧动画的XML文件的例子:
<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>
该动画仅仅只有3帧。通过设置该帧列表的android:oneshot属性为true来设置该动画仅播放一次,然后停留在最后一帧的位置。如果设置为false,动画将无限循环。使用保存在res/drawable/目录下的rocket_thrust.xml文件,可以将该文件定义的动画作为一个背景图片添加在一个View对象上,然后调用该动画播放。如下是一个例子Activity,该例子Activity里,动画被添加到一个ImageView上,然后当触摸屏幕的时候播放动画:
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);
}
注意:在AnimationDrawable上被调用的start()方法不能在Activity里的onCreate()方法里被调用。因为这时AnimationDrawable还没有被附加到window上。如果你想要立即的播放动画,而不需要交互,那么你能在Acitivity的onWindowFocusChanged()方法里调用该方法,这样当Window获取焦点后调用该方法。
关于XML语法、有效标签和属性的更多的介绍,参见Animation Resources
推荐阅读
-
Android开发基于Drawable实现圆角矩形的方法
-
Android对图片Drawable实现变色示例代码
-
Android开发重写Animation实现下拉图片后弹射回去效果示例
-
Android Bitmap和Drawable的对比
-
10分钟入门CSS3 Animation
-
Android开发之图形图像与动画(二)Animation实现图像的渐变/缩放/位移/旋转
-
Android开发之图形图像与动画(三)Animation效果的XML实现
-
css3的动画特效之动画序列(animation)
-
基于android中的各种颜色在drawable.xml中的值详解
-
Android自定义Drawable实现圆角效果