使用可擴充的使用者介面,在車輛中建構複雜、動態且多面板的使用者體驗。可彈性調整的使用者介面:
提供彈性的視窗系統。
大幅降低工程風險、成本,以及使用者介面實作的複雜度,這些都是 Compatibility Test Suite (CTS) 帶來的問題。
可擴充的 UI 支援各種需要動態視窗排列方式的現代車用資訊娛樂系統 (IVI) 設計,同時也能縮小以支援傳統的靜態視窗排列方式。
Android 17 推出下列進階視窗專屬功能:
範例體驗
可調整大小的 UI 支援無限多種視窗設定。以下列舉幾個為練習可擴充 UI 而建立的範例情境:
地圖背景和浮動應用程式
地圖背景設定,其他應用程式浮動顯示在上方。
應用程式背景
應用程式背景設定,含有浮動面板。
其他應用程式下方的已釘選應用程式
釘選的應用程式 (例如小工具容器),其他應用程式則在上方啟動。
條件式浮動面板
只有在符合特定條件時才會顯示的條件式浮動面板,例如媒體播放時或觸發快訊時。
讓固定的應用程式靠近駕駛
靠近駕駛的固定應用程式。
分割畫面版面配置
分割畫面版面配置,並排顯示兩個應用程式。
互動式分割畫面
互動式分割畫面版面配置,可動態調整大小。
大螢幕適用的多錨點版面配置
專為大螢幕設計的多錨點版面配置。
主畫面應用程式輪轉介面
主畫面版面配置,內含應用程式輪轉介面。
福利與法規遵循
可調整大小的 UI 具有下列優點:
降低測試風險:架構已通過預先認證,且符合 CTS 規定,因此可消除程式週期後期測試失敗的主要風險。可擴充的 UI 可節省數月的工程工作,並加快法規遵循速度。
設計彈性更高:可重現眾多複雜的現有汽車窗戶模型,可擴充的 UI 支援雄心勃勃且高度差異化的設計。
降低實作複雜度:抽象化為高階、設定導向的 XML 模型,可降低自訂視窗邏輯的進入門檻。
效能更佳:可擴充的使用者介面可在高效能視窗基礎上執行,並與標準 Android 完全整合。轉換流程順暢,可直接進行最佳化。
核心基石
可擴充的使用者介面可減少對 OEM 專屬程式碼的需求、簡化更新程序,並消除陷阱和減少認證問題,進而降低發布風險。
以 XML 為基礎的方法可解決在 AAOS 中管理複雜視窗系統時的常見挑戰,例如精確定位、Z 順序衝突和應用程式焦點。
可擴充的 UI 提供這些核心建構區塊。
面板
面板是螢幕上的基本矩形容器,每個面板都會對應至專屬的 root 工作,方便獨立管理。面板可代管應用程式工作 (TaskPanel) 或以檢視畫面為基礎的內容,例如小工具 (DecorPanel)。詳情請參閱「設定面板」。
Variant
變數會定義面板的特定視覺狀態,並包含 bounds (位置和大小)、visibility、layer (Z 順序) 和 corner 半徑等屬性。單一面板可以有不同變體,例如 opened、closed 或 minimized。詳情請參閱「使用變數設計視覺狀態」。
轉移
轉場效果會定義面板從目前狀態 fromVariant 轉換至新狀態 toVariant 的方式。Event 會觸發轉場效果,並定義面板在狀態變更期間使用的動畫。面板應會從目前狀態移至 toVariant。為了同步處理,核心 Window Manager 會為所有轉場效果製作動畫並進行協調。
- 事件:啟動 UI 變更的觸發條件。OEM 或系統可以預先定義觸發條件。例如
_System_OnHomeEvent、_System_TaskOpenEvent或自訂導覽按鈕按壓。
舉例來說,可擴展的 UI 會使用事件觸發轉場效果。這些轉場效果會將面板從一個變數動畫處理到另一個變數,以顯示 UI 中的動態變化。可調整大小的 UI 會將這些變更傳達給其他系統應用程式,以便視需要調整內容。在 XML 中定義 UI 關係,即可:
指定複雜的 UI 行為:定義複雜的使用者介面互動。
排列視窗系統:控制視窗位置和圖層。
導入視覺主題:套用一致的品牌和美學。
降低程式碼複雜度:盡量減少開發大量自訂程式碼的需求。
詳情請參閱「設定轉場效果」。
系統 UI 按鈕
除了觸發意圖,使用 event、selectedEvent 和 unselectedEvent 屬性輕觸 CarSystemBarButtons 時,也可以觸發可調整大小的 UI 事件。
event 說明輕觸按鈕時要觸發的事件。如要更精細地控制事件,請使用 selectedEvent 和 unselectedEvent 屬性,分別指定在選取或取消選取按鈕時觸發的事件。
實作系統 UI 的時機
本節說明如何充分運用可調整大小的使用者介面。
建立永久多面板版面配置
建立多區域體驗,讓螢幕的不同區域永久專用於特定功能。例如專屬媒體控制項、氣候控制列或全螢幕地圖。
主要應用程式 (例如導覽) 使用 TaskPanels,而必須放在 TaskPanels 之間的檢視畫面形式 UI 元素則使用 DecorPanels。
導入動態居家情境
實作由多個可同時顯示的互動式應用程式面板組成的「首頁」場景。例如地圖、媒體播放器和應用程式排列顯示。
如要將所有相關面板遷移至 opened 或 default 的主畫面變體,請設定 _System_HomeEvent。
套用情境疊加效果
放置非應用程式 UI 元素,例如內容相關小工具、自訂品牌宣傳和可與應用程式工作同步執行動畫的拖曳控點。
針對所有純裝飾或小工具代管元素,使用 DecorPanels。如果小工具可啟動完整功能的應用程式,建議使用 Panel > TaskPanel。如果圖層必須與 TaskPanel 圖層同步,請使用 DecorPanels 做為以檢視區塊為基礎的 UI 元素。
設計複雜的面板互動
設計進階使用者導向動作,例如根據主畫面內容動態調整應用程式面板大小,或調整儀表板檢視畫面。
定義自訂 Events,觸發特定非系統標準 Transitions。
將 IVI 版面配置擴展至統一數位駕駛艙
可擴充的 UI 會管理 SDV IVI VM 中主要資訊娛樂螢幕 (display0) 上的多面板視窗 (TaskPanel 和 DecorPanel)。您可以將可調整大小的 UI 與螢幕安全配對,在主螢幕版面配置變更時更新儀表板檢視畫面:
- 可擴充的 UI 動作 (
SDV IVIVM):當主螢幕上的面板狀態變更時,可擴充的 UI 可以使用xml/scalable_ui_actions.xml中的<Action>傳送意圖,通知叢集元件版面配置或模式變更。詳情請參閱「設定動作」。 - DriverUI (
SDV IVIVM):在叢集螢幕 (display1) 上以ClusterHomeManager啟動的系統應用程式形式執行,並以automotive-design-compose建構。DriverUI會算繪非安全叢集內容 (例如地圖、媒體和電話),並處理 IVI 系統的狀態更新。 - IVI 上的 SDV 閘道 (
SDV IVIVM):DriverUI會使用SDV Gateway Client,透過 gRPC (driverui.proto) 連線至高可用性算繪器 (HAR)。DriverUI會傳送叢集狀態更新 (例如版面配置變體、主題權杖和語言代碼變更),以及週期性心跳訊息。 HAR和安全監控 (SDV MediaVM):在獨立的SDV MediaVM 中執行,以便算繪安全關鍵元素 (例如速度、檔位、警示燈、鈴聲和後視攝影機動態饋給)。DriverUI會傳送心跳信號給HAR,而HAR會保持 Android 叢集區域透明,讓DriverUI內容與HAR安全性疊加層融為一體。如果SDV IVI正在啟動或無法使用,HAR會顯示備用預留位置。- 原始設備製造商設定:如要設定這個流程,請在
SDV IVI中設定xml/scalable_ui_actions.xml的<Event>觸發條件和<Action>意圖,更新 Figma 設計檔案和 Safety 設計工具鍊的Config.json信號對應,並為目標硬體實作 HAR 平台抽象層 (PAL)。