Android开发者指南-Drawable 动画-Drawable Animation[原创译文]

来源:互联网 发布:文员office办公软件 编辑:程序博客网 时间:2024/06/14 03:32
Animation:

Drawable Animation


英文原文:http://developer.android.com/guide/topics/graphics/drawable-animation.html

版本:Android 4.0 r1

Drawable 动画可以按顺序装载一系列 Drawable 资源,以便创建动画并显示。这是传统的动画方式,把一系列不同的图片按顺序显示出来,就像播放电影胶片一样。 Drawable 动画的基础是 AnimationDrawable 类。

如果要用代码来定义动画的各个帧,请使用 AnimationDrawable 类的 API。不过更简便的方式是用一个 XML 文件来实现,其中列出了组成动画的所有帧。 这个 XML 文件位于 Android 项目的 res/drawable/ 目录下,内含了每个动画帧的显示顺序、持续时间等定义。

XML 文件由一个 <animation-list> 根元素和一系列 <item> 子节点组成,每个子节点定义了一个帧:一个作为帧显示的 drawable 资源和显示的持续时间。 以下是 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>

这个动画只显示了三帧。android:oneshot 属性设置为 true表示只播放一次,然后停止并保持显示于最后一帧。 如果该属性设为 false,则动画将会循环播放。 这段 XML 保存于项目 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() 方法中调用,窗口获得焦点时 Android 系统将会调用该方法。

有关 XML 语法的详情、支持的标记和属性,请参阅 Animation Resources。

原创粉丝点击