创建View:
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
import android.view.View;
public class MyView extends View{
private Paint paint;
public MyView(Context context) {
super(context);
// TODO Auto-generated constructor stub
paint = new Paint();
//设置画笔无锯齿(如果不设置可以看到效果很差)
paint.setAntiAlias(true);
//设置背景常亮
this.setKeepScreenOn(true);
//设置画笔颜色
paint.setColor(Color.RED);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
//设置刷屏颜色
canvas.drawColor(Color.WHITE);
//这里前两个参数意思是矩形左上角坐标
//后两个参数意思是矩形右下角坐标
Rect rect = new Rect(30,30,50,50);
//绘制矩形
canvas.drawRect(rect, paint);
//RectF 只是矩形 float形式 只是跟Rect精确度不一样
RectF rectF = new RectF(70f,30f,90f,90f);
//绘制椭圆
canvas.drawArc(rectF, 0, 360, true, paint);
//绘制圆, 第三个参数为半径
canvas.drawCircle(150, 30, 20, paint);
float[] points =new float[]{200f,10f,200f,40f,300f,30f,400f,70f};
canvas.drawLines(points, paint);
//选取特定点数组中两点来画出一条直线
// canvas.drawLines(points, 1, 4, paint);
canvas.drawText("Hello world", 230, 30, paint);
}
}
使用view:
import android.app.Activity;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import com.main.MyView;
public class SimpleGraph extends Activity {
private boolean iIsStart = true;
private MyView myView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myView = new MyView(this);
setContentView(myView);
//刷新View
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while(iIsStart)
{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(e.toString());
}
//使用postInvalidate可以直接在线程中更新界面
myView.postInvalidate();
}
}
}).start();
}
}