הגדרת לוח

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

לדוגמה, עקב שינוי בהגדרה בגלל רוטציה או בקשה מפורשת של המערכת. הרכיב <TaskPanel> משמש כרכיב בסיסי ליצירת חוויה מותאמת אישית באמצעות רכיבי ממשק משתמש שניתנים להגדרה.

מאפייני XML

התג <TaskPanel> יכול להכיל את המאפיינים הבאים שבהם אפשר להשתמש כדי להגדיר מצבים ומעברים.

מאפיין סטטוס תיאור
id חובה מציין מזהה ייחודי של החלונית. המאפיין הזה משמש לאחזור החלונית מ-PanelPool ולניהול המצב שלה במערכת.
role חובה הגדרה של המטרה או הפונקציה של החלונית במערכת. הערך יכול להפנות למשאב מחרוזת, למערך מחרוזות של שמות רכיבים או למזהה פריסה. לדוגמה, אפשר להגדיר פעילויות מתמידות שצריכות להיות מוצגות תמיד בחלונית, או פריסה שצריך להרחיב.
defaultVariant אופציונלי מציין את המזהה של הווריאציה שהלוח צריך לאמץ בהתחלה כשהוא נטען. אם לא מציינים, המערכת יכולה להשתמש בגרסה הראשונה שהוגדרה כברירת מחדל.
displayId אופציונלי מציין את המזהה של המסך שבו אמורה להופיע החלונית.
defaultLayer אופציונלי אפשר לציין סדר Z כברירת מחדל לווריאציות של החלונית אם הווריאציות לא מגדירות שכבה באופן מפורש.
controller אופציונלי,
כפוף לשינויים

ההגדרה מפנה למשאב (בדרך כלל מזהה XML) שמגדיר בקר ספציפי לחלונית, שמאפשר לשמור ערכי הגדרה ולהעביר אותם לבקרי חלונית בהתאמה אישית.

בבקרים האלה צריך להטמיע את הממשק com.android.car.scalableui.panel.TaskPanelController. תרחיש שימוש נפוץ בבקרי הגישה האלה הוא הגדרה של הקצאות גמישות של משימות בזמן ריצה בחלונית.

רכיבי צאצא ב-XML

התג <TaskPanel> יכול לכלול את המאפיינים האלה כדי להגדיר מאפיינים והתנהגויות ברירת מחדל,

מאפיין תיאור
<Variant>

תג מוטמע מתאר הגדרה חזותית ספציפית של החלונית בכל רגע נתון. לוח יכול לכלול כמה וריאציות, שלכל אחת מהן יש מזהה ייחודי.

כל וריאציה מגדירה מאפיינים כמו גבולות, חשיפה, שכבה, אלפא, רדיוס פינות ושוליים עבור ההגדרה הספציפית הזו. וריאציות יכולות גם לרשת מאפיינים מוריאציית הורה.

<KeyFrameVariant> התוסף <Variant> מאפשר לבצע אינטרפולציה של מאפיינים חזותיים בין וריאציות שונות על סמך ערך שבר רציף (0 עד 1), והוא משמש למעברים חלקים ודינמיים, למשל במהלך פעולת גרירה, כשמצב החלונית תלוי בקלט רציף כמו כמות הגרירה.
<Transitions>

תג nested מכיל אוסף של <Transition> הגדרות שמתארות איך ממשק המשתמש צריך להציג אנימציה בין וריאציות שונות.

כל תג <Transition> מגדיר את הווריאציות from ו-to, את האירוע שמפעיל אותו, ויכול לציין אופציונלית Animator בהתאמה אישית לשימוש באנימציה, וגם משך זמן ו-interpolator.

קוד לדוגמה

<Panel 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>
</Panel>