androidI学习之Canvas与paint

也把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

猜你喜欢

转载自xiaozhi6156.iteye.com/blog/1831542