在進階視窗模式中,主畫面是由多個可同時顯示且可互動的應用程式面板組成,而非特定主畫面活動。進階視窗功能會使用空白版本的首頁活動,做為多視窗工作的可見度屏障。
雖然設定精靈 (SUW) 通常視為居家工作,但我們建議您將 SUW 設定為面板的一部分,以建立更一致且可靠的居家體驗。
設定住家可見度屏障
確認住家可見度屏障活動是直接啟動的住家活動,且住家意圖篩選器的優先順序高於 SUW 活動。
詳情請參閱 StubCarLauncher 套件中的參考平台。建議您在建構作業中加入這個套件,並為所有使用者安裝。
設定 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 設計有不同期望,可以將 SetupPanelController 替換為自訂控制器,實作偏好的行為。