我已按照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
}
}
}
答案 0 :(得分:0)
我的案例中的问题是执行不同方法的时刻。首先是onCreate,然后是onApplyWindowsInset,然后是onDraw。因此,您需要在onDraw方法下应用正确的背景图像。否则isRound()将没有正确的值,因为它尚未设置。尝试比较onCreate中的isRound()值,然后在onDraw下。你会看到差异。