如何在Android Wear上每隔20毫秒制作背景动画?

时间:2016-02-13 17:42:00

标签: android animation sequence wear-os

我正在寻找答案,但我找不到它们:(我正在尝试使用仅仅背景动画(20个jpegs或png的序列)为Android佩戴构建一个表盘。我发现了这个很好的例子:{ {3}}

在此示例中,作者使用此类每1分钟切换一次背景图像。

private class Engine extends CanvasWatchFaceService.Engine {
    float HOUR_HAND_LENGTH = 80.0f;
    final float MINUTE_HAND_LENGTH = 120.0f;
    final int[] BACKGROUND_RES_ID = {
            R.drawable.image_1,
            R.drawable.image_2,
            R.drawable.image_3,
            R.drawable.image_4,
    };
}
//...and then...

// draw background

        Resources resources = MyWatchFaceService.this.getResources();
        int imgResId;
        if (isInAmbientMode()) {
            imgResId = R.drawable.black_background;
        } else {
            imgResId = BACKGROUND_RES_ID[mTime.minute % BACKGROUND_RES_ID.length];
        }

我可以将mTime.minute更改为mTime.second,但这还不够。我想一个接一个地绘制背景图像而没有延迟(毫秒)。

imgResId = BACKGROUND_RES_ID [mTime.second%BACKGROUND_RES_ID.length]

我无法在互联网上找到任何(代码)示例od watch face(动画(逐帧)背景。)

1 个答案:

答案 0 :(得分:1)

您需要拨打invalidate()表格以重绘。在您使用的示例中,invalidate()仅称为onTimeTick(),每分钟发生一次。你希望它继续发生。如果需要,您可以使用每秒触发一次的处理程序并调用invalidate(),或者只需添加:

        /* Draw every frame as long as we're visible and in interactive mode. */
        if ((isVisible()) && (!mAmbient)) {
            invalidate();
        }

onDraw()方法结束时。