效果图:
效果图本文不是为了完成一个像上图一样的渣渣效果,只是简单说明一下Canvas 和Paint的基本使用记录。
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
public class DrawView extends View {
Paint mPaint;
public DrawView(Context context) {
super(context);
init();
}
public DrawView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
// 设置抗锯齿开关
// mPaint = new Paint(Paint.ANTI_ALIAS_FLAG );
mPaint = new Paint();
mPaint.setAntiAlias(true); // 设置抗锯齿开关
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int x = getWidth() / 2;
int y = getHeight() / 2;
//画布颜色 类似的方法还有 drawRGB(int r, int g, int b) 和 drawARGB(int a, int r, int g, int b)
// 这类颜色填充方法一般用于在绘制之前设置底色,或者在绘制之后为界面设置半透明蒙版。
canvas.drawRGB(200,200,200);
//设置绘制内容的颜色
mPaint.setColor(Color.BLUE);
//模式改为画线模式 FILL 是填充模式,STROKE 是画线模式(即勾边模式),FILL_AND_STROKE 是两种模式一并使用:既画线又填充。
//它的默认值是 FILL,填充模式
mPaint.setStyle(Paint.Style.STROKE);
//在 STROKE 和 FILL_AND_STROKE 下,还可以使用 paint.setStrokeWidth(float width) 来设置线条的宽度
mPaint.setStrokeWidth(20);
canvas.drawRect(x / 2, x / 2, x * 1.5f, y * 1.5f, mPaint);
mPaint.setColor(Color.YELLOW);
canvas.drawLine(x / 2,x / 2,x * 1.5f, y * 1.5f, mPaint);
mPaint.setColor(Color.GREEN);
canvas.drawLine(x * 1.5f, y /2,x/2,y*1.5f,mPaint );
mPaint.setColor(Color.BLUE);
//点的形状可以通过 paint.setStrokeCap(cap) 来设置:ROUND 画出来是圆形的点,SQUARE 或 BUTT 画出来是方形的点。
mPaint.setStrokeCap(Paint.Cap.ROUND );
mPaint.setStrokeWidth(100);
canvas.drawPoint(x,y,mPaint);
}
}
网友评论