我正在寻找答案,但我找不到它们:(我正在尝试使用仅仅背景动画(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(动画(逐帧)背景。)
答案 0 :(得分:1)
您需要拨打invalidate()
表格以重绘。在您使用的示例中,invalidate()
仅称为onTimeTick()
,每分钟发生一次。你希望它继续发生。如果需要,您可以使用每秒触发一次的处理程序并调用invalidate()
,或者只需添加:
/* Draw every frame as long as we're visible and in interactive mode. */
if ((isVisible()) && (!mAmbient)) {
invalidate();
}
在onDraw()
方法结束时。