Android培训全面课程(32天实战课程)
2011-12-28 17:28
316 查看
Android培训全面课程(32天实战课程) 第二课-Android培训自定义View中的使用与绘制技巧。
4.播放frame动画
做游戏的话播放动画可就是必不可少的元素 帧动画帧动画 顾名思义是一帧一帧的播放 。 实际在开发中为了节省内存美术会把人物的图片切成一小块一小块然后由程序根据编辑器生成的点把图片在拼接起来这样就可以做到用更少的图片去实现更多的动画效果因为不太方便介绍图片编辑器 这个demo我只给大家简单的介绍一下播放动画的原理 后期我会深入讲解。
如图所示这个小人一直在行走 实际上是4张图片在来回切换 每张图片延迟500毫秒 后播下一张 以此类推。
此例子代码如下:
package cn.m15.xys;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.View;
public class FramAnimation extends Activity {
public final static int ANIM_COUNT = 4;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(new FramView(this));
super.onCreate(savedInstanceState);
}
class FramView extends View {
Bitmap[] bitmap = new Bitmap[ANIM_COUNT];
Bitmap display = null;
Paint paint = null;
long startTime = 0;
int playID = 0;
public FramView(Context context) {
super(context);
for (int i = 0; i < ANIM_COUNT; i++) {
bitmap[i] = BitmapFactory.decodeResource(this.getResources(),
R.drawable.hero_a + i);
}
display = bitmap[0];
paint = new Paint();
startTime = System.currentTimeMillis();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint.setColor(Color.WHITE);
canvas.drawText("播放动画中...", 100, 30, paint);
long nowTime = System.currentTimeMillis();
if (nowTime - startTime >= 500) {
startTime=nowTime;
playID++;
if (playID >= ANIM_COUNT) {
playID = 0;
}
canvas.drawBitmap(bitmap[playID], 100, 100, paint);
}
invalidate();
}
}
}
课讲1自定义view绘制字符串-->.http://hi.baidu.com/akaedu_org/blog/item/00e739c504ed021fa08bb7d2.html
4.播放frame动画
做游戏的话播放动画可就是必不可少的元素 帧动画帧动画 顾名思义是一帧一帧的播放 。 实际在开发中为了节省内存美术会把人物的图片切成一小块一小块然后由程序根据编辑器生成的点把图片在拼接起来这样就可以做到用更少的图片去实现更多的动画效果因为不太方便介绍图片编辑器 这个demo我只给大家简单的介绍一下播放动画的原理 后期我会深入讲解。
如图所示这个小人一直在行走 实际上是4张图片在来回切换 每张图片延迟500毫秒 后播下一张 以此类推。
此例子代码如下:
package cn.m15.xys;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.View;
public class FramAnimation extends Activity {
public final static int ANIM_COUNT = 4;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(new FramView(this));
super.onCreate(savedInstanceState);
}
class FramView extends View {
Bitmap[] bitmap = new Bitmap[ANIM_COUNT];
Bitmap display = null;
Paint paint = null;
long startTime = 0;
int playID = 0;
public FramView(Context context) {
super(context);
for (int i = 0; i < ANIM_COUNT; i++) {
bitmap[i] = BitmapFactory.decodeResource(this.getResources(),
R.drawable.hero_a + i);
}
display = bitmap[0];
paint = new Paint();
startTime = System.currentTimeMillis();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint.setColor(Color.WHITE);
canvas.drawText("播放动画中...", 100, 30, paint);
long nowTime = System.currentTimeMillis();
if (nowTime - startTime >= 500) {
startTime=nowTime;
playID++;
if (playID >= ANIM_COUNT) {
playID = 0;
}
canvas.drawBitmap(bitmap[playID], 100, 100, paint);
}
invalidate();
}
}
}
课讲1自定义view绘制字符串-->.http://hi.baidu.com/akaedu_org/blog/item/00e739c504ed021fa08bb7d2.html
相关文章推荐
- Android培训全面课程(32天实战课程)
- Android培训全面课程(32天实战课程)
- Hadoop大数据零基础高端实战培训系列课程分享(全面)
- Oracle数据库备份恢复高级培训视频课程(案例、实战、深入、全面)
- 传智播客成都Android培训课程全面升级
- Android官方培训课程中文版笔记
- 管理照相机-录视频(摘自Android官方培训课程中文版(v0.9.5))
- Android培训实战教程之 Studio下JNI开发
- Android官方培训课程学习(五): 与其他应用交互
- Android官方培训课程学习(六): Android分享简单数据
- Oracle数据库专家实战培训课程
- 我系成功举办android实战培训
- Android:Android官方培训课程中文版(v0.9.4)
- android培训课程
- 广州Android培训课程新一代IT人才首选
- Android培训实战教程之 Studio下JNI开发
- 包建强的培训课程(14):Android与ReactNative
- 王家林的81门一站式云计算分布式大数据&移动互联网解决方案课程第11门课程:Android应用程序开发完整训练:从零起步通过23个动手实战案例精通App开发
- 管理音频播放(摘自Android官方培训课程中文版(v0.9.5))
- Android培训实战教程之 Studio下JNI开发