动态更改元素外观

您可能需要更改表盘各部分的外观,例如更改位置、大小、可见性,这通常是为了响应输入数据源,例如时间或加速度计。

在表盘格式中,可通过使用 Transform 元素实现此目的。并非所有元素都可以转换,但主要的可转换元素包括:GroupPart* 元素以及形状和样式等绘制基元。

可转换的每个元素的属性在参考文档中都会标记为可转换。

转换本身在表盘格式表达式语言的 value 属性中指定,其中可以包含数据源。target 用于指定要在父元素中更改的属性。

例如,如需更改 Arc 的角度以反映步骤进度,请执行以下操作:

<Arc centerX="225" centerY="225" height="420" width="420" startAngle="0" endAngle="0">
  <Transform target="endAngle" value="[STEP_PERCENT] * 3.6" />
  <...>
</Arc>

随着 STEP_PERCENT 的变化,系统会重新计算 endAngle 并重新绘制 Arc

当 Transform 元素更改目标值时,最好让此更改在一段时长内以动画形式呈现,而不是立即更改值,因为后者可能会让人感到不适。您可以使用 Animation 元素来实现此目的:

<PartDraw x="100" y="150" width="250" height="120" >
  <Ellipse x="0" y="0" width="50" height="50">
    <Fill color="#ff0000" />
    <!-- Red ball with no animated transition -->
    <Transform target="x" value="[SECOND] % 2 == 0 ? 0 : 200"/>
  </Ellipse>
  <Ellipse x="0" y="100" width="50" height="50">
    <Fill color="#00ff00" />
    <!-- Green ball eases between each position -->
    <Transform target="x" value="[SECOND] % 2 == 0 ? 0 : 200">
      <Animation duration="1" interpolation="EASE_IN_OUT" />
    </Transform>
  </Ellipse>
</PartDraw>

使用加速度计进行转换

虽然可以将 Transform 元素与陀螺仪数据源(例如 ACCELEROMETER_ANGLE_X)搭配使用来更改元素的位置或缩放比例,但表盘格式为这些元素提供了单独的元素:Gyro

这样,您就可以简化整体情况,将基于移动的转换与可能应用于同一元素的其他转换(例如基于时间的转换)分开。