也把Canvas也写出来吧
Canvas 就是画布,Paint就是画笔..(废话)
在android中,可以自定义一个view,然后在这个view里面随便画你的东西。还是看代码吧。
public class MainActivity extends Activity {
private WindowManager wm = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
wm = this.getWindowManager();
//用下面我们画的那个view作为这个activity的内容
setContentView(new Panel(this));
Toast.makeText(MainActivity.this, "点击屏幕退出程序",Toast.LENGTH_SHORT ).show();
}
/**
* 内部类,自定义View
*
* @author cfuture_小智
* @Description
*/
class Panel extends View {
//定义一支笔用来画画
private Paint mPaint = null;
private float width;
private float height;
public Panel(Context context) {
super(context);
// 把笔给削好
mPaint = new Paint();
//量一下这个屏幕有多宽
width = wm.getDefaultDisplay().getWidth();
height = wm.getDefaultDisplay().getHeight();
}
/*
* 重写这个方法,在eclipse中按下alt+shift+s,选择override/Implements method这项,找到onDraw这个方法,点确定就OK了
* (non-Javadoc)
* @see android.view.View#onDraw(android.graphics.Canvas)
*/
@Override
protected void onDraw(Canvas canvas) {
// 给画布上色
canvas.drawColor(Color.WHITE);
// 用我们的笔沾上黑色
mPaint.setColor(Color.BLACK);
//消除锯齿
mPaint.setAntiAlias(true);
// 打算写30这么大的字
mPaint.setTextSize(30);
// 把字尖弄宽一点
mPaint.setStrokeWidth(10);
//文字水平居中
mPaint.setTextAlign(Align.CENTER);
FontMetrics fontMetrics = mPaint.getFontMetrics();
// 用尺子量量文字高度
float fontHeight = fontMetrics.bottom - fontMetrics.top;
// 用尺子量量文字高度
float textBaseY = height - (height - fontHeight) / 2 - fontMetrics.bottom;
//在x=width/2,y= textBaseY这个点了写了我们的文字
canvas.drawText("CanvasDemo", width/2, textBaseY, mPaint);
//给我们的画笔沾上蓝色
mPaint.setColor(Color.BLUE);
//以圆心(width/2,height/2+30),半径为15,用mPaint这个笔画一个圆
canvas.drawCircle(width/2, height/2+30, 15, mPaint);
super.onDraw(canvas);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
finish();
return super.onTouchEvent(event);
}
}
}
canvas有挺多常用的方法(在EOE上找到的):
canvas.drawRect(RectF,Paint)方法用于画矩形,第一个参数为图形显示区域,第二个参数为画笔,设置好图形显示区域Rect和画笔Paint后,即可画图;
canvas.drawRoundRect(RectF, float, float, Paint) 方法用于画圆角矩形,第一个参数为图形显示区域,第二个参数和第三个参数分别是水平圆角半径和垂直圆角半径。
canvas.drawLine(startX, startY, stopX, stopY, paint):前四个参数的类型均为float,最后一个参数类型为Paint。表示用画笔paint从点(startX,startY)到点(stopX,stopY)画一条直线;
canvas.drawArc(oval, startAngle, sweepAngle, useCenter, paint):第一个参数oval为RectF类型,即圆弧显示区域,startAngle和sweepAngle均为float类型,分别表示圆弧起始角度和圆弧度数,3点钟方向为0度,useCenter设置是否显示圆心,boolean类型,paint为画笔;
canvas.drawCircle(float,float, float, Paint)方法用于画圆,前两个参数代表圆心坐标,第三个参数为圆半径,第四个参数是画笔;
更多请看看这个:http://blog.csdn.net/hanghangaidoudou/article/details/6420163
不懂new Rect(150, 75, 260, 120) 的参数
看看http://www.eoeandroid.com/thread-72266-1-1.html
还觉得方法不够用那你更应该看看这里了:
http://www.eoeandroid.com/home.php?mod=space&do=favorite&view=me