SurfaceView的几个基本步骤

public class GameSurfaceView extends SurfaceView implements
SurfaceHolder.Callback, Runnable {
// 控制循环
boolean mbLoop = false;


// 定义SurfaceHolder对象
SurfaceHolder mSurfaceHolder = null;
int miCount = 0;
int y = 50;


public GameSurfaceView(Context context) {
super(context);


// 1、实例化SurfaceHolder
mSurfaceHolder = this.getHolder();


// 2、添加回调
mSurfaceHolder.addCallback(this);
this.setFocusable(true);


mbLoop = true;
}


// 在surface的大小发生改变时激发
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {


}


// 在surface创建时激发
public void surfaceCreated(SurfaceHolder holder) {
// 开启绘图线程
new Thread(this).start();
}


// 在surface销毁时激发
public void surfaceDestroyed(SurfaceHolder holder) {
// 停止循环
mbLoop = false;
}


// 绘图循环
public void run() {
while (mbLoop) {
try {
Thread.sleep(200);
} catch (Exception e) {


}
//用线程同步,是为确保当前的mSurfaceHolder对象可用
synchronized (mSurfaceHolder) {
draw();
}


}
}


//3、 绘图方法
public void draw() {
// 锁定画布,得到canvas
Canvas canvas = mSurfaceHolder.lockCanvas();


if (mSurfaceHolder == null || canvas == null) {
return;
}


if (miCount < 100) {
miCount++;
} else {
miCount = 0;
}
// 绘图
Paint mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setColor(Color.BLACK);
// 绘制矩形--清屏作用
canvas.drawRect(0, 0, 320, 480, mPaint);
switch (miCount % 4) {
case 0:
mPaint.setColor(Color.BLUE);
break;
case 1:
mPaint.setColor(Color.GREEN);
break;
case 2:
mPaint.setColor(Color.RED);
break;
case 3:
mPaint.setColor(Color.YELLOW);
break;
default:
mPaint.setColor(Color.WHITE);
break;
}
// 绘制矩形--后面我们将详细讲解
canvas.drawCircle((320 - 25) / 2, y, 50, mPaint);
// 4、绘制后解锁,绘制后必须解锁才能显示
mSurfaceHolder.unlockCanvasAndPost(canvas);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值