可擴充的使用者介面總覽

使用可擴充的使用者介面,在車輛中建構複雜、動態且多面板的使用者體驗。可彈性調整的使用者介面:

  • 提供彈性的視窗系統。

  • 大幅降低工程風險、成本,以及使用者介面實作的複雜度,這些都是 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 IVI VM):當主螢幕上的面板狀態變更時,可擴充的 UI 可以使用 xml/scalable_ui_actions.xml 中的 <Action> 傳送意圖,通知叢集元件版面配置或模式變更。詳情請參閱「設定動作」。
  • DriverUI (SDV IVI VM):在叢集螢幕 (display1) 上以 ClusterHomeManager 啟動的系統應用程式形式執行,並以 automotive-design-compose 建構。DriverUI 會算繪非安全叢集內容 (例如地圖、媒體和電話),並處理 IVI 系統的狀態更新。
  • IVI 上的 SDV 閘道 (SDV IVI VM): DriverUI 會使用 SDV Gateway Client,透過 gRPC (driverui.proto) 連線至高可用性算繪器 (HAR)。DriverUI 會傳送叢集狀態更新 (例如版面配置變體、主題權杖和語言代碼變更),以及週期性心跳訊息。
  • HAR 和安全監控 (SDV Media VM):在獨立的 SDV Media VM 中執行,以便算繪安全關鍵元素 (例如速度、檔位、警示燈、鈴聲和後視攝影機動態饋給)。DriverUI 會傳送心跳信號給 HAR,而 HAR 會保持 Android 叢集區域透明,讓 DriverUI 內容與 HAR 安全性疊加層融為一體。如果 SDV IVI 正在啟動或無法使用,HAR 會顯示備用預留位置。
  • 原始設備製造商設定:如要設定這個流程,請在 SDV IVI 中設定 xml/scalable_ui_actions.xml 的 <Event> 觸發條件和 <Action> 意圖,更新 Figma 設計檔案和 Safety 設計工具鍊的 Config.json 信號對應,並為目標硬體實作 HAR 平台抽象層 (PAL)。