Android自定义视图清空画布

执行方法:

canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);

默认情况下,视图会在onDraw前会清空画布内容,详细见ViewRootImpl中的drawSoftware方法:

        if (!canvas.isOpaque() || yoff != 0 || xoff != 0) {
            canvas.drawColor(0, PorterDuff.Mode.CLEAR);
        }

但是如果在其他位置或使用其他方式获取Canvas时可能导致之前的内容还留在画布上,例如:

Canvas canvas = surfaceHolder.lockCanvas();

此时在绘制新的内容前需要先清空画布。

2020-11-16

推荐阅读更多精彩内容