Android中帧动画

package com.example.nationtinalize;

import android.support.v7.app.ActionBarActivity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.widget.ImageView;
/**
 * 帧动画使用步骤:
 * 1 准备好需要播放的一系列图片
 * 2/res/drawable/目录下新建一个xml文件,根节点是<animation-list></animation-list>
 * 3 在新建的xml文件中按照播放图片顺序写好图片
 *      <?xml version="1.0" encoding="utf-8"?>
    <animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/girl_1" android:duration="200" />
    <item android:drawable="@drawable/girl_2" android:duration="200" />
    <item android:drawable="@drawable/girl_3" android:duration="200" />
    <item android:drawable="@drawable/girl_4" android:duration="200" /> 
    <item android:drawable="@drawable/girl_5" android:duration="200" /> 
    <item android:drawable="@drawable/girl_6" android:duration="200" /> 
    <item android:drawable="@drawable/girl_7" android:duration="200" /> 
    <item android:drawable="@drawable/girl_8" android:duration="200" /> 
    <item android:drawable="@drawable/girl_9" android:duration="200" /> 
    <item android:drawable="@drawable/girl_10" android:duration="200" /> 
    <item android:drawable="@drawable/girl_11" android:duration="200" /> 
    </animation-list>

 还可以在xml文件中设置 android:oneshot="true"属性,true表示动画只播放一次,false循环播放,默认是false

 * 4 使用一个控件盛放图片,例如使用Imageview
 * 5 ImageView 的使用步骤:
 *    ImageView img=(ImageView)findViewById(R.id.img);
      img.setBackgroundResource(R.drawable.girls);
 *    animationDrawable=(AnimationDrawable)img.getBackground();
 *   
 * 6 调用动画使用帧动画的start()方法。不能在oncreate()方法中开始动画,因为在开始动画前,图片还没有完全加载,如果需要马上调用动画,可以在如下方法中调用:
 *   @Override
    public void onWindowFocusChanged(boolean hasFocus) {
         if(hasFocus){
             animationDrawable.start();
         }
        super.onWindowFocusChanged(hasFocus);
    }
 * @author Administrator
 *7 也可以点击图片再调用:
 *    @Override
    public boolean onTouchEvent(MotionEvent event) {

        if(event.getAction()==MotionEvent.ACTION_DOWN){
            animationDrawable.start();
            return true;
        }

        return super.onTouchEvent(event);
    }
 */
public class MainActivity extends ActionBarActivity {

     private AnimationDrawable animationDrawable;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ImageView img=(ImageView)findViewById(R.id.img);
        img.setBackgroundResource(R.drawable.girls);
        animationDrawable=(AnimationDrawable)img.getBackground();
    }
    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
         if(hasFocus){
             animationDrawable.start();
         }
        super.onWindowFocusChanged(hasFocus);
    }
//    @Override
//    public boolean onTouchEvent(MotionEvent event) {
//      
//      if(event.getAction()==MotionEvent.ACTION_DOWN){
//          animationDrawable.start();
//          return true;
//      }
//      
//      return super.onTouchEvent(event);
//    }

}

你可能感兴趣的:(动画,android)