[英]Android Wear: animation in WatchFace
我将为Android Wear创建动画的WatchFace。 我每X毫秒将20张图片添加(或完全更改)到背景中。
现在:我已经按照本教程进行操作,但是动画没有开始。 我只看到背景中的二十个位图之一:
if (isInAmbientMode()) {
canvas.drawBitmap(mBackgroundAmbient, SRC, DEST, null);
} else {
canvas.drawBitmap(mBackground, SRC, DEST, null);
for (int i = 0; i < LoopBMP.length; i++) {
canvas.save();
Bitmap cloud = LoopBMP[i];
canvas.drawBitmap(cloud,centerX, centerY,null);
canvas.restore();
}
}
有什么建议吗?
您误解了CanvasWatchFaceService.Engine
如何进行绘制。 我猜您发布的代码段在onDraw
方法中; 动画的每一帧都会调用一次此方法。
这意味着您需要将动画“循环”移到onDraw
方法之外。 有几种方法可以完成此操作,但是我根据您的代码在下面进行了哑处理。
private int i;
@Override
public void onDraw(Canvas canvas, Rect bounds) {
super.onDraw(canvas, bounds);
// probably other code here
if (isInAmbientMode()) {
canvas.drawBitmap(mBackgroundAmbient, SRC, DEST, null);
} else {
canvas.drawBitmap(mBackground, SRC, DEST, null);
if (i < LoopBMP.length) {
canvas.save();
Bitmap cloud = LoopBMP[i];
canvas.drawBitmap(cloud,centerX, centerY,null);
canvas.restore();
i++;
// probably want an X-ms delay here to time the animation
invalidate();
} else {
i = 0;
}
}
// probably other code here
}
请注意,这是我刚刚汇总来说明我所谈论内容的摘录; 它绝不是可以立即运行的。 特别是,您将需要在动画的各帧之间进行延迟。 您可以使用此示例中用于二手的Handler
来实现它: http : //developer.android.com/samples/WatchFace/Wearable/src/com.example.android.wearable.watchface/AnalogWatchFaceService.html #l117
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.