Android Frame动画概述及示例

      大家平时见到的最多的可能就是Frame动画了,Android中当然也少不了它。它的使用更加简单,只需要创建一个AnimationDrawabledF对象来表示Frame动画,然后通过addFrame 方法把每一帧要显示的内容添加进去,最后通过start 方法就可以播放这个动画了,同时还可以通过 setOneShot方法设置是否重复播放。 下面就是一个用Frame动画模拟日全食的效果。先看看效果。

3.jpg 

4.jpg 

5.jpg 

6.jpg 
Activity01 
Java代码
  1. package xiaohang.zhimeng;

  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.KeyEvent;
  5. import android.view.Window;
  6. import android.view.WindowManager;

  7. public class Activity01 extends Activity {
  8. private GameView mGameView;

  9. @Override
  10. public void onCreate(Bundle savedInstanceState) {
  11. super.onCreate(savedInstanceState);
  12. // 设置无标题栏
  13. requestWindowFeature(Window.FEATURE_NO_TITLE);
  14. // 设置为全屏模式
  15. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
  16. WindowManager.LayoutParams.FLAG_FULLSCREEN);
  17. mGameView = new GameView(this);
  18. setContentView(mGameView);
  19. }

  20. public boolean onKeyUp(int keyCode, KeyEvent event) {
  21. if (mGameView == null) {
  22. return false;
  23. }
  24. mGameView.onKeyUp(keyCode, event);
  25. return true;
  26. }

  27. public boolean onKeyDown(int keyCode, KeyEvent event) {
  28. if (mGameView == null) {
  29. return false;
  30. }
  31. if (keyCode == KeyEvent.KEYCODE_BACK) {
  32. // 关闭Activity
  33. this.finish();
  34. return true;
  35. }
  36. return super.onKeyDown(keyCode, event);
  37. }
  38. }
GameView 
Java代码
  1. package xiaohang.zhimeng;

  2. import android.content.Context;
  3. import android.graphics.Canvas;
  4. import android.graphics.drawable.AnimationDrawable;
  5. import android.graphics.drawable.Drawable;
  6. import android.view.KeyEvent;
  7. import android.view.View;

  8. public class GameView extends View{

  9. //定义AnimationDrawable动画
  10. private AnimationDrawable frameAnimation = null;
  11. Context mContext = null;

  12. //定义一个Drawable对象
  13. Drawable mBitAnimation = null;

  14. public GameView(Context context) {
  15. super(context);

  16. mContext = context;

  17. //实例化AnimationDrawable对象
  18. frameAnimation = new AnimationDrawable();

  19. /*装载资源*/
  20. //这里用一个循环装载所有名字类似的资源
  21. //如"a1...........15.png"的图片
  22. for(int i = 1; i <= 15; i++){
  23. int id = getResources().getIdentifier("a" + i, "drawable", mContext.getPackageName());
  24. //此方法返回一个可绘制的对象与特定的资源ID相关联 
  25. mBitAnimation = getResources().getDrawable(id);
  26. /*为动画添加一帧*/
  27. //参数mBitAnimation是该帧的图片
  28. //参数500是该帧显示的时间,按毫秒计算
  29. frameAnimation.addFrame(mBitAnimation, 500);
  30. }
  31. /*上边用到了Resources的getIdentifier方法 方法返回一个资源的唯一标识符,如果没有这个资源就返回0
  32. * 0不是有效的标识符,在说说这个方法几个参数的含义
  33. * 第一个 就是我们的资源名称了。
  34. * 第二个 就是我们要去哪里找我们的资源 我们的图片在drawable 下 所以为drawable
  35. * 第三个 我们用了Context的getPackageName返回应用程序的包名
  36. * */
  37. //设置播放模式是否循环播放,false表示循环,true表示不循环
  38. frameAnimation.setOneShot(false);
  39. //设置本类将要显示的这个动画
  40. this.setBackgroundDrawable( frameAnimation );
  41. }
  42. @Override
  43. protected void onDraw(Canvas canvas) {
  44. super.onDraw(canvas);
  45. }
  46. public boolean onKeyUp(int keyCode, KeyEvent event){
  47. switch (keyCode) {
  48. case KeyEvent.KEYCODE_DPAD_UP:
  49. //当按手机的上方向键时开始播放
  50. frameAnimation.start();
  51. break;
  52. }
  53. return true;
  54. }
  55. }
同样Frame 也可以用xml文件实现,大家去看 api吧。

  xh_05_17_Test.rar 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值