package com.yarin.android.Examples_05_05;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
import android.graphics.RectF;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
public class GameView extends View implements Runnable
{
/* ����Paint���� */
private Paint mPaint = null;
private GameView2 mGameView2 = null;
public GameView(Context context)
{
super(context);
/* �������� */
mPaint = new Paint();
mGameView2 = new GameView2(context);
/* �����߳� */
new Thread(this).start();
}
public void onDraw(Canvas canvas)
{
super.onDraw(canvas);
/* ���û���Ϊ��ɫ���� */
canvas.drawColor(Color.BLACK);
/* ȡ����� */
mPaint.setAntiAlias(true);
mPaint.setStyle(Paint.Style.STROKE);
{
/* �������� */
Rect rect1 = new Rect();
/* ���þ��δ�С */
rect1.left = 5;
rect1.top = 5;
rect1.bottom = 25;
rect1.right = 45;
mPaint.setColor(Color.BLUE);
/* ���ƾ��� */
canvas.drawRect(rect1, mPaint);
mPaint.setColor(Color.RED);
/* ���ƾ��� */
canvas.drawRect(50, 5, 90, 25, mPaint);
mPaint.setColor(Color.YELLOW);
/* ����Բ��(Բ��x,Բ��y,�뾶r,p) */
canvas.drawCircle(40, 70, 30, mPaint);
/* ������Բ���� */
RectF rectf1 = new RectF();
/* ������Բ��С */
rectf1.left = 80;
rectf1.top = 30;
rectf1.right = 120;
rectf1.bottom = 70;
mPaint.setColor(Color.LTGRAY);
/* ������Բ */
canvas.drawOval(rectf1, mPaint);
/* ���ƶ���� */
Path path1 = new Path();
/*���ö���εĵ�*/
path1.moveTo(150+5, 80-50);
path1.lineTo(150+45, 80-50);
path1.lineTo(150+30, 120-50);
path1.lineTo(150+20, 120-50);
/* ʹ��Щ�㹹�ɷ�յĶ���� */
path1.close();
mPaint.setColor(Color.GRAY);
/* ������������ */
canvas.drawPath(path1, mPaint);
mPaint.setColor(Color.RED);
mPaint.setStrokeWidth(3);
/* ����ֱ�� */
canvas.drawLine(5, 110, 315, 110, mPaint);
}
//
//�������ʵ�ļ�����
//
mPaint.setStyle(Paint.Style.FILL);
{
/* �������� */
Rect rect1 = new Rect();
/* ���þ��δ�С */
rect1.left = 5;
rect1.top = 130+5;
rect1.bottom = 130+25;
rect1.right = 45;
mPaint.setColor(Color.BLUE);
/* ���ƾ��� */
canvas.drawRect(rect1, mPaint);
mPaint.setColor(Color.RED);
/* ���ƾ��� */
canvas.drawRect(50, 130+5, 90, 130+25, mPaint);
mPaint.setColor(Color.YELLOW);
/* ����Բ��(Բ��x,Բ��y,�뾶r,p) */
canvas.drawCircle(40, 130+70, 30, mPaint);
/* ������Բ���� */
RectF rectf1 = new RectF();
/* ������Բ��С */
rectf1.left = 80;
rectf1.top = 130+30;
rectf1.right = 120;
rectf1.bottom = 130+70;
mPaint.setColor(Color.LTGRAY);
/* ������Բ */
canvas.drawOval(rectf1, mPaint);
/* ���ƶ���� */
Path path1 = new Path();
/*���ö���εĵ�*/
path1.moveTo(150+5, 130+80-50);
path1.lineTo(150+45, 130+80-50);
path1.lineTo(150+30, 130+120-50);
path1.lineTo(150+20, 130+120-50);
/* ʹ��Щ�㹹�ɷ�յĶ���� */
path1.close();
mPaint.setColor(Color.GRAY);
/* ������������ */
canvas.drawPath(path1, mPaint);
mPaint.setColor(Color.RED);
mPaint.setStrokeWidth(3);
/* ����ֱ�� */
canvas.drawLine(5, 130+110, 315, 130+110, mPaint);
}
/* ͨ��ShapeDrawable�����Ƽ���ͼ�� */
mGameView2.DrawShape(canvas);
}
// �����¼�
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();
}
}
}