Возможно, вам захочется изменить внешний вид отдельных частей циферблата, например, изменить их положение, размер, видимость, часто в ответ на данные, поступающие из таких источников , как время суток или показания акселерометра.
В формате Watch Face Format это достигается с помощью элемента 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" /> <Stroke color="#FF00FF" thickness="20" /> </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 для изменения положения или масштаба элемента, Watch Face Format предоставляет для этого отдельный элемент: Gyro .
Это позволяет упростить общую картину, отделив преобразования, основанные на движении, от других преобразований, таких как преобразования, основанные на времени, которые могут применяться к тому же элементу.