我在做动态壁纸。我有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 :(得分:1)
来自Android Canvas and Drawables上的API指南:
将图形直接绘制到Canvas。这样,你亲自打电话 适当的类的onDraw()方法(将它传递给你的Canvas),或者 Canvas draw ...()方法之一(如drawPicture())。 这样做, 你也可以控制任何动画。
这意味着您必须自己逐帧执行动画。如果您实际上不需要绘制复杂图形,请考虑切换回标准视图,以便可以使用AnimationDrawable
等帮助类。 Check here了解如何在Canvas中制作自己的动画。