動態變更元素外觀

你可能想變更錶面部分內容的外觀,例如變更位置、大小、顯示設定,通常是根據輸入資料來源 (例如時間或加速度計) 變更。

在錶面格式中,這項功能是透過 Transform 元素達成。 並非所有元素都能轉換,但主要「可轉換」元素包括:GroupPart* 元素,以及繪圖基本元素,例如形狀和樣式。

參考說明文件會標示每個可轉換元素的屬性。

轉換本身是在 value 屬性中指定,採用錶面格式運算式語言,其中可以包含資料來源。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) 變更元素的位置或比例,但錶面格式提供專用的元素:Gyro

這樣一來,您就能簡化整體畫面,將以動作為基礎的轉換與其他轉換 (例如以時間為基礎的轉換) 分開,後者可能會套用至相同元素。