您的位置:首页 > 移动开发 > Android开发

Android Frame动画实例

2013-08-19 10:36 253 查看
具体的上一章已经介绍,直接上代码:

 

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.drawable.AnimationDrawable;

import android.graphics.drawable.Drawable;

import android.view.KeyEvent;

import android.view.View;

public class GameView extends View

{

 /* 定义AnimationDrawable动画 */

 private AnimationDrawable frameAnimation = null;

 Context      mContext  = null;

 

 /* 定义一个Drawable对象 */

 Drawable    mBitAnimation    = null;

 public GameView(Context context)

 {

  super(context);

  

  mContext = context;

  

  /* 实例化AnimationDrawable对象 */

  frameAnimation = new AnimationDrawable();

  

  /* 装载资源 */

  //这里用一个循环了装载所有名字类似的资源

  //如“a1.......15.png”的图片

  //这个方法用处非常大

  for (int i = 1; i <= 15; i++)

  {

   int id = getResources().getIdentifier("a" + i, "drawable", mContext.getPackageName());

   mBitAnimation = getResources().getDrawable(id);

   /* 为动画添加一帧 */

   //参数mBitAnimation是该帧的图片

   //参数500是该帧显示的时间,按毫秒计算

   frameAnimation.addFrame(mBitAnimation, 500);

  }

  

  /* 设置播放模式是否循环false表示循环而true表示不循环 */

  frameAnimation.setOneShot( false ); 

  

  /* 设置本类将要显示这个动画 */

  this.setBackgroundDrawable(frameAnimation);

 }

 

 public void onDraw(Canvas canvas)

 {

  super.onDraw(canvas);

  

 }

 

 public boolean onKeyUp(int keyCode, KeyEvent event)

 {

  switch ( keyCode )

  {

  case KeyEvent.KEYCODE_DPAD_UP:  

   /* 开始播放动画 */

   frameAnimation.start();

   break;

  }

  return true;

 }

}

 

 

Xml实现:

res/anim/frameanimation.xml :

<?xml version="1.0" encoding="utf-8"?>

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"

    android:oneshot="false">

    <item android:drawable="@drawable/a1" android:duration="500" />

    <item android:drawable="@drawable/a2" android:duration="500" />

    <item android:drawable="@drawable/a3" android:duration="500" />

    <item android:drawable="@drawable/a4" android:duration="500" />

    <item android:drawable="@drawable/a5" android:duration="500" />

    <item android:drawable="@drawable/a6" android:duration="500" />

    <item android:drawable="@drawable/a7" android:duration="500" />

    <item android:drawable="@drawable/a8" android:duration="500" />

    <item android:drawable="@drawable/a9" android:duration="500" />

    <item android:drawable="@drawable/a10" android:duration="500" />

    <item android:drawable="@drawable/a11" android:duration="500" />

    <item android:drawable="@drawable/a12" android:duration="500" />

    <item android:drawable="@drawable/a13" android:duration="500" />

    <item android:drawable="@drawable/a14" android:duration="500" />

    <item android:drawable="@drawable/a15" android:duration="500" />     

</animation-list>

 

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.drawable.AnimationDrawable;

import android.view.KeyEvent;

import android.view.View;

import android.widget.ImageView;

public class GameView extends View

{

 /* 定义AnimationDrawable动画对象 */

 private AnimationDrawable frameAnimation = null;

 Context      mContext  = null;

 public GameView(Context context)

 {

  super(context);

  

  mContext = context;

  

  /* 定义一个ImageView用来显示动画 */

  ImageView img = new ImageView(mContext);

  

  /* 装载动画布局文件 */

  img.setBackgroundResource(R.anim.frameanimation);  

  

  /* 构建动画 */

  frameAnimation = (AnimationDrawable) img.getBackground();

  

  /* 设置是否循环 */

  frameAnimation.setOneShot( false ); 

  

  /* 设置该类显示的动画 */

  this.setBackgroundDrawable(frameAnimation);

 }

 

 public void onDraw(Canvas canvas)

 {

  super.onDraw(canvas);

 }

 

 public boolean onKeyUp(int keyCode, KeyEvent event)

 {

  switch ( keyCode )

  {

  case KeyEvent.KEYCODE_DPAD_UP: 

   /* 开始播放动画 */

   frameAnimation.start();

   break;

  }

  return true;

 }

}

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android 动画 Frame