是否可以从connectIQ接口检查手表是圆的还是方形的?
我的应用程序正在为计时器绘制进度条,如果我找到一种方法来确定屏幕是圆形还是方形,我可以使其成为通用的
发布于 2016-11-04 16:19:04
类Toybox::System::DeviceSettings具有方法screenShape()。
可能的返回值如下:
SCREEN_SHAPE_ROUND = 1SCREEN_SHAPE_SEMI_ROUND = 2SCREEN_SHAPE_RECTANGLE = 3发布于 2015-12-22 04:40:42
可以使用resource compiler为不同的屏幕几何形状指定资源。这可以用来识别应用程序在哪个设备上运行。
在您的项目中,通过在项目根目录中创建特定于设备的目录(例如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,比如“圆形”、“方形”等,这样你就不必编写逻辑来处理每个独特的设备模型了。
发布于 2015-10-03 04:05:53
似乎没有一个直接的功能,但你可以随时检查手表表面的宽度和高度:
dc.getWidth(), dc.getHeight()如果它们相等,比如说218px,你就有一个Fenix3,显然是一个圆脸。如果它们是205px 148px,你面对的是一个方形的vívoactive。
也许可以编写一个可以从onLayout调用的函数:
function isRoundFace (dc) {
return dc.getWidth() == dc.getHeight();
}https://stackoverflow.com/questions/31672982
复制相似问题