【问题标题】:Wear OS animation AndroidWear OS 动画 Android
【发布时间】:2019-09-03 01:42:35
【问题描述】:

如何在画布上以 WearOS 每 5 秒为 line 设置动画?

我知道我们必须使用 AnimatorTask 来调用 postInvalidate()。但是由于我直接在canvas 上绘制line,所以我没有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);
    }
}

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

【问题讨论】:

    标签: android android-canvas android-wear-2.0 watch-face-api


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-09
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2014-12-12
      • 1970-01-01
      相关资源
      最近更新 更多