首页 > 学院 > 开发设计 > 正文

安卓动画 - 帧动画AnimationDrawable

2019-11-11 04:54:05
字体:
来源:转载
供稿:网友
虽然我们可以通过 AnimationDrawable 类的 API 在代码中定义一个动画的所有帧,但通过一个包含所有帧的 xml 文件来完成一个动画会更加的简单。这个 XML 文件应该被创建在 Android 项目的 /res/drawable/ 目录下,这样动画内的每一帧就会按照顺序和固定的时间间隔来播放。
<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android"   android:oneshot="true">   <item android:drawable="@drawable/scan1" android:duration="100" />   <item android:drawable="@drawable/scan2" android:duration="100" />   <item android:drawable="@drawable/scan3" android:duration="100" />   <item android:drawable="@drawable/scan4" android:duration="100" /></animation-list>

通过上面的代码我们可以看到,这个动画包含 4 帧。另外我们可以通过设置 </animation-list> 节点下的 android:oneshot 属性来控制动画的循环次数,如果将android:oneshot 的属性设置为 true,那么这个动画只会循环一次并停留在最后一帧。如果设置为 false,那么这个动画将会不停的循环下去。将这个文件命名文 scan.xml 并保存到项目的 /res/drawable/ 目录下,然后它就可以当作背景图片被添加到另一个视图上,并被调用显示。参见如下代码:

package cn.hengyi.animationtest;import android.app.Activity;import android.graphics.drawable.AnimationDrawable;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.widget.ImageView;public class MainActivity extends Activity {   PRivate ImageView scanView;   private AnimationDrawable scanAnimation;   public void onCreate(Bundle savedInstanceState) {       super.onCreate(savedInstanceState);       setContentView(R.layout.activity_main);       scanView = (ImageView) findViewById(R.id.iv_scan);       scanView.setBackgroundResource(R.drawable.scan);       scanAnimation = (AnimationDrawable) scanView.getBackground();   }   public void start(View view) {       scanAnimation.start();   }   public boolean onCreateOptionsMenu(Menu menu) {       getMenuInflater().inflate(R.menu.activity_main, menu);       return true;   }}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表