定义一个画图的接口:
package com.ken.drawable;
import android.graphics.Canvas;
public interface drawGraphics {
public void draw(Canvas canvas);
}
画圆:
package com.ken.drawable;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
public class DrawCircle implements drawGraphics {
private Paint paint= null;
private Paint paint_eye= null;
public DrawCircle(){
paint= new Paint();
paint_eye= new Paint();
}
public void draw(Canvas canvas) {
// TODO Auto-generated method stub
//绘制圆形(圆心x,圆心y,半径r,画笔p)
paint_eye.setAntiAlias(true);
paint.setAntiAlias(true);
RectF rectF = new RectF(120,60,370,240);
paint_eye.setColor(Color.WHITE);
paint.setColor(Color.GREEN);
canvas.drawCircle(190, 110, 18, paint_eye);
canvas.drawCircle(300, 110, 18, paint_eye);
canvas.drawArc(rectF, 180, 180,true, paint);
}
}
画直线:
package com.ken.drawable;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
public class DrawLine implements drawGraphics {
private Paint paint= null;
public DrawLine(){
paint= new Paint();
}
public void draw(Canvas canvas) {
// TODO Auto-generated method stub
paint.setAntiAlias(true);
//绘制直线
paint.setColor(Color.GREEN);
//设置线条粗细
paint.setStrokeWidth(12);
canvas.drawLine(120,40,170,90, paint);
canvas.drawLine(320,90,370,40, paint);
}
}
画矩形:
package com.ken.drawable;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
public class DrawRect implements drawGraphics {
private Paint paint= null;
public DrawRect(){
paint= new Paint();
}
public void draw(Canvas canvas) {
// TODO Auto-generated method stub
//定义圆角矩形对象
RectF rectF1 = new RectF(120,170,370,500);
RectF rectF2 = new RectF(40,150,90,400);
RectF rectF3 = new RectF(390,150,440,400);
RectF rectF4 = new RectF(140,520,200,650);
RectF rectF5 = new RectF(290,520,350,650);
paint.setAntiAlias(true);
//设置画笔颜色为BLUE
paint.setColor(Color.GREEN);
//在画布上绘制圆角矩形/圆弧/直线
canvas.drawRoundRect(rectF1, 20, 20, paint);
canvas.drawRoundRect(rectF2, 20, 20, paint);
canvas.drawRoundRect(rectF3, 20, 20, paint);
canvas.drawRoundRect(rectF4, 20, 20, paint);
canvas.drawRoundRect(rectF5, 20, 20, paint);
}
}
显示的类:
package com.ken.drawable;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;
public class GameView extends View implements Runnable {
private Paint mPaint=null;
private drawGraphics mdrawGraphics=null;
public GameView(Context context) {
super(context);
// TODO Auto-generated constructor stub
//构建对象
mPaint=new Paint();
//开启线程
new Thread(this).start();
}
public void onDraw(Canvas canvas){
super.onDraw(canvas);
//设置画布为黑色
//canvas.drawColor(Color.BLACK);
//消除锯齿
mPaint.setAntiAlias(true);
//设置图形为空心
mPaint.setStyle(Paint.Style.STROKE);
//绘制空心几何图形
mdrawGraphics=new DrawCircle();
mdrawGraphics.draw(canvas);
mdrawGraphics=new DrawLine();
mdrawGraphics.draw(canvas);
mdrawGraphics=new DrawRect();
mdrawGraphics.draw(canvas);
}
public void run() {
// TODO Auto-generated method stub
while(!Thread.currentThread().isInterrupted()) {
try{
Thread.sleep(1000);
} catch(InterruptedException e) {
// TODO: handle exception
Thread.currentThread().interrupt();
}
//使用postInvalidate 可以直接在线程中更新界面
postInvalidate();
}
}
}
主类:
package com.ken.drawable;
import android.app.Activity;
import android.os.Bundle;
public class GameStart extends Activity {
private GameView mGameView= null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.mGameView= new GameView(this);
setContentView(mGameView);
}
}