自動調整式應用程式支援各種尺寸的螢幕,包括整個裝置螢幕、多視窗模式下的可調整大小視窗、直向和橫向模式、摺疊式裝置的摺疊和展開螢幕。
您可以透過簡短的設定和 API 清單,建構自適應應用程式。不過,部分過時的設定和 API 與自動調整應用程式不相容,因此請避免使用。
大小調整
自動調整應用程式支援應用程式可調整大小和多視窗模式。
<activity>
和 <application>
資訊清單元素的 resizeableActivity
屬性可在 Android 11 (API 級別 30) 以下版本中啟用或停用多視窗模式。在 Android 12 (API 級別 31) 以上版本中,無論屬性為何,大螢幕都支援多視窗模式。詳情請參閱「支援多視窗模式」。
讓應用程式可參與多視窗、多工處理情境,提高使用者工作效率和滿意度。
如果應用程式指定的 API 級別低於 24,請設定 resizeableActivity="true"
;否則,請忽略這項設定,因為在 Android 7.0 (API 級別 24) 以上版本中,預設為 true
。
請勿為任何 API 級別設定 resizeableActivity="false"
。請勿將應用程式排除在涉及多視窗模式的用途之外。
方向
無論螢幕大小或視窗模式為何,自適應應用程式都支援直向和橫向螢幕方向。
screenOrientation
資訊清單設定會限制活動方向。
從應用程式資訊清單中移除 screenOrientation
設定。
鎖定應用程式的方向並不會防止視窗大小變更。應用程式進入多視窗模式、裝置折疊或展開,或調整類電腦視窗大小時,系統會重新調整應用程式大小。無論 screenOrientation
屬性設定為何,應用程式都必須支援視窗大小變更。
不要限制活動方向。在螢幕尺寸較大的裝置上,如果應用程式鎖定方向,且視窗大小不相容,應用程式就會出現上下黑邊。
在平板電腦、折疊式裝置和 ChromeOS 裝置上,Google Play 對顯示黑邊的應用程式曝光度會降低。
顯示比例
螢幕和視窗大小各有不同,因此顯示比例也會有所不同,從高而窄、正方形到短而寬都有。
minAspectRatio
和 maxAspectRatio
資訊清單設定會將應用程式的顯示比例限制為硬式編碼值。
無論相對尺寸為何,都能調整應用程式以配合螢幕。
從應用程式資訊清單中移除 minAspectRatio
和 maxAspectRatio
設定。或者,請確保應用程式可調整大小,並由顯示比例自行處理 (請參閱「可調整大小」一節)。
請勿嘗試控制應用程式的相對尺寸。如果應用程式在螢幕或視窗上執行,且顯示比例與應用程式的顯示比例不相容,應用程式就會加上黑邊。
在 Android 14 (API 級別 34) 以上版本中,使用者可以覆寫應用程式顯示比例,將加上黑邊的應用程式展開,以填滿可用的顯示區域。請參閱「裝置相容模式」。
視窗大小
自動調整式設計的核心前提,就是針對不同螢幕大小進行版面配置最佳化。自動調整式應用程式會著重於應用程式視窗大小,而非裝置螢幕大小。應用程式全螢幕模式時,應用程式視窗就是裝置螢幕。
視窗大小類別提供系統化方式,用於判斷及分類應用程式視窗的大小。隨著應用程式的視窗大小類別變更,變更版面配置來調整應用程式。
根據視窗大小類別評估應用程式視窗大小。
如要判斷視窗大小類別,請使用 Compose Material 3 Adaptive 程式庫的 currentWindowAdaptiveInfo()
頂層函式。詳情請參閱「建構自適應應用程式」。
請勿忽略視窗大小類別定義和內建 API 的實用性。請勿使用已淘汰的 API 計算視窗大小。
已淘汰的 API
較舊的平台 API 無法正確測量應用程式視窗;有些會測量裝置螢幕,有些會排除系統裝飾。
使用 WindowManager#getCurrentWindowMetrics()
和 WindowMetrics#getBounds()
取得應用程式視窗的大小。使用 WindowMetrics#getDensity()
取得顯示密度。
請勿使用下列已淘汰的 Display
API 判斷視窗大小:
getSize()
:已在 Android 11 (API 級別 30) 中淘汰getMetrics()
:已在 Android 11 (API 級別 30) 中淘汰getRealSize()
:已在 Android 12 (API 級別 31) 中淘汰getRealMetrics()
:已在 Android 12 (API 級別 31) 中淘汰
Compose
Jetpack Compose 專為自動調整式 UI 開發而設計。沒有 XML、版面配置檔案或資源限定詞。只需使用以 Kotlin 為基礎、無狀態的可組合項,例如用於描述 UI 的 Column
、Row
和 Box
,以及用於為 UI 元素新增行為的修飾符,例如 offset
、padding
和 size
。
使用 Compose 建構。隨時掌握最新功能和版本。
請勿依賴過時的技術,避免應用程式過時。
Compose Material 3 自動調整式程式庫
Compose Material 3 Adaptive 程式庫提供元件和 API,有助於開發自適應應用程式。
使用下列 API 讓應用程式具備適應性:
NavigationSuiteScaffold
:根據應用程式視窗大小類別,在導覽列和導覽邊欄之間切換。ListDetailPaneScaffold
:實作清單詳細資料標準版面配置。根據應用程式視窗大小調整版面配置。SupportingPaneScaffold
:實作輔助窗格的標準版面配置。
可別白費工夫!請別錯過所有 Jetpack Compose 程式庫提供的開發人員工作效率提升。
版面配置
使用者希望應用程式能充分利用可用的顯示空間,提供額外內容或強化控制項。
自適應應用程式會根據顯示器的變更 (特別是應用程式視窗大小或裝置姿勢的變更) 最佳化版面配置。
視窗大小變更時,請變更 UI 元件,充分利用可用的顯示空間。舉例來說,您可以將精簡視窗大小使用的底部導覽列,換成中等和展開視窗的垂直導覽邊欄。重新調整對話方塊的位置,讓使用者在所有螢幕上都能存取。
將內容整理到窗格中,啟用多窗格版面配置,例如清單詳細資料和輔助窗格,以便顯示動態內容。
如果您未使用內容窗格,請勿只將 UI 元素拉長,以填滿可用的顯示空間。長行文字不易閱讀,拉長的按鈕看起來設計不佳。如果您使用 Modifier.fillMaxWidth
,請勿假設這是所有螢幕大小的正確行為。
輸入裝置
使用者不只會使用觸控螢幕與應用程式互動。
自動調整應用程式支援外接鍵盤、滑鼠和觸控筆,可提供更優質的使用者體驗,並協助使用者在各種板型規格上提高工作效率。
善用 Android 架構內建的功能,以便使用鍵盤分頁導覽,以及滑鼠或觸控板的點選、選取和捲動功能。在鍵盤快速鍵協助工具中發布應用程式的鍵盤快速鍵。
使用 Jetpack Material 3 程式庫,讓使用者可透過觸控筆書寫至任何 TextField
元件。
請勿禁止使用其他輸入法。不要引入無障礙功能問題。
摘要
- 使用 Compose 和 Material 3 Adaptive 程式庫建構應用程式
- 以視窗大小類別為基礎的版面配置
- 建立多窗格版面配置
- 讓您的應用程式可調整大小。
- 一律不要鎖定活動方向
- 不限制顯示比例
- 支援觸控以外的輸入方式
- 避免使用已淘汰的 API
✓ 滿足使用者期待:針對使用者每天使用的各種裝置,對應用程式進行最佳化調整。
✗ 不要等待。立即開始使用!