יכול להיות שתרצו לשנות את המראה של חלקים ממסך השעון, למשל, לשנות את המיקום, הגודל או החשיפה, לרוב בתגובה למקורות של נתוני קלט כמו השעה ביום או חיישן התאוצה.
ב-Watch Face Format, אפשר לעשות זאת באמצעות הרכיב 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" />
<...>
</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
.
כך תוכלו לפשט את התמונה הכוללת, ולהפריד בין טרנספורמציה שמבוססת על תנועה לבין טרנספורמציות אחרות, כמו טרנספורמציה שמבוססת על זמן, שעשויות לחול על אותו רכיב.