android:Canvas.drawColor(Color.BLACK)无法清除画布

时间:2012-11-30 14:32:52

标签: android android-canvas

我有一个LinearLayout,其背景颜色设置为黑色。在此LinearLayout中,我使用View绘制了Canvas。因为onDraw()方法将被多次调用,所以我想清除我之前在调用onDraw()方法时所绘制的内容,因此我使用Canvas.drawColor(Color.BLACK)来清除画布。

但是,即使我画了一些新东西,我得到的也是黑屏。在Canvas.drawColor(Color.BLACK)方法中添加onDraw()之前,我已经可以绘制一些内容了。

编辑:我onDraw()方法的代码

String value = "";
static Bitmap bitmap;
static Canvas canvas;
public void init(){// this is called by constructor method
  this.setWillNotDraw(false);
  bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
  canvas = new Canvas();
  canvas.setBitmap(bitmap);
}
public void onDraw(Canvas canvas){
  canvas.drawBitmap(bitmap, 0, 0, null);
  drawGrid();
}
public void drawGrid(){
  Paint paint = new Paint();
  paint.setColor(Color.GRAY);
  paint.setStrokeWidth(1);
  canvas.drawText(value, somex, somey, paint);
}
public void changeData(String value){
  this.value = value;
  this.postInvalidate();
}

另一个问题,我称之为Canvas.drawColor(Color.BLACK)的正确位置在哪里?

2 个答案:

答案 0 :(得分:0)

我使用下面的代码,它适用于我。清除画布上的画面。

public void resetBitmapCanvasAndPath() {
    // TODO Auto-generated method stub
    mDrawingUtilities.mBitmap = Bitmap.createBitmap(Constants.SCREEN_WIDTH,Constants.SCREEN_HEIGHT ,
            Bitmap.Config.ARGB_8888);
    mDrawingUtilities.mCanvas = new Canvas(mDrawingUtilities.mBitmap);
    mDrawingUtilities.mPath = new Path();
} 

这是一个类似于您的问题的链接,并查看接受的答案。 How to clear finger paint?

答案 1 :(得分:-2)

使用Color.TRANSPARENT而不是Color.BLACK