为了实现Android版的表盘,我正在使用CanvasWatchFaceService
。这使用Engine
在画布上进行更改。示例代码如下所示:
public class WatchFace extends CanvasWatchFaceService {
@Override
public MyEngine onCreateEngine() {
return new MyEngine();
}
private class MyEngine extends CanvasWatchFaceService.Engine { ... }
// The above line is basically:
// private class MyEngine extends WatchFace.Engine { ... }
}
假设我想要多个只使用一个CanvasWatchFaceService
的{{1}}个类。这是因为Engine
中的代码可以重用于我的目的。
这怎么可能?我似乎无法自己取出Engine
,因为MyEngine
类型的封闭实例必须在范围内。出于同样的原因,也不能使它静止。
解决此问题的最佳方法是什么?
----------------------------更新:----------------- ---------- 这是我到目前为止所做的,但没有给我一个语法错误:
CanvasWatchFaceService
,并为 public class WatchFace2 extends CanvasWatchFaceService {
@Override
public WatchFace.MyEngine onCreateEngine() {
return new WatchFace(WatchFace2.this).onCreateEngine();
}
}
添加了一个构造函数,该构造函数接收给定的WatchFace
作为上下文,这是CanvasWatchFaceService
内部工作所必需的。
运行正常,但MyEngine
存在语义错误。错误不会在我的代码的任何行显示中断。
答案 0 :(得分:0)
public class WatchFace extends CanvasWatchFaceService {
@Override
public MyEngine onCreateEngine() {
return new MyEngine();
}
private class MyEngine extends CanvasWatchFaceService.Engine { ... }
// The above line is basically:
// private class MyEngine extends WatchFace.Engine { ... }
}
然后扩展WatchFace
public class WatchFace1 extends WatchFace{
}
public class WatchFace2 extends WatchFace{
}