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();
    }
4

1 回答 1

1

来自 Android 的关于Canvas 和 Drawables的 API 指南:

将您的图形直接绘制到画布上。这样,您可以亲自调用相应类的 onDraw() 方法(将 Canvas 传递给它),或 Canvas draw...() 方法之一(如 drawPicture())。这样做,您还可以控制任何动画。

这意味着您必须自己逐帧执行动画。如果您实际上不需要绘制复杂的图形,请考虑切换回标准视图,以便您可以使用帮助类,如AnimationDrawable. 在这里查看如何在 Canvas 中制作自己的动画的示例。

于 2013-08-04T09:16:09.987 回答