android中如果要绘制2d图形需要有四个基本组件:
1,Bitmap :相当于画布。基于它之上画图。还可以是:Rect、RectF、text。
2,Canvas:相当于画家。在画布上管理绘制过程,提供绘图方法。
3,Paint:相当于画笔,可以设置画笔的颜色,粗细,类型等。
4,Drawable:包含绘制要素。,如形状,路径,文本,图像等。用于展示图像。
Android手机的屏幕坐标:
Bitmap的常用法:
Bitmap mBitmap = Bitmap.createBitmap(getWidth(),getHeight(), Bitmap.Config.ARGB_8888);//构造方法
mBitmap.recycle();//解除本地对象对该Bitmap对象的引用,清除对像素数据的引用。
sample:
- int width = getWidth();
- int height = getHeight();
- //画外圆
- paint.setStyle(Paint.Style.STROKE);
- paint.setStrokeWidth(5);
- canvas.drawCircle(width / 2, height / 2, width / 2, paint);
- //画刻度
- paint.setStrokeWidth(3);
- for(int i = 0; i < 24; i++){
- //区分整点与非整点
- if(i == 0||i == 6||i == 12||i == 18){
- paint.setStrokeWidth(5);
- paint.setTextSize(30);
- canvas.drawLine(width / 2, height / 2 - width / 2, width / 2, height / 2 - width / 2 +60, paint);
- String degree = String.valueOf(i);
- canvas.drawText(degree, width / 2 - paint.measureText(degree) / 2, height / 2 - width / 2 +90, paint);
- }else{
- paint.setTextSize(15);
- canvas.drawLine(width / 2, height / 2 - width / 2, width / 2, height / 2 - width / 2 +30, paint);
- String degree = String.valueOf(i);
- canvas.drawText(degree, width / 2 - paint.measureText(degree) / 2, height / 2 - width / 2 +60, paint);
- }
- //通过旋转画布简化坐标计算
- canvas.rotate(15, width / 2, height / 2);
- }
- //画指针
- paint.setStrokeWidth(20);
- canvas.save();
- canvas.translate(width / 2, height / 2);
- canvas.drawLine(0, 0, 100, 100, paint);
- paint.setStrokeWidth(10);
- canvas.drawLine(0, 0, 100, 200, paint);
- canvas.restore();
二、Layer图层:
在Android中,使用saveLayer()方法创建一个图层,是基于栈的结构进行管理的。调用saveLayer()、saveLayerAlpha()方法将一个图层入栈,使用restore()、restoreToCount()将一个图层出栈。
代码:
- canvas.drawColor(Color.WHITE);
- paint.setColor(Color.BLUE);
- canvas.drawCircle(150, 150, 100, paint);
- canvas.saveLayerAlpha(0, 0, 400, 400, 127, LAYER_TYPE_HARDWARE);
- paint.setColor(Color.RED);
- canvas.drawCircle(200, 200, 100, paint);
- canvas.restore();