package com.yarin.android.Examples_05_02; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.SurfaceHolder; import android.view.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); // ʵ����SurfaceHolder mSurfaceHolder = this.getHolder(); // ��ӻص� 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) { } synchronized( mSurfaceHolder ) { Draw(); } } } // ��ͼ���� 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); // ���ƺ���������ƺ�������������ʾ mSurfaceHolder.unlockCanvasAndPost(canvas); } }