是否有可能从connectIQ API检查手表是圆的还是方的?
我的应用程序正在为计时器绘制进度条如果我找到一种方法来确定屏幕是圆形还是方形,我可以使它通用
类Toybox::System::DeviceSettings
具有screenShape()
方法。
具有以下可能的返回值:
-
SCREEN_SHAPE_ROUND = 1
-
SCREEN_SHAPE_SEMI_ROUND = 2
-
SCREEN_SHAPE_RECTANGLE = 3
可以使用资源编译器为不同的屏幕几何形状指定资源。这可以用来识别应用程序正在哪个设备上运行。
在您的项目中,通过在项目的根目录中创建特定于设备的目录(例如resources-vivoactive或resources-fenix3),为您打算支持的每个设备指定一组唯一的资源(包括字符串、图像和菜单等内容)。
接下来,在每个设备的资源目录中的resources.xml文件中创建一个字符串资源,指定设备类型:
<resources>
<bitmap id="LauncherIcon" filename="images/launcher_icon.png" />
<string id="AppName">MyApp</string>
<string id="deviceType">vivoactive</string>
</resources>
当应用程序启动时,做一个简单的检查,以获得应用程序正在运行的设备:
function onStart() {
deviceType = Ui.loadResource(Rez.Strings.deviceType);
}
然后,检查deviceType当你需要为一个特定的设备做一些独特的事情:
function drawProgressBar() {
if (deviceType.equals("vivoactive")) {
// Do vivoactive-specific stuff here
...
}
}
如果你愿意,你可以抽象一点,使用更通用的deviceTypes,如'round', 'square'等,这样你就不必编写逻辑来处理每个独特的设备模型。
似乎没有一个直接的功能,但你可以随时检查表盘的宽度和高度:
dc.getWidth(), dc.getHeight()
如果它们相等,比如218px,你有一个 fenix3 和一个明显的圆脸。如果它们是205px x 148px,你处理的是方形vívoactive。
也许写一个可以从onLayout调用的函数:
function isRoundFace (dc) {
return dc.getWidth() == dc.getHeight();
}