0

android 开发者页面提供了有关 peek 卡的变量选项的以下信息:

选择此查看模式后,查看卡片将根据需要尽可能高,同时在顶部保持足够的空间来绘制系统时间和状态图标。

如何知道卡有多少空间?

我问是因为我的卡片似乎显示得很短,但脸会根据卡片的大小进行调整,并且需要两张有衬里的卡片。

编辑:我没有得到我正在寻找的行为,因为我使用了错误的方法来更改设置。由于被调用的整数对函数有意义,因此程序运行。

.setCardPeekMode(WatchFaceStyle.PEEK_MODE_VARIABLE)
.setPeekOpacityMode(WatchFaceStyle.PEEK_OPACITY_MODE_TRANSLUCENT

PEEK_OPACITY_MODE_TRANSLUCENT 与 PEEK_MODE_SHORT 的值 (1) 相同,因此第二条线路超过了第一条线路。

正确的代码是:

.setCardPeekMode(WatchFaceStyle.PEEK_MODE_VARIABLE)
.setPeekOpacityMode(WatchFaceStyle.PEEK_OPACITY_MODE_TRANSLUCENT)
4

2 回答 2

0

卡片可能会覆盖屏幕的很大一部分,具体取决于系统 UI 样式。您的表盘应适应这些情况,确保用户在通知卡存在时仍能分辨时间。

要确定窥视卡上方的可用空间以便调整表盘,请使用该WatchFaceService.Engine.getPeekCardPosition()方法。

表盘不应干扰系统 UI 元素,如适应系统 UI 元素中所述。如果您的表盘背景较浅或在屏幕底部附近显示信息,您可能需要配置通知卡的大小或启用背景保护。

@Override
public void onCreate(SurfaceHolder holder) {
super.onCreate(holder);

// configure the system UI
setWatchFaceStyle(new WatchFaceStyle.Builder(AnalogWatchFaceService.this)
.setCardPeekMode(WatchFaceStyle.PEEK_MODE_SHORT)
.setBackgroundVisibility(WatchFaceStyle
.BACKGROUND_VISIBILITY_INTERRUPTIVE)
.setShowSystemUiTime(false)
.build());
...
}

上面的代码片段将窥视卡配置为单行高,窥视卡的背景仅短暂显示且仅用于中断通知,并且不显示系统时间。

更新

或者你可以使用relative measurements,我们都知道设备有不同的尺寸和分辨率。

必须使用Canvas.getWidth()“Canvas.getHeight()”方法获取宽度和高度,并使用检测到的屏幕尺寸的一小部分值设置图形元素的位置。如果您调整表盘元素的大小以响应窥视卡片,请使用卡片上方剩余空间的一小部分的值来重新绘制表盘。

于 2016-07-19T02:28:00.670 回答
0

请务必使用 .setCardPeekMode() 作为卡片的高度,使用 .setPeekOpacityMode() 作为半透明度。

因为高度和不透明度调用相同的整数值,所以可以在 setCardPeekMood 中使用 WatchFaceStyle.PEEK_OPACITY_MODE_OPAQUE 和在 setPeekOpacityMode() 中使用 WatchFaceStyle.PEEK_OPACITY_MODE_TRANSLUCENT。这可能会导致不良影响。

于 2016-07-20T18:11:47.763 回答