public class GameView extends SufaceView implements SurfaceHolder.Callback, Runnable {
private Handler handler;
private SurfaceHolder holder;
private Canvas canvas;
private Bitmap background;
private boolean isRunning;
public GameView(Context context, Handler handler){
super(context);
this.handler = handler;
holder = this.getHolder();
holder.addCallback(this);
}
public void initBitmap(){
background = BitmapFactory.decodeResource(getResource(),R.drawable.background);
}
public void drawBackground(){
Rect src = new Rect(0, 0, bgBitmap.getWidth() * 3 / 4,
2 * bgBitmap.getHeight() / 3);
Rect dst = new Rect(0, 0, screen_width, screen_height);
canvas.drawBitmap(bgBitmap, src, dst, null);
}
public void onDraw(){
synchronized (surfaceHolder) {
try {
canvas = surfaceHolder.lockCanvas();
// 画背景
drawBackground();
// 画牌
for (int i = 0; i < 3; i++)
drawPlayer(i);
// 地主牌
for (int i = 0, len = dizhuList.size(); i < len; i++)
drawCard(dizhuList.get(i));
// 画按钮( 抢地主,不抢,出牌,不出)
drawButton();
// message部分 用3个String存
drawMessage();
// 画地主图标
drawDizhuIcon();
// 出牌界面(3个地方,用3个vector存)
drawOutList();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (canvas != null)
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
}
public void run(){
while (start) {
if (repaint) {
onDraw();
repaint = false;
Sleep(33);
}
}
}
}