package com.yarin.android.Examples_05_12; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Bitmap.Config; import android.graphics.drawable.BitmapDrawable; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; public class GameView extends View implements Runnable { /* ����Bitmap���� */ Bitmap mBitQQ = null; Paint mPaint = null; /* ����һ�������� */ Bitmap mSCBitmap = null; /* ����Canvas���� */ Canvas mCanvas = null; public GameView(Context context) { super(context); /* װ����Դ */ mBitQQ = ((BitmapDrawable) getResources().getDrawable(R.drawable.qq)).getBitmap(); /* ������Ļ��С�Ļ����� */ mSCBitmap=Bitmap.createBitmap(320, 480, Config.ARGB_8888); /* ����Canvas */ mCanvas = new Canvas(); /* ���ý����ݻ�����mSCBitmap�� */ mCanvas.setBitmap(mSCBitmap); mPaint = new Paint(); /* ��mBitQQ���Ƶ�mSCBitmap�� */ mCanvas.drawBitmap(mBitQQ, 0, 0, mPaint); /* �����߳� */ new Thread(this).start(); } public void onDraw(Canvas canvas) { super.onDraw(canvas); /* ��mSCBitmap��ʾ����Ļ�� */ canvas.drawBitmap(mSCBitmap, 0, 0, mPaint); } // �����¼� public boolean onTouchEvent(MotionEvent event) { return true; } // ���������¼� public boolean onKeyDown(int keyCode, KeyEvent event) { return true; } // ���������¼� public boolean onKeyUp(int keyCode, KeyEvent event) { return false; } public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event) { return true; } /** * �̴߳��� */ public void run() { while (!Thread.currentThread().isInterrupted()) { try { Thread.sleep(100); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } //ʹ��postInvalidate����ֱ�����߳��и��½��� postInvalidate(); } } }