欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Drawable Animation

程序员文章站 2022-03-16 14:36:50
...

Drawable Animation允许你定义一组Drawable资源来创建动画效果,即由Drawable资源组成的帧动画,一般使用一组图片来,通过定义播放行为属性顺序播放图片资源来实现动画效果。AnimationDrawable用来处理用户定义的Drawable Animation。用户可以把Drawable Animation定义为Drawable并放在 res/drawable/ 目录下,与之定义的xml标签是<animation-list>。官方给出的标准定义如下:

<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:播放一次并停在最后一帧

  • android:duration
    duration用来设置该帧动画的持续时间

如何在代码中使用该动画资源呢,官方给出的示例代码如下

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);
}

另外,官方建议我们不要再onCreate中执行动画的start方法,因为此时AnimationDrawable还没有真正的被加载到窗口中来。我们可以放在用户点击某个按钮时,或者是放到Activity的onWindowFocusChanged()方法中。