支援桌面視窗

桌面視窗功能可讓使用者在可調整大小的應用程式視窗中同時執行多個應用程式,提供多用途的桌面體驗。

在圖 1 中,您可以看到畫面結構和桌面視窗 注意事項:

  • 使用者可以同時並排執行多個應用程式。
  • 工作列位於螢幕底部的固定位置,顯示執行中的應用程式。使用者可以將應用程式固定在螢幕上,方便快速存取。
  • 全新的可自訂標題列會透過最小化和最大化等控制項,裝飾每個視窗頂端。
圖 1. 平板電腦上的桌面視窗。

根據預設,應用程式會在 Android 平板電腦上開啟全螢幕。 如要在桌面視窗啟動應用程式,請按住視窗控點 並拖曳 UI 中的控點,如圖 2 所示。

在電腦視窗中開啟應用程式時,其他應用程式也會在電腦視窗中開啟。

圖 2. 按住並拖曳應用程式視窗控點,即可進入桌面視窗。

使用者也可以從顯示在影片下方的選單中叫用桌面視窗 輕觸/點選控點或使用鍵盤快速鍵的視窗控點 Meta 鍵 (Windows、Command 或搜尋鍵) + Ctrl + 向下鍵

使用者可以關閉所有有效視窗,或抓住桌面視窗頂端的視窗手柄,然後將應用程式拖曳至螢幕頂端,藉此退出桌面視窗。按下 Meta + H 鍵盤快速鍵也會一併結束 電腦視窗,再次以全螢幕模式執行應用程式。

如要返回桌面視窗,請輕觸或點選「最近」畫面中的桌面空間方塊。

可調整大小和相容性模式

在桌面視窗模式中,鎖定螢幕方向的應用程式可自由調整大小。這表示即使活動 鎖定為直向模式、 使用者仍可將應用程式調整為橫向視窗大小。

圖 3. 將僅限直向的應用程式視窗調整為橫向大小。

聲明為無法調整大小的應用程式 (即 resizableActivity = false)。 使用者介面縮放,同時保持相同的顯示比例。

圖 4. 無法調整大小的應用程式 UI 會在視窗調整大小時縮放。

如果相機應用程式鎖定螢幕方向或宣告為無法調整大小,就會有 相機觀景窗的特殊處理方式:視窗可完全調整大小 但觀景窗保持相同的長寬比。應用程式會假設自己一律會在直向或橫向模式下執行,因此會硬式編碼或以其他方式做出假設,導致預覽畫面或擷取的圖片方向或顯示比例出錯,進而導致圖片變形、橫向或上下顛倒。

在應用程式準備好實作完全回應的相機觀景窗前,特殊處理可提供更基本的使用者體驗,以減輕錯誤假設可能造成的影響。

如要進一步瞭解相機應用程式的相容模式,請參閱「裝置相容模式」。

圖 5. 當視窗調整大小時,相機觀景窗會保留其顯示比例。

可自訂的標頭內嵌

在電腦視窗中執行的所有應用程式都會顯示標頭列,即使是在 沉浸模式
請確認應用程式內容不會遭到標題列遮蔽。標題列是一種說明文字列插邊類型: androidx.compose.foundation.layout.WindowInsets.Companion.captionBar(); (觀看次數:WindowInsets.Type.captionBar()) 也就是系統資訊列的部分內容

如要進一步瞭解如何處理插邊,請參閱「在應用程式中以無邊框方式顯示內容,並在 Compose 中處理視窗插邊」。

標題列也可以自訂。Android 15 導入了外觀類型 再按 APPEARANCE_TRANSPARENT_CAPTION_BAR_BACKGROUND 即可 將標頭列設為透明,以便應用程式在當中繪製自訂內容 標題列

接著,應用程式會負責將內容頂端部分的樣式設為與說明文字列相似 (背景、自訂內容等),但系統說明文字元素 (關閉和最大化按鈕) 除外,因為系統會在應用程式頂端的透明說明文字列上繪製這些元素。

應用程式可以切換字幕中系統元素的外觀 使用 APPEARANCE_LIGHT_CAPTION_BARS、 類似於狀態列和導覽列的切換方式

Android 15 也引入了 WindowInsets#getBoundingRects() 方法,可讓應用程式更詳細地檢視字幕列內嵌。應用程式可以區分系統繪製系統元素的區域 未運用在未使用的情況下,應用程式可在不重疊系統元素的情況下放置自訂內容。

API 傳回的 Rect 物件清單,會指出應避免的系統區域。任何剩餘空間 (計算方式為從標題列內嵌區扣除矩形) 都是應用程式可繪製的區域,且不會與系統元素重疊,並可接收輸入內容。

實作自訂標頭前後的 Chrome 畫面。
圖 6. 實作自訂標頭前後的 Chrome 畫面。

支援多工處理和多實體

多工處理是電腦視窗的核心功能,允許應用程式有多個執行個體,可大幅提升使用者的工作效率。

Android 15 推出了 PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI,應用程式可設定此屬性,指定應為應用程式顯示系統 UI,以便以多個執行個體啟動應用程式。

使用拖曳手勢管理應用程式執行個體

在多視窗模式下,使用者可以拖曳檢視畫面,啟動新的應用程式執行個體 元素。 使用者也可以在同一個應用程式的例項之間移動元素。

圖 7. 將分頁拖曳至電腦視窗外,即可啟動新的 Chrome 執行個體。

Android 15 推出了兩種標記來自訂拖曳行為:

  • DRAG_FLAG_START_INTENT_SENDER_ON_UNHANDLED_DRAG:如果沒有任何可見的視窗處理放置動作,則表示應將未處理的拖曳動作委派給系統來啟動。使用這個旗標時,呼叫端必須提供 ClipData,其中包含 Item,內含 不可變動的 IntentSender 至 要啟動的活動 (請參閱 ClipData.Item.Builder#setIntentSender())。 系統可以啟動意圖,或不根據目前的畫面等因素啟動意圖 大小或視窗模式如果系統未啟動意圖,則意圖為 由正常的拖曳流程取消。

  • DRAG_FLAG_GLOBAL_SAME_APPLICATION:表示拖曳作業可跨越視窗邊界 (適用於同一個應用程式的多個執行個體)。

    時間:startDragAndDrop() 透過這個旗標集呼叫,系統只會針對屬於相同旗標的 應用程式就能參與拖曳作業,並接收拖曳的內容。

圖 8. 在兩個 Chrome 應用程式執行個體之間移動分頁。

其他最佳化

自訂應用程式啟動作業,並將應用程式從電腦視窗切換至全螢幕。

指定預設大小和位置

並非所有應用程式 (包括可調整大小) 都需要大型視窗才能為使用者提供價值。 您可以使用 ActivityOptions#setLaunchBounds() 方法,指定活動啟動時的預設大小和位置。

從電腦桌面進入全螢幕模式

應用程式可以透過呼叫 Activity#requestFullScreenMode(),以程式輔助方式進入全螢幕模式。這個方法會直接從電腦視窗模式,將應用程式設為全螢幕模式。