חלונית מתארת את המאפיינים של האזור שהיא תופסת ומשמשת כמאגר של אפליקציה. הגדרות XML משמשות להגדרת חלוניות, ומספקות גישה גמישה להתאמה אישית של ממשקי משתמש ללא צורך בכתיבת קוד. כדי לנהל מופעים ומצבים, המערכת עוקבת אחרי לוחות מוגדרים.
רשימת החלוניות
ממשק המשתמש של המערכת טוען את ההגדרות של החלוניות שלו ממערך משאבים בשם window_states. מערך המשאבים הזה מפנה לקובצי ה-XML שבהם מוגדרות ההגדרות של כל חלונית. הגישה המרכזית הזו מאפשרת לטעון את החלוניות שמנוהלות על ידי Scalable UI כמו שצריך, והמערכת יכולה להשתמש בהן.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="window_states">
<item>@xml/app_panel</item>
<item>@xml/back_panel</item>
...
</array>
</resources>
הגדרת החלונית
כל חלונית במסגרת ממשק המשתמש שניתן להתאמה מוגדרת באמצעות תג XML בשם <TaskPanel> או <DecorPanel>. <TaskPanel> מתאר את המאפיינים של מאגר אפליקציות, ו-<DecorPanel> מתאר את המאפיינים של מאגר תצוגות.
ממשק המשתמש של המערכת טוען את הגדרות החלוניות האלה ועוקב אחרי החלוניות עד שנטענת הגדרה אחרת. לדוגמה, שינוי בהגדרות עקב סיבוב או בקשה מפורשת מהמערכת. הרכיבים <TaskPanel> ו-<DecorPanel> משמשים כרכיבי בסיס ליצירת חוויה מותאמת אישית באמצעות רכיבי ממשק משתמש שניתנים להגדרה.
מאפייני XML
התג <TaskPanel> יכול להכיל את המאפיינים הבאים, שבעזרתם אפשר להגדיר מצבים ומעברים.
| מאפיין | סטטוס | תיאור |
|---|---|---|
id |
חובה | מציין מזהה ייחודי של החלונית. המאפיין הזה משמש לאחזור החלונית מ-PanelPool ולניהול המצב שלה במערכת. |
role |
חובה | הגדרה של המטרה או הפונקציה של החלונית במערכת. הערך יכול להפנות למשאב מחרוזת, למערך מחרוזות של שמות רכיבים או למזהה פריסה. לדוגמה, אפשר להגדיר פעילויות מתמידות שצריכות להיות מוצגות תמיד בחלונית, או פריסה שצריך להרחיב. |
defaultVariant |
אופציונלי | מציין את המזהה של הווריאציה שהלוח צריך לאמץ בהתחלה כשהוא נטען. אם לא מציינים ערך, המערכת יכולה להשתמש בגרסה הראשונה שהוגדרה כברירת מחדל. |
displayId |
אופציונלי | מציין את המזהה של המסך שבו אמורה להופיע החלונית. |
defaultLayer |
אופציונלי | אפשר לציין סדר Z כברירת מחדל לווריאציות של החלונית אם הווריאציות לא מגדירות שכבה באופן מפורש. |
controller |
אופציונלי, יכול להשתנות |
השדה הזה מפנה למשאב (בדרך כלל מזהה XML) שמגדיר בקר ספציפי לחלונית, שמאפשר לשמור ערכי הגדרה ולהעביר אותם לבקרים של חלוניות בהתאמה אישית. בבקרים האלה צריך להטמיע את הממשק |
רכיבי צאצא ב-XML
התגים <TaskPanel> ו-<DecorPanel> יכולים לכלול את רכיבי הבן האלה כדי להגדיר מאפיינים והתנהגויות שמוגדרות כברירת מחדל.
| מאפיין | תיאור |
|---|---|
<Variant> |
תג מוטמע מתאר הגדרה חזותית ספציפית של החלונית בכל רגע נתון. לוח יכול לכלול כמה וריאציות, שלכל אחת מהן יש מזהה ייחודי. כל וריאציה מגדירה מאפיינים כמו גבולות, חשיפה, שכבה, אלפא, רדיוס פינות ושוליים עבור ההגדרה הספציפית הזו. וריאציות יכולות גם לרשת מאפיינים מוריאציית הורה. |
<KeyFrameVariant> |
ההרחבה של <Variant> מאפשרת אינטרפולציה של מאפיינים חזותיים בין וריאציות שונות על סמך ערך שבר רציף (0 עד 1), והיא משמשת למעברים חלקים ודינמיים, למשל במהלך פעולת גרירה, כשמצב החלונית תלוי בקלט רציף כמו כמות הגרירה. |
<Transitions> |
תג מקונן שמכיל אוסף של הגדרות כל |
תג <TaskPanel> יכול לכלול גם את רכיבי הבן המיוחדים האלה כדי להגדיר התנהגויות ספציפיות למשימות.
| מאפיין | תיאור |
|---|---|
<Restart> |
תג מוטמע שמתאר מדיניות הפעלה מחדש שתחול כש-TaskPanel יהיה ריק. התג הזה תומך במאפיינים
policy, שאפשר להגדיר לו את הערך DEFAULT או
LAST, ו-maxRetry, שמציין כמה פעמים המערכת תנסה להפעיל מחדש לפני שתפסיק את הניסיון. |
<TaskBehavior> |
תג מוטמע שמתאר את ההתנהגות של הפעלת משימות בחלונית הזו. התג הזה
תומך במאפיין newTaskLaunchPolicy, שקובע את אופן הפעולה של השקת משימות חדשות מ-TaskPanel הזה. הערכים התקינים להגדרה של המדיניות הזו הם DEFAULT, REMAIN_IN_SOURCE או REPARENT_TO_SOURCE. |
קוד לדוגמה
<TaskPanel id="@+id/panelId"
role="@array/roleValue"
defaultVariant="@id/closed"
displayId="0" >
<Variant id="@+id/base">
<Bounds left="0" top="0" width="100%" height="100%"/>
</Variant>
<Variant id="@+id/opened" parent="@id/base">
<Visibility isVisible="true"/>
</Variant>
<Variant id="@+id/closed" parent="@id/base">
<Visibility isVisible="false"/>
</Variant>
<Transitions>
<Transition fromVariant="@id/closed"
toVariant="@id/opened"
onEvent="open_event"/>
<Event id="_System_TaskOpenEvent" panelId="@id/panelId" />
</Transition>
</Transitions>
</TaskPanel>