Android培训全面课程(32天实战课程)

     Android培训全面课程(32天实战课程) 第二课-Android培训自定义View中的使用与绘制技巧。

   4.播放frame动画

 做游戏的话播放动画可就是必不可少的元素 帧动画帧动画 顾名思义是一帧一帧的播放 。 实际在开发中为了节省内存美术会把人物的图片切成一小块一小块然后由程序根据编辑器生成的点把图片在拼接起来这样就可以做到用更少的图片去实现更多的动画效果因为不太方便介绍图片编辑器 这个demo我只给大家简单的介绍一下播放动画的原理 后期我会深入讲解。
              如图所示这个小人一直在行走 实际上是4张图片在来回切换 每张图片延迟500毫秒 后播下一张 以此类推。

  此例子代码如下:

  1. package cn.m15.xys;

  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.graphics.Bitmap;
  5. import android.graphics.BitmapFactory;
  6. import android.graphics.Canvas;
  7. import android.graphics.Color;
  8. import android.graphics.Paint;
  9. import android.os.Bundle;
  10. import android.view.View;

  11. public class FramAnimation extends Activity {
  12.     public final static int ANIM_COUNT = 4;

  13.     @Override
  14.     protected void onCreate(Bundle savedInstanceState) {
  15.         setContentView(new FramView(this));
  16.         super.onCreate(savedInstanceState);

  17.     }

  18.     class FramView extends View {
  19.         Bitmap[] bitmap = new Bitmap[ANIM_COUNT];
  20.         Bitmap display = null;
  21.         Paint paint = null;
  22.         long startTime = 0;
  23.         int playID = 0;

  24.         public FramView(Context context) {
  25.             super(context);
  26.             for (int i = 0; i < ANIM_COUNT; i++) {
  27.                 bitmap[i] = BitmapFactory.decodeResource(this.getResources(),
  28.                         R.drawable.hero_a + i);
  29.             }
  30.             display = bitmap[0];
  31.             paint = new Paint();
  32.             startTime = System.currentTimeMillis();
  33.         }

  34.         @Override
  35.         protected void onDraw(Canvas canvas) {
  36.             super.onDraw(canvas);
  37.             paint.setColor(Color.WHITE);
  38.             canvas.drawText("播放动画中...", 100, 30, paint);
  39.             long nowTime = System.currentTimeMillis();
  40.             if (nowTime - startTime >= 500) {
  41.                 startTime=nowTime;
  42.                 playID++;
  43.                 if (playID >= ANIM_COUNT) {
  44.                     playID = 0;
  45.                 }
  46.                 canvas.drawBitmap(bitmap[playID], 100, 100, paint);
  47.             }
  48.             invalidate();
  49.         }
  50.     }

  51. }

  课讲1自定义view绘制字符串-->.http://hi.baidu.com/akaedu_org/blog/item/00e739c504ed021fa08bb7d2.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值