2013-08-04 136 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中完成自己的动画的示例。