复杂功能是指显示更多信息的实体手表和智能手表表盘的功能。通常,用户会选择复杂功能中显示的信息。
复杂功能通常有多种形状:
- 矩形
- 圆形
- 沿表盘边缘的弧形
- 背景,覆盖整个表盘
在 Wear OS 中,复杂功能系统可分为两部分:
- 复杂功能数据源
- 复杂功能的渲染
例如,健康与健身应用可以实现“每日步数”复杂功能数据源。这可以由 WFF 表盘呈现。
复杂功能中的数据源
复杂功能数据源仅指定要呈现的数据和复杂功能的类型。数据源不会参与决定数据在表盘上的呈现方式。
例如,健康与健身“每日步数”复杂功能数据源可能会生成以下数据,以指示用户今天已走 2400 步,目标是 10, 000 步:
- 类型:
GOAL_PROGRESS
- 值:
2400
- TargetValue:
10000
请注意,这些数据中没有任何内容表明应如何呈现此内容。
表盘会指定其能够呈现哪些类型的复杂功能。这将决定用户可以从中选择哪些数据源。
在“每日步数”示例中,您需要在表盘定义中确定如何呈现 Value
和 TargetValue
:是作为文本还是作为进度指示器?这由表盘主题设计师决定。
定义复杂功能
让用户能够在表盘上显示复杂功能对他们来说很有价值,因为这样他们可以一目了然地查看更多信息,并根据自己的需求进行自定义。
确定表盘是否支持复杂功能以及支持多少个复杂功能、复杂功能的形状和位置,以及复杂功能支持的数据类型。
表盘上用于显示复杂功能的每个空间都定义为 ComplicationSlot
,其中定义了用于呈现复杂功能的边界区域:
<ComplicationSlot slotId="1" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY"
x="0" y="0" width="225" height="225">
<BoundingArc centerX="225" centerY="225" width="450" height="450"
startAngle="270" endAngle="360" thickness="50" />
<Complication type="SHORT_TEXT">
<!-- Complication content for rendering SHORT_TEXT data goes here -->
</Complication>
<Complication type="SMALL_IMAGE">
<!-- Complication content for rendering SMALL_IMAGE data goes here -->
</Complication>
</ComplicationSlot>
类似的方法可应用于其他边界形状,例如矩形和椭圆形。
设置复杂功能类型和默认值
复杂功能系统提供了多种不同类型,让表盘可以表示其可以在屏幕上显示的数据类型。例如,如前所述,Arc 复杂功能不适合基于图片的复杂功能数据类型(例如 SMALL_IMAGE
),但非常适合数字数据(例如 RANGED_VALUE
)。
在 ComplicationSlot
声明中,将 supportedTypes
设置为可在此槽中呈现的类型的以空格分隔的列表。
您还必须为 ComplicationSlot
设置默认来源,除非您允许使用 EMPTY
类型,在这种情况下,设置默认来源是可选的:
<ComplicationSlot slotId="1" ...>
<BoundingArc .../>
<DefaultProviderPolicy
defaultSystemProvider="STEP_COUNT"
defaultSystemProviderType="SHORT_TEXT" />
</ComplicationSlot>
除了必须指定系统提供程序之外,您还可以选择指定非系统提供程序,例如默认使用的第三方提供程序(如果已安装)。
渲染复杂功能数据
定义 ComplicationSlot
、边界和包含的 Complication
元素后,使用标准 WFF 组件(例如 PartDraw, PartImage
和 PartText
)来显示复杂功能数据。
Complication
数据中的元素可以访问特殊的数据源:COMPLICATION
,该数据源提供复杂功能数据源设置的各种数据属性。
例如,SMALL_IMAGE
复杂功能可以设置 COMPLICATION.SMALL_IMAGE
和 COMPLICATION.SMALL_IMAGE_AMBIENT
值。在 Image
元素中,可以使用以下内容来替代资源:
<Complication type="SMALL_IMAGE">
<PartImage ...>
<Image resource="[COMPLICATION.SMALL_IMAGE]" />
</PartImage>
</Complication>
每种复杂功能类型都有一组可设置的属性;如需查看每种复杂功能的完整属性列表,请参阅 Complication
参考文档。以下示例显示了 SHORT_TEXT
复杂功能中的文本:
<Complication type="SHORT_TEXT">
<PartText ...>
<Text>
<Font ...>
<Template>
<![CDATA[%s]]><Parameter expression="[COMPLICATION.TEXT]" />
</Template>
</Font>
</PartImage>
</Complication>
在呈现复杂功能时最大限度地提高实用性
向表盘添加 ComplicationSlots
时会遇到一些挑战:
- 复杂功能数据类型有很多种。不同的应用可能会提供其中一种或多种功能。
- 每种复杂功能数据类型除了具有强制性属性之外,还具有许多可选属性。检查是否从可用属性中进行最实用的渲染,同时考虑不同的组合。
如需解决这些问题,可以采用以下策略:
- 支持每个槽位使用多种复杂功能类型。例如,复杂功能数据源广泛支持
SHORT_TEXT
,因此支持多种不同类型(例如,为小圆形复杂功能支持SHORT_TEXT RANGED_VALUE
)可提高兼容性。 - 在表盘上提供不同类型的复杂功能。例如,您可以在边缘位置的弧形复杂功能上支持
RANGED_VALUE
和GOAL_PROGRESS
,并在表盘正文中的圆形复杂功能上支持SHORT_TEXT
和SMALL_IMAGE
。 - 检查每种数据类型的可选元素。例如,
SHORT_TEXT
可以选择支持标题属性和图片。用于呈现可用数据的布局可能会因图片或标题是否可用而有所不同。