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

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

В формате 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 .

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