Динамически изменять внешний вид элемента

Возможно, вам захочется изменить внешний вид частей циферблата часов, например, изменить положение, размер, видимость, часто в ответ на источники входных данных, такие как время суток или акселерометр.

В формате Watch Face это достигается с помощью элемента Transform . Не все элементы могут быть преобразованы, но основные трансформируемые элементы включают: элементы Group , Part* и примитивы рисования, такие как фигуры и стили.

Атрибуты каждого элемента, которые являются трансформируемыми, отмечены как таковые в справочной документации.

Само преобразование указывается в атрибуте value на языке выражений Watch Face Format, который может включать источники данных. 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 .

Это позволяет упростить общую картину, отделив преобразование, основанное на движении, от других преобразований, например, основанных на времени, которые могут применяться к тому же элементу.