package com.yarin.android.Examples_05_04; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; public class GameView extends View implements Runnable { /* ����Paint���� */ private Paint mPaint = null; public GameView(Context context) { super(context); /* �������� */ mPaint = new Paint(); /* �����߳� */ new Thread(this).start(); } public void onDraw(Canvas canvas) { super.onDraw(canvas); /* ���û�������ɫ */ canvas.drawColor(Color.BLACK); /* ����ȡ�����Ч�� */ mPaint.setAntiAlias(true); /* ���òü����� */ canvas.clipRect(10, 10, 280, 260); /* ���������� */ canvas.save(); /* ��ת���� */ canvas.rotate(45.0f); /* ������ɫ�����ƾ��� */ mPaint.setColor(Color.RED); canvas.drawRect(new Rect(15,15,140,70), mPaint); /* ������������� */ canvas.restore(); /* ������ɫ��������һ������ */ mPaint.setColor(Color.GREEN); canvas.drawRect(new Rect(150,75,260,120), 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(); } } }