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;
}
}
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中Tween动画和Frame动画实例
- Android中Tween动画和Frame动画实例
- Android编程中Tween动画和Frame动画实例分析
- 我的Android进阶之旅------>Android之动画之Frame Animation实例
- 【Android动画】之Frame动画
- Android中ViewFlipper的使用及设置动画效果实例详解
- android动画切换(滑屏效果)实例
- Android各种动画插值器的实例
- Android Frame动画--AnimationDrawable 和 SurfaceView
- Android 动画:你真的会使用插值器与估值器吗?(含详细实例教学)
- android-Frame动画
- android Animation动画详解(带实例)
- android属性动画弹出菜单实例
- Android使用ListView实现滚轮的动画效果实例
- Android动画学习(四)之为ViewGroup中的Layout设置动画实例
- Android动画实例 (一)
- [Android] Android frame by frame animation动画显示
- Android动画 之 FrameAnimation(AnimationDrawable)
- Android动画之逐帧动画(Frame Animation)实例详解
- Android常用动画Frame-By-Frame Animations的使用