当前位置: 代码迷 >> Android >> Android绘图动画片-Drawable Animation
  详细解决方案

Android绘图动画片-Drawable Animation

热度:205   发布时间:2016-05-01 18:05:31.0
Android绘图动画---Drawable Animation

本文译自:http://developer.android.com/guide/topics/graphics/drawable-animation.html

绘图动画会让你依次的加载一系列的绘图资源来创建一个动画。这种动画是一种传统动画,它是用不同的图片序列来创建并依次播放的,看上去像放电影。AnimationDrawable类是绘图动画的基类。

你能够使用AnimationDrawable类的API在代码中定义动画的帧,但是,用一个单独的定义了组成动画帧的列表的XML来完成动画会更加简单。这种类型动画的XML文件要放在你的Android工程的res/drawable/目录中。这种情况下,指令是动画的播放顺序和每一帧动画的播放时间。
这个动画XML文件是由一个<animation-list>根元素和一系列的定义每一帧的<item>子元素组成。<item>元素定义了每一帧的绘图资源和播放时长。以下是绘图动画的一个示例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>

这个动画只有三个帧。通过把第一帧动画的android:oneshot属性设置为true,让动画播放一次,然后在最后一帧停止。如果它被设置为false,那么动画将会循环播放。使用这个保存在工程的res/drawable/目录中的rocket_thrust.xml文件,能够把一个背景图片添加到一个View对象上,然后播放动画。下面示例的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);

}

注意,在Activity的onCreate()方法执行期间,不能调用AnimationDrawable对象上的start()方法,这是至关重要的,因为AnimationDrawable对象在这时还没有跟窗口绑定。如果要立即播放动画,不需要交互,你可以在Activity的onWindowFocusChanged()回调方法中调用star()方法,onWindowFocusChanged()方法会在窗口获取焦点时被Android系统调用。

关于XML语法、可用的标签属性的更多信息,请看“动画资源”(http://developer.android.com/guide/topics/resources/animation-resource.html

 

 

 

  相关解决方案