使用WatchFaceKotlin Wear OS样本单独绘制并发症



首先,我使用的是名为WatchFaceKotlin的Google Wear OS示例。

所提供的样本一次显示了所有的并发症。我添加了一个复杂的背景,以便用户可以使用天气图像或其他更个性化的东西自定义背景。问题是,复杂的背景被画得太亮了,以至于图像前面的复杂部分再也看不见了。我想在背景复杂性前使用drawgb(),并让用户在设置中使用滑块来决定背景亮度。我似乎找不到一个地方这样做,因为所有的并发症都是一次绘制并添加drawARGB()之后,使所有并发症变暗。是否有一种方法可以使用新的API拆分复杂性,以便我可以绘制背景,然后绘制drawgb(),然后绘制较小的复杂性?这里是我认为可以做的事情,但有一些东西,我错过了,因为这种方式不能正常工作

在analogwatchcanvasrender .kt

// ----- All drawing functions -----
private fun drawComplications(canvas: Canvas, zonedDateTime: ZonedDateTime) {
for ((_, complication) in complicationSlotsManager.complicationSlots) {
if (complication.enabled) {
complication.render(canvas, zonedDateTime, renderParameters)
canvas.drawARGB(watchFaceData.brightnessFractionDefault.brightnessFraction.toInt(),0,0,0)
}
}
}

必须有一种方法只绘制特定的复杂性,而不是使用复杂性。渲染和绘制他们都在一次。任何想法吗?谢谢你的帮助。

您可以在调用render时添加一个条件,在那里检查槽的id或类型,并在绘制槽后绘制深颜色。

这是一种可以帮助你使它工作的条件:

if (complication.boundsType == ComplicationSlotBoundsType.BACKGROUND) {
...
} else {
...
}

最新更新