Frame Animation 帧动画

来源:互联网 发布:这个驸马有淘宝gl乐文 编辑:程序博客网 时间:2024/05/07 07:31

Frame Animation (又叫Drawable Animation),类似于电影的播放,是一帧一帧的播放不同的图像序列!
AnimationDrawable 是帧动画的核心实现类!

相比较在代码中庸AnimationDrawable实现帧动画,用xml的方式更加方便且易于维护和修改!

  • res/drawable/路径下面定义xml文件。定义构成帧动画的不同图像的顺序和持续时间。 animation-list 作为xml的根元素,item表示每个帧的图像资源和持续时间

这里写图片描述

<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android"    android:oneshot="true" >    <item        android:duration="300"        android:drawable="@drawable/krystal01">    </item>    <item        android:duration="300"        android:drawable="@drawable/krystal02">    </item>    <item        android:duration="300"        android:drawable="@drawable/krystal03">    </item>    <item        android:duration="300"        android:drawable="@drawable/krystal04">    </item></animation-list>
  • 在代码中为View设置并启动帧动画
package com.example.frameanimation;import android.app.Activity;import android.app.ActionBar;import android.app.Fragment;import android.graphics.drawable.AnimationDrawable;import android.os.Bundle;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.MotionEvent;import android.view.View;import android.view.ViewGroup;import android.view.animation.Animation;import android.widget.ImageView;import android.os.Build;public class MainActivity extends Activity {    private ImageView imageView;    // 帧动画    private AnimationDrawable animationDrawable;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        imageView = (ImageView) findViewById(R.id.imageView1);        // 将帧动画设置为imageView的背景,然后启动动画        imageView.setBackgroundResource(R.drawable.rocket_thrust);        animationDrawable = (AnimationDrawable) imageView.getBackground();    }    @Override    public boolean onTouchEvent(MotionEvent event) {        if (event.getAction() == MotionEvent.ACTION_DOWN) {            // 帧动画的 start()方法,不能再onCreate()方法中执行,因为AnimationDrawable还没有连接到Window            // 如果你想要立即执行动画,你可以在activity的 onWindowFocusChanged() 调用start()方法,当window获得焦点就会执行            animationDrawable.start();            return true;        }        return super.onTouchEvent(event);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroidManifest.xml.        int id = item.getItemId();        if (id == R.id.action_settings) {            return true;        }        return super.onOptionsItemSelected(item);    }}
  • 运行结果

这里写图片描述

0 0
原创粉丝点击