通过复杂功能提供有用的数据

复杂功能是物理表盘和智能手表表盘的一项功能,用于显示附加信息。通常,用户会选择复杂功能中显示的信息。

复杂功能通常有多种形状

  1. 矩形
  2. 圆形
  3. 弧形,沿着表盘边缘
  4. 背景,覆盖整个表盘

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

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

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

复杂功能中的数据源

复杂功能数据源仅指定要渲染的数据和复杂功能类型。数据源不负责确定数据应如何在表盘上显示。

例如,健康与健身的“每日步数”复杂功能数据源可能会生成以下数据,以指示用户今天已经走了目标 10000 步中的 2400 步

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

表盘指定其能够渲染的复杂功能类型。这决定了用户可以选择哪些数据源。

在“每日步数”示例中,您在表盘定义中决定如何渲染 ValueTargetValue:是作为文本显示,还是作为进度指示器?这由表盘设计师您来决定。

定义复杂功能

在表盘上显示复杂功能对用户来说很有价值,因为它允许他们一目了然地获取更广泛的信息,并根据自己的需求进行自定义。

决定您的表盘支持多少个复杂功能,它们的形状和位置,以及它们支持哪些数据类型。

表盘上每个用于复杂功能的空间都定义为 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>

类似的方法可以应用于其他边界形状,如矩形和椭圆形。

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

复杂功能系统提供了多种不同的类型,允许表盘表达它可以在屏幕上表示的数据类型。例如,如前所示的弧形复杂功能不适合基于图像的复杂功能数据类型(例如 SMALL_IMAGE),但非常适合数值数据(例如 RANGED_VALUE)。

在您的 ComplicationSlot 声明中,将 supportedTypes 设置为可在此插槽中渲染的类型列表,用空格分隔。

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

<ComplicationSlot slotId="1" ...>
    <BoundingArc .../>
    <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 ...>
    <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 添加到表盘时存在许多挑战

  1. 复杂功能数据类型众多。不同的应用可能提供其中一种或多种类型。
  2. 每种复杂功能数据类型除了具有强制属性外,还有许多可选属性。请检查是否根据可用属性进行了最实用的渲染,同时考虑到不同的组合。

为了解决这些问题,一些策略包括

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