הגדרת לוח

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

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

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

התגים <TaskPanel> ו-<DecorPanel> יכולים לכלול את רכיבי הבן האלה כדי להגדיר מאפיינים והתנהגויות ברירת מחדל.

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

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

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

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

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

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

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

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