2012-11-30 28 views
0

我有一個LinearLayout其背景顏色設置爲黑色。在這LinearLayout,我有一個View其中我使用Canvas繪製。由於onDraw()方法將被多次調用,因此我想在清除屏幕時使用Canvas.drawColor(Color.BLACK)方法清除之前繪製的內容。android:Canvas.drawColor(Color.BLACK)無法清除畫布

但是我得到的是一個沒有任何東西的黑色屏幕,即使我畫了一些新的東西。我已經可以在onDraw()方法中添加Canvas.drawColor(Color.BLACK)之前繪製一些東西。

編輯:我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

「但是我得到的是一個沒有任何東西的黑屏。你期望得到什麼? – Simon

+0

哦,我想清除屏幕並重繪,但重畫部分不能被看到 – Cacheing

+0

請向我們展示您的'onDraw()'方法,猜測沒有用,浪費時間... – WarrenFaith

回答

-2

使用Color.TRANSPARENT而是採用Color.BLACK

+0

我試過了,但'Color.TRANSPARENT'不會清除任何東西。 – Cacheing

+0

是的,你是對的,但從你的問題我明白,你想讓你的佈局透明而不是黑色 –

+0

對不起,佈局必須是黑色 – Cacheing

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

你的意思是重置位圖?它也不起作用。我最終得到像使用'Canvas.drawColor(Color.BLACK)'的黑屏。我無法畫出新的東西。 – Cacheing

+0

以及代碼適合我。所以你需要看看如何實現這一點。它清除了畫布上的凹痕,我可以再次畫在畫布上。 – Raghunandan

+0

看看android中fingerpaint的演示代碼。可能會有幫助。 – Raghunandan