1

如何每 5 秒line在画布上制作动画?WearOS

我知道我们必须使用 AnimatorTask 来调用postInvalidate(). 但是,由于我是直接在 上绘制的linecanvas所以我没有View对象。

public class AnimatorTask extends TimerTask {

    private WatchEventInfo eventInfo;

    public AnimatorTask(WatchEventInfo eventInfo) {
        this.eventInfo = eventInfo;
    }

    @Override
    public void run() {
        drawAndAnimate();
    }

    public WatchEventInfo getEventInfo() {
        return eventInfo;
    }

    private void drawAndAnimate() {

        Canvas canvas = eventInfo.getCanvas();

        // For testing
        canvas.drawLine(100, 100, 300, 300 markerPaint);
    }
}

假设我存在于子类中,如何访问canvas.drawLine()方法对象并通知canvas重绘自己?TimerTaskTimerTaskCanvasWatchFaceService

4

1 回答 1

2

onDraw(Canvas canvas, Rect bounds)您可以通过覆盖CanvasWatchFaceService.Engine 类中声明的方法来访问画布。

如果您使用 Android Studio 中的新建项目向导创建表盘,您会注意到 MyWatchFace 类末尾有一个名为handleUpdateTimeMessage(). 此逻辑将确保您的 onDraw 方法INTERACTIVE_UPDATE_RATE_MS在交互模式下以指定的时间间隔(默认为每秒一次)调用。

在您的 onDraw 方法中添加一个检查,以仅在自上次更新后五秒后触发您的线条动画。

于 2019-09-03T17:41:12.733 回答