Возможно, вам захочется изменить внешний вид частей циферблата часов, например, изменить положение, размер, видимость, часто в ответ на источники входных данных, такие как время суток или акселерометр.
В формате 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
.
Это позволяет упростить общую картину, отделив преобразование, основанное на движении, от других преобразований, например, основанных на времени, которые могут применяться к тому же элементу.