通过复杂功能提供实用数据

复杂功能是实体手表和智能手表表盘的一项功能,可显示其他信息。通常,用户会选择在复杂功能中显示哪些信息。

复杂功能通常有多种形状:

  1. 矩形
  2. 圆形
  3. 表盘边缘的弧线
  4. 覆盖整个表盘的背景

在 Wear OS 中,复杂功能系统可分为两部分:

  1. 复杂功能数据源
  2. 复杂功能渲染

例如,健康与健身应用可以实现“每日步数”复杂功能数据源。这可由 WFF 表盘呈现。

复杂功能中的数据源

复杂功能数据源仅指定要呈现的数据和复杂功能类型。数据源在确定数据应如何在表盘上呈现方面不发挥任何作用。

例如,健康与健身“每日步数”小部件数据源可能会生成以下数据,以表明用户今天已完成 10,000 步目标中的 2,400 步:

请注意,此数据中没有任何内容表明应如何呈现。

表盘会指定它可以呈现哪些类型的小部件。这决定了用户随后可选择哪些数据源。

以“每日步数”为例,您可以在表盘定义中决定如何呈现 ValueTargetValue:是作为文本还是作为进度指示器?这需要由您(表盘设计者)来决定。

定义复杂功能

提供在表盘上显示复杂功能的功能对用户来说非常有用,因为这样一来,他们就可以一目了然地查看更多信息,并且可以根据自己的需求进行自定义。

确定要在表盘上支持多少个复杂功能(如果有),这些复杂功能的形状和位置,以及它们支持的数据类型。

表盘上用于显示小部件的每个空间都定义为 ComplicationSlot,其中定义了用于呈现小部件的边界区域:

<ComplicationSlot slotId="1" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY"
    x="100" y="100" width="100" height="100">
    <BoundingOval x="0"  y="0" width="100" height="100" />
    <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>

类似的方法也适用于其他边界形状,例如矩形和椭圆。

设置复杂功能类型和默认值

复杂功能系统提供了多种不同的类型,使表盘主题能够表达它可以在屏幕上显示的数据类型。例如,如前所述,弧形复杂功能不太适合 SMALL_IMAGE 等基于图片的复杂功能数据类型,但非常适合 RANGED_VALUE 等数值数据。

ComplicationSlot 声明中,将 supportedTypes 设置为可在相应 slot 中呈现的类型(以空格分隔的列表)。

您还必须为 ComplicationSlot 设置默认来源,除非您允许 EMPTY 类型,在这种情况下,设置默认来源是可选的:

<ComplicationSlot slotId="2" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY"
    x="250" y="100" width="100" height="100">
    <DefaultProviderPolicy
        defaultSystemProvider="STEP_COUNT"
        defaultSystemProviderType="SHORT_TEXT" />
    <!-- ... -->
</ComplicationSlot>

除了必须指定系统提供程序之外,您还可以选择指定非系统提供程序,例如要默认使用的第三方提供程序(如果已安装)。

渲染复杂功能数据

定义了 ComplicationSlot、边界和包含的 Complication 元素后,使用标准 WFF 组件(例如 PartDraw, PartImagePartText)显示小部件数据。

Complication 数据中的元素可以访问一个特殊的数据源:COMPLICATION,该数据源提供由小部件数据源设置的各种数据属性。

例如,SMALL_IMAGE 小部件可以在 COMPLICATION.SMALL_IMAGECOMPLICATION.SMALL_IMAGE_AMBIENT 值中设置。以下内容可用于 Image 元素中,以代替资源:

<Complication type="SMALL_IMAGE">
    <PartImage x="0" y="0" width="100" height="100">
        <Image resource="[COMPLICATION.SMALL_IMAGE]" />
    </PartImage>
</Complication>

每种不同的小部件类型都有一组不同的可设置属性;如需查看每种类型的完整列表,请参阅 Complication 参考文档。此示例显示了来自 SHORT_TEXT 复杂功能的文本:

<Complication type="SHORT_TEXT">
    <PartText x="0" y="0" width="100" height="100">
        <Text>
            <Font size="32">
                <Template>
                    <![CDATA[%s]]><Parameter expression="[COMPLICATION.TEXT]" />
                </Template>
            </Font>
        </Text>
    </PartText>
</Complication>

在呈现复杂功能时最大限度地提高实用性

ComplicationSlots 添加到表盘时,会遇到以下一些挑战:

  1. 复杂功能数据类型有很多种。不同的应用可能会提供其中一项或多项功能。
  2. 每种小部件数据类型除了具有必需属性外,还有许多可选属性。检查是否根据可用属性生成了最有用的渲染效果,同时考虑了不同的组合。

为解决这些问题,您可以采取以下策略:

  1. 支持为每个 slot 设置多种复杂功能类型。例如,复杂功能数据源广泛支持 SHORT_TEXT,因此支持多种不同类型(例如用于小型圆形复杂功能的 SHORT_TEXT RANGED_VALUE)可提高兼容性。
  2. 在表盘上提供不同的小部件类型。例如,您可以在位于边缘的弧形复杂功能上支持 RANGED_VALUEGOAL_PROGRESS,在表盘主体中的圆形复杂功能上支持 SHORT_TEXTSMALL_IMAGE
  3. 检查每种数据类型的可选元素。例如,SHORT_TEXT 可选择性地支持标题属性和图片。用于呈现可用数据的布局可能会因是否有图片或标题而异。