בחלונות מתקדמים, סצנת הבית מורכבת מכמה חלוניות אפליקציות שמוצגות בו-זמנית וכוללות אינטראקציות, במקום פעילות ביתית ספציפית. התכונה 'חלונות מתקדמים' משתמשת בגרסה ריקה של פעילות במסך הבית כדי ליצור מחסום ניראות למשימות בריבוי חלונות.
למרות שרוב האנשים מתייחסים לאשף ההגדרה (SUW) כאל משימה ביתית, אנחנו ממליצים להגדיר אותו כחלק מחלונית כדי ליצור חוויות ביתיות עקביות ואמינות יותר.
הגדרת מחסום החשיפה של הבית
מוודאים שפעילות המחסום של נראות הבית היא פעילות ישירה של הבית שמודעת להפעלה, ושעדיפותה במסנן Intent של הבית גבוהה יותר מעדיפותה של פעילות SUW.
מידע נוסף זמין בפלטפורמת ההפניה בחבילה StubCarLauncher.
מומלץ לכלול את החבילה הזו בגרסאות ה-build ולהתקין אותה לכל המשתמשים.
הגדרת החלונית של SUW
מומלץ למקם את SUW בחלונית ייעודית כדי לטפל בתנאים ייחודיים ולאפשר מיקום ייעודי מחוץ למשימת הבסיס שמוגדרת כברירת מחדל. אפשר להגדיר את הגבולות והשכבות של החלונית הזו.
כדי שלא תהיה חסימה של SUW, מומלץ למקם את SUW בשכבה גבוהה יחסית. בחלונית הזו צריך להיות אפשר להציג ולהסתיר את אירועי המערכת של _System_EnterSuwEvent ושל _System_ExitSuwEvent, בהתאמה.
דוגמה להגדרה:
<TaskPanel id="suw_panel" defaultVariant="@id/closed" displayId="0" controller="@xml/suw_panel_controller">
<TaskBehavior newTaskLaunchPolicy="REPARENT_TO_SOURCE"/>
<Variant id="@+id/base">
<Layer layer="@integer/suw_panel_layer"/>
<Bounds left="0" top="0" width="100%" height="100%" />
<Background color="@color/suw_panel_background_color" />
</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 onEvent="_System_TaskOpenEvent" onEventTokens="panelId=suw_panel" toVariant="@id/opened"/>
<Transition onEvent="_System_TaskPanelEmptyEvent" onEventTokens="panelId=suw_panel" toVariant="@id/closed"/>
<Transition onEvent="_System_EnterSuwEvent" toVariant="@id/opened"/>
<Transition onEvent="_System_ExitSuwEvent" toVariant="@id/closed"/>
</Transitions>
</TaskPanel>
...
<Controller id="suw_panel_controller">
<ControllerName>
com.android.systemui.car.wm.scalableui.panel.controller.SetupPanelController
</ControllerName>
<PersistentPackage>com.android.car.mysetuppackage</PersistentPackage>
</Controller>
כדי להתאים לאפליקציית SUW טיפוסית, אם חלונית SUW הופכת לבלתי נראית במהלך ההגדרה, בקר SUW שולח אות ביתי מפורש לפעילות SUW כדי להודיע ש-SUW מוסתר.
הבעיה הזו מתרחשת במקרים שבהם SUW יודע שהמשתמש מנסה להסתיר את SUW על ידי שימוש ב-intent של דף הבית, אבל אין לו גישה לאות של דף הבית מהמערכת.
אם יש לכם ציפיות שונות לגבי העיצוב של SUW, אתם יכולים להטמיע את ההתנהגות המועדפת על ידי החלפת SetupPanelController בבקר בהתאמה אישית.