Android Java Fingerpaint清除所有功能?

时间:2012-01-09 17:59:33

标签: java android

所以只是搞乱SDK中的Fingerpaint演示并尝试实现“全部清除”功能而不是使用橡皮擦工具。我添加了下面的代码,但只有在你触摸屏幕后才有效。例如。我在屏幕上乱写了一下“全部清除”按钮但是涂鸦仍在那里,直到我用手指击中屏幕而不是它消失。如何在按下按钮后立即更新屏幕?提前谢谢。

    private void clearAll() {             
        mBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);          
        mCanvas = new Canvas(mBitmap);          
     }

2 个答案:

答案 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框架调用,这就是发生变化的地方。