I have the following code to activate/deactivate the eraser:
public PorterDuffXfermode clear = new PorterDuffXfermode(PorterDuff.Mode.CLEAR);
eraseB.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (!eraser) {
eraser = true;
eraseB.setImageResource(R.drawable.erase_on);
paint = new Paint(Paint.DITHER_FLAG);
paint.setColor(0x00000000);
paint.setAlpha(0x00);
paint.setXfermode(clear);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStrokeWidth(stroke);
paintv.setPaint(paint);
} else {
eraser = false;
eraseB.setImageResource(R.drawable.erase);
paint = new Paint(Paint.DITHER_FLAG);
paint.setDither(true);
paint.setXfermode(null);
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStrokeWidth(stroke);
paintv.setPaint(paint);
}
}
});
setPaint is from my customView:
public void setPaint(Paint paint) {
this.paint = paint;
LogService.log("in setPaint", "paint = " + paint);
}
and onDraw I use:
canvas.drawPath(mPath, paint);
If I deactivate the eraser, it will draw with a red line, but instead, if I activate the eraser, instead of erasing, it will draw a black line. How can I fix this