0

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)ですか?

4

2 に答える 2

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();
} 

これがあなたの質問に似たリンクであり、受け入れられた答えを見てください。 フィンガーペイントをクリアする方法は?

于 2012-11-30T14:38:22.767 に答える
-2

使うColor.TRANSPARENT代わりに使うColor.BLACK

于 2012-11-30T14:38:03.530 に答える