2013-08-04 137 views
0

我正在做一個動態壁紙。我有一個Runnable(每5秒更新一次),我稱之爲draw()方法,該方法在Canvas上繪製某些東西。它在另一個類中調用了一個應該繪製一系列位圖的方法(帶有延遲,所以它是動畫的)。我如何更改下面的代碼,以便下一個位圖可以延遲繪製?畫布內動畫位圖

int imageToDraw = 10; 
    while(imageToDraw>=0) 
    { 
     Bitmap b = BitmapFactory.decodeResource(mContext.getResources(), mContext.getResources().getIdentifier("image_"+imageToDraw, "raw", mContext.getPackageName())); 

     float centerX = (width - b.getWidth())/2; 
     float centerY = (height - b.getHeight())/2; 

     Paint p = new Paint(); 
     p.setColor(Color.BLACK); 
     mCanvas.drawRect(0f, 0f, (float)width, (float)height, p); //draws a rectangle to clear the screen 
     mCanvas.drawBitmap(b, centerX, centerY, new Paint()); 

     --imageToDraw; 
     b.recycle(); 
    } 
+0

是否有你需要使用畫布的原因? – Doomsknight

+0

因爲我正在做一個動態壁紙,我也在繪製其他的東西。 – domen

回答

1

從Android的API指南Canvas and Drawables

直接繪製圖形的畫布。這樣,您可以親自調用 相應的類的onDraw()方法(將其傳遞給Canvas)或Canvas draw ...()方法之一(如drawPicture())。 這樣做, 你也可以控制任何動畫。

這意味着你必須自己逐幀地執行動畫。如果您實際上不需要繪製複雜的圖形,請考慮切換回標準視圖,以便使用幫助類,如AnimationDrawableCheck here有關如何在Canvas中完成自己的動畫的示例。