执行方法:
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
网友评论