所以只是搞乱SDK中的Fingerpaint演示并尝试实现“全部清除”功能而不是使用橡皮擦工具。我添加了下面的代码,但只有在你触摸屏幕后才有效。例如。我在屏幕上乱写了一下“全部清除”按钮但是涂鸦仍在那里,直到我用手指击中屏幕而不是它消失。如何在按下按钮后立即更新屏幕?提前谢谢。
private void clearAll() {
mBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mBitmap);
}
答案 0 :(得分:1)
要清除画布,最好只调用Canvas.drawColor(Color.BLACK)
或使用其他颜色。你正在做的方式似乎也有效,但它也是1)创建额外的对象,2)在再次调用onDraw()
之前,新的画布没有被使用。
我认为调用drawColor()
会自动使画布无效并强制重绘。如果没有,或者您想坚持使用新的Bitmap
和新的Canvas
,请尝试添加对View.invalidate()
的调用。
答案 1 :(得分:0)
单击“全部清除”时尝试设置标记。
然后在onDraw
中,如果此标志为true,则清除画布。
paint.setColor(Color.BLACK);
int height = getMeasuredHeight();
int width = getMeasuredWidth();
this.mCanvas.drawRect(new Rect(0,0,width, height),paint);
onDraw由android UI框架调用,这就是发生变化的地方。