connectIQ API是否有可能检查手表是圆形还是方形?
我的应用正在为计时器绘制一个进度条,如果我找到一种方法来确定屏幕是圆形还是方形,我可以将其设为通用
答案 0 :(得分:3)
在课堂上:Toybox::System::DeviceSettings
是一种方法screenShape()
,看起来像你想要的。
答案 1 :(得分:2)
似乎没有直接的功能,但您可以随时检查表面的宽度和高度:
dc.getWidth(), dc.getHeight()
如果它们相等,比如218px,你有一个 Fenix 3 ,显然是圆脸。如果它们是205px x 148px,那么你正在处理一个正面vívoactive。
也许写一个你可以从onLayout调用的函数:
function isRoundFace (dc) {
return dc.getWidth() == dc.getHeight();
}
答案 2 :(得分:2)
可以使用resource compiler为不同的屏幕几何体指定资源。这可以用来识别应用程序在哪个设备上运行。
在项目中,通过在项目的根目录中创建特定于设备的目录,为要支持的每个设备指定一组唯一的资源(包括字符串,图像和菜单等)(例如资源-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
...
}
}
如果您愿意,可以稍微抽象一下,使用更通用的设备类型购买,例如&#39; round&#39; square&#39; square&#39;等,这样您就不必写了处理每个独特设备模型的逻辑。