这里用到了
不会的可以去看一下自定义view的讲解:
https://note.youdao.com/ynoteshare/index.html?id=a99fc369bc9d4c448cb44af0c542a381&type=note
public class G extends View {
private Paint paint_one;
private Path mpath;
private Canvas mcanvas;
private Bitmap mbitmap;
private Bitmap bitmap;
private int lastx;
private int lasty;
public G(Context context) {
super(context);
initview();
}
public G(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
initview();
}
public G(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initview();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int width=getMeasuredWidth();
int height=getMeasuredHeight();
mbitmap=Bitmap.createBitmap(width,height, Bitmap.Config.ALPHA_8);
mcanvas=new Canvas(mbitmap);
initpaint();
//遮盖
mcanvas.drawColor(Color.BLACK);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction();
//当前坐标
int x = (int) event.getX();
int y = (int) event.getY();
//判断意图
switch (action){
case MotionEvent.ACTION_DOWN:
lastx=x;
lasty=y;
mpath.moveTo(lastx,lasty);
break;
case MotionEvent.ACTION_MOVE:
//坐标的值
int absx = Math.abs(x-lastx);
int absy = Math.abs(y-lasty);
mpath.lineTo(x,y);
lastx=x;
lasty=y;
break;
case MotionEvent.ACTION_UP:
break;
}
invalidate();
return true;
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(bitmap,0,0,null);
drawPath();
canvas.drawBitmap(mbitmap,0,0,null);
}
private void drawPath() {
//模式
paint_one.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
mcanvas.drawPath(mpath,paint_one);
}
private void initpaint() {
paint_one.setColor(Color.RED);
paint_one.setAntiAlias(true);
paint_one.setDither(true);
//线条圆角
paint_one.setStrokeJoin(Paint.Join.ROUND);
paint_one.setStrokeCap(Paint.Cap.ROUND);
paint_one.setStyle(Paint.Style.STROKE);
//宽度
paint_one.setStrokeWidth(20);
}
private void initview() {
paint_one=new Paint();
mpath=new Path();
bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.a);
}
}