Erscheinungsbild von Elementen dynamisch ändern

Sie können das Erscheinungsbild von Teilen des Zifferblatts ändern, z. B. die Position, Größe oder Sichtbarkeit, oft als Reaktion auf Eingabedatenquellen wie die Uhrzeit oder den Beschleunigungsmesser.

Im Watch Face-Format wird dies mithilfe des Elements Transform erreicht. Nicht alle Elemente können transformiert werden. Zu den wichtigsten transformierbaren Elementen gehören Group- und Part*-Elemente sowie Zeichenprimitive wie Formen und Stile.

Die transformierbaren Attribute der einzelnen Elemente sind in der Referenzdokumentation entsprechend gekennzeichnet.

Die Transformation selbst wird im value-Attribut in der Ausdruckssprache des Watch Face-Formats angegeben. Diese kann Datenquellen enthalten. Mit target wird das Attribut angegeben, das im übergeordneten Element geändert werden soll.

So ändern Sie beispielsweise den Winkel eines Arc, um den Fortschritt des Schritts widerzuspiegeln:

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

Wenn sich STEP_PERCENT ändert, wird endAngle neu berechnet und Arc neu gezeichnet.

Wenn ein Transform-Element einen Zielwert ändert, kann es wünschenswert sein, diese Änderung über einen bestimmten Zeitraum zu animieren, anstatt eine sofortige Änderung des Werts vorzunehmen, die irritierend wirken könnte. Mit dem Element Animation können Sie Folgendes erreichen:

<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>

Transformationen mit dem Beschleunigungsmesser

Es ist zwar möglich, das Element Transform mit Gyroskopdatenquellen wie ACCELEROMETER_ANGLE_X zu verwenden, um die Position oder Skalierung eines Elements zu ändern, das Zifferblattformat bietet jedoch ein separates Element dafür: Gyro.

So können Sie das Gesamtbild vereinfachen, indem Sie die bewegungsbasierte Transformation von anderen Transformationen wie der zeitbasierten Transformation trennen, die auf dasselbe Element angewendet werden kann.