Android Frame动画实例

来源:互联网 发布:网狐棋牌游戏源码 编辑:程序博客网 时间:2024/05/16 00:32

具体的上一章已经介绍,直接上代码:

 

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

 


 

 

原创粉丝点击