在View绘图中常用的方法:
在View中绘制时使用的是Canvas(画布),Paint(画笔)。我们可以使用这两个类所提供的方法极大的减少我们绘图时的工作量。
Canvas:
canvas.save();//保存当前画布
canvas.restore();//恢复当前画布
canvas.saveLayerAlpha()//保存图层
canvas.getSaveCount()//获取保存的图层数
canvas.translate(float x,float y);//x--在x轴上移动的距离,y--在y轴上移动的距离
canvas.rotate(float angle);//angle 旋转的角度
canvas.rotate(float angle,float px, float py;);//绕(px,py)点旋转angle角度
Paint:
paint.setStyle();//设置画笔的风格 Paint.Style.STROKE---空心 Paint.Style.FILL--实心
paint.setStrokeWidth(); //设置画笔的边框宽度
paint.setTypeface()//设置画笔字体
paint.setAntiAlias(); //设置画笔是否抗锯齿
Layer图层的演示:
public class TestCanvas extends View {
Paint paint;
public TestCanvas(Context context) {
super(context);
paint = new Paint();
}
public TestCanvas(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.WHITE);
paint.setColor(Color.BLUE);
canvas.drawRect(0, 0,300,300, paint);
//将图层入栈,之后的所有操作都发生在该图层上
canvas.saveLayerAlpha(0, 0, 800, 800, 127, Canvas.CLIP_TO_LAYER_SAVE_FLAG);//left, top, right, bottom, alpha,saveFlags
paint.setColor(Color.RED);
canvas.drawRect(150, 150, 500,500,paint);
//将图层进行合并,将图形绘制到上层canvas
canvas.restore();
}
}
//效果为半透明,alpha范围在0~255之间,0为全透明,255为完全不透明