您可能需要更改表盘部分内容的外观,例如更改位置、大小、可见性,通常是根据输入数据源(例如一天中的时间或加速度计)进行更改。
在表盘格式中,这是通过使用 Transform 元素实现的。并非所有元素都可以转换,但主要的可转换元素包括:Group、Part* 元素以及形状和样式等绘图基元。
参考文档中会标记每个可转换元素的属性。
转换本身在 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。
这样,您就可以简化整体画面,将基于运动的转换与其他转换(例如基于时间的转换)分开,这些转换可能会应用于同一元素。