我有一个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)
的正确位置在哪里?
答案 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