WindowInsets.isRound()在创建表盘时是否有效?

时间:2015-04-10 13:46:19

标签: android wear-os

我已按照android.com上的示例扩展了CanvasWatchFaceService.Engine,但在我测试过的3台设备上(Moto360,圆形仿真器和方形仿真器),isRound()是总是假的。调用onApplyWindowInsets,但是传入的insets是错误的(除了方形模拟器之外)。

我在12月看到这是一个已知的问题,但是应该修复后来的模拟器(和Moto360)。是否有一些我忘了打电话?

public class WatchfaceService extends CanvasWatchFaceService {
    @Override
    public Engine onCreateEngine() {
        return new Engine();
    }

    private class Engine extends CanvasWatchFaceService.Engine {
        @Override
        public void onApplyWindowInsets(WindowInsets insets) {
            super.onApplyWindowInsets(insets);
            // insets.isRound() always returns false
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我的案例中的问题是执行不同方法的时刻。首先是onCreate,然后是onApplyWindowsInset,然后是onDraw。因此,您需要在onDraw方法下应用正确的背景图像。否则isRound()将没有正确的值,因为它尚未设置。尝试比较onCreate中的isRound()值,然后在onDraw下。你会看到差异。