我的问题:
我的自定义View继承了SurfaceView来做画板功能,但是做清空画布的时候,总是清空不了。
网上的方案
一、
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
二、
Paint paint = new Paint();
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
canvas.drawPaint(paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
这两种方法对我的View都不管用,我觉得可能是对继承了View的画布清空才起作用。
后来在网上找了一种针对SurfaceView的清空画布的方法,还是不管用。如下:
public void clearDraw() {
Canvas canvas = null;
try {
canvas = holder.lockCanvas(null);
canvas.drawColor(Color.BLACK);
}catch (Exception e) {
// TODO: handle exception
}finally {
if(canvas != null) {
holder.unlockCanvasAndPost(canvas);
}
}
}
后经过一番探索,终于找到了对自己的View管用的画布清空方法:
public void clear(){
surfaceHolder.addCallback(this);
path = new Path();
}
特此记录一下。