android-discuss icon indicating copy to clipboard operation
android-discuss copied to clipboard

关于 如何清除自定义View 绘制的内容,如绘制的曲线

Open Fengcoder opened this issue 9 years ago • 7 comments

canvas.drawColor(getResources().getColor(R.color.white)); 这种方式,只会添加一层白色背景,绘制的曲线仍然无法清除

Fengcoder avatar Oct 22 '15 11:10 Fengcoder

用变量在onDraw方法里面加个条件判断,特定的条件下不执行绘制曲线的代码,改变这个变量后再invalidate一下不就行了?

figobbq avatar Oct 22 '15 12:10 figobbq

@figobbq 在onDraw 里面调用invalidate 或者直接用mView.invalidate() 都不起作用

Fengcoder avatar Oct 22 '15 12:10 Fengcoder

@Fengcoder 你确定继承的是View,而不是surface?我记得surface才需要画画一层颜色来覆盖上次绘制的内容

ipcjs avatar Oct 23 '15 00:10 ipcjs

@ipcjs surface 确实需要那样做,我是继承的view,上面那种添加白色背景是自己尝试的失败方法

Fengcoder avatar Oct 23 '15 01:10 Fengcoder

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

zmywly8866 avatar Oct 23 '15 07:10 zmywly8866

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

我使用了该方法,View显示黑色了

marsxingzhi avatar Mar 06 '19 07:03 marsxingzhi

canvas.drawColor(Color.TRANSPARENT); canvas.save(); canvas.restore(); 用这个方法可以的。我自己写的就是这样子的

WhatFizzer avatar Mar 08 '19 03:03 WhatFizzer