在canvas中设置位图动画

时间:2013-08-04 08:54:53

标签: android android-canvas android-animation

我在做动态壁纸。我有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();
    }

1 个答案:

答案 0 :(得分:1)

来自Android Canvas and Drawables上的API指南:

  

将图形直接绘制到Canvas。这样,你亲自打电话   适当的类的onDraw()方法(将它传递给你的Canvas),或者   Canvas draw ...()方法之一(如drawPicture())。 这样做,   你也可以控制任何动画。

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