android:Canvas.drawColor(Color.BLACK)不';我无法清理画布
我有一个android:Canvas.drawColor(Color.BLACK)不';我无法清理画布,android,android-canvas,Android,Android Canvas,我有一个线性布局,其背景色设置为黑色。在这个LinearLayout中,我有一个视图,我在其中使用画布进行绘制。由于onDraw()方法将被多次调用,因此我想在调用onDraw()方法时清除之前绘制的内容,因此我使用Canvas.drawColor(Color.BLACK)清除画布 但我得到的是一个没有任何东西的黑屏,即使我画了一些新的东西。在添加Canvas.drawColor(Color.BLACK)方法中的onDraw()之前,我已经可以绘制一些东西了 编辑:我的onDraw()方法的代码
线性布局
,其背景色设置为黑色。在这个LinearLayout
中,我有一个视图
,我在其中使用画布
进行绘制。由于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)
?使用Color.TRANSPARENT
而不是Color.BLACK
我使用了下面的代码,它适合我。清除画布上的绘图
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();
}
这里有一个与您的问题类似的链接,请查看已接受的答案。
“但我得到的是一个没有任何东西的黑屏”。你期望得到什么?哦,我想清除屏幕并重新绘制,但是重新绘制的部分看不见。请向我们展示你的onDraw()
方法,猜测没有任何用处,浪费时间……是的,你是对的,但从你的问题中我了解到,你想使布局透明。对此,我很抱歉,布局必须为黑色您的意思是重置位图吗?它也不起作用。我最终得到了一个黑屏,就像使用Canvas.drawColor(Color.black)
一样。我不能画新的东西。代码对我来说很有用。因此,您需要了解如何实现相同的功能。它清除了画布上的绘图,我可以再次在画布上绘图。看看android中fingerpaint的演示代码。也许这会有帮助。