繁体   English   中英

Android Wear:WatchFace中的动画

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM