適應性措施

自動調整式應用程式支援各種大小的螢幕:整個裝置螢幕、多視窗模式中可調整大小的視窗、直向和橫向螢幕方向,以及摺疊式裝置摺疊和展開的螢幕。

您可以使用一小部分的設定和 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 的曝光度會降低。

顯示比例

螢幕和視窗大小不同,顯示比例也會有所差異,從高而窄到正方形,再到短而寬。

minAspectRatiomaxAspectRatio 資訊清單設定會將應用程式的顯示比例限制為硬式編碼值。

✓ 建議做法

無論相對尺寸為何,都能調整應用程式以配合螢幕。

從應用程式資訊清單中移除 minAspectRatiomaxAspectRatio 設定。或者,確保應用程式可調整大小,且顯示比例會自動調整 (請參閱「可調整大小」一節)。

✗ 錯誤做法

請勿嘗試控管應用程式的相對尺寸。如果應用程式在螢幕或視窗中執行,而螢幕或視窗的顯示比例與應用程式的顯示比例不相容,應用程式就會加上上下黑邊。

在 Android 14 (API 級別 34) 以上版本中,使用者可以覆寫應用程式的螢幕比例,將加上黑邊的應用程式擴展至填滿可用顯示區域。請參閱「裝置相容模式」。

視窗大小

針對不同螢幕大小最佳化版面配置,是自動調整式設計的核心前提。自動調整式應用程式著重於應用程式視窗大小,而非裝置螢幕大小。應用程式處於全螢幕模式時,應用程式視窗就是裝置螢幕。

視窗大小類別提供系統化的方式,判斷及分類應用程式視窗大小。隨著應用程式的視窗大小類別變更,調整應用程式版面配置。

✓ 建議做法

根據視窗大小類別評估應用程式視窗大小。

如要判斷視窗大小類別,請使用 Compose Material 3 Adaptive 程式庫的 currentWindowAdaptiveInfo() 頂層函式。詳情請參閱「建構自動調整式應用程式」。

✗ 錯誤做法

請勿忽略視窗大小類別定義和內建 API 的實用性。請勿使用已淘汰的 API 計算視窗大小。

已淘汰的 API

舊版平台 API 無法正確測量應用程式視窗,有些會測量裝置螢幕,有些則會排除系統裝飾。

✓ 建議做法

使用 WindowManager#getCurrentWindowMetrics()WindowMetrics#getBounds() 取得應用程式視窗大小。使用 WindowMetrics#getDensity() 取得顯示密度。

✗ 錯誤做法

請勿使用下列已淘汰的 Display API 判斷視窗大小:

撰寫

Jetpack Compose 專為自動調整式 UI 開發作業而設計。沒有 XML、版面配置檔案,也沒有資源限定符。只有以 Kotlin 為基礎的無狀態可組合函式,例如 ColumnRowBox,用於描述 UI,以及修飾符,例如 offsetpaddingsize,用於為 UI 元素新增行為。

✓ 建議做法

使用 Compose 建構。隨時掌握最新功能和版本。

✗ 錯誤做法

請勿使用過時技術。別讓應用程式過時。

Compose Material 3 自動調整式程式庫

Compose Material 3 Adaptive 程式庫提供元件和 API,可簡化自適應應用程式的開發作業。

✓ 建議做法

使用下列 API 讓應用程式具備適應性:

✗ 錯誤做法

可別白費工夫!別錯過所有 Jetpack Compose 程式庫提供的開發人員工作效率提升功能。

版面配置

使用者會預期應用程式能充分利用可用的顯示空間,提供補充內容或強化控制項。

自動調整式應用程式會根據螢幕變化 (尤其是應用程式視窗大小變化或裝置姿勢變化) 調整版面配置。

✓ 建議做法

隨著視窗大小變更,UI 元件也會隨之變更,充分利用可用的螢幕空間。舉例來說,在精簡視窗大小中使用的底部導覽列,可換成中等和展開視窗中的垂直導覽邊欄。重新放置對話方塊,確保所有螢幕都能顯示。

將內容整理成窗格,啟用多窗格版面配置,例如清單詳細資料和輔助窗格,用於顯示動態內容。

✓ 建議:以雙窗格版面配置整理清單和詳細資料活動。
✗ 錯誤做法

如果未使用內容窗格,請勿只是延展 UI 元素來填滿可用螢幕空間。長文字行難以閱讀。按鈕遭到延展,看起來設計不良。如果您使用 Modifier.fillMaxWidth,請勿假設這是所有螢幕大小的正確行為。

✗ 錯誤做法:版面配置會延展,填滿展開的視窗。

輸入裝置

使用者與應用程式互動時,不一定會使用觸控螢幕。

自動調整式應用程式支援外接鍵盤、滑鼠和觸控筆,可提供更優質的使用者體驗,協助使用者在各種板型規格的裝置上提高工作效率。

✓ 建議做法

善用 Android 架構的內建功能,進行鍵盤 Tab 鍵導覽,以及滑鼠或觸控板的點選、選取和捲動操作。在鍵盤快速鍵輔助程式中發布應用程式的鍵盤快速鍵。

使用 Jetpack Material 3 程式庫,讓使用者能透過觸控筆在任何 TextField 元件中書寫文字。

✗ 錯誤做法

請勿讓使用者無法使用其他輸入法。請勿造成無障礙問題。

摘要

  • 使用 Compose 和 Material 3 自動調整式程式庫建構應用程式
  • 根據視窗大小類別調整版面配置
  • 建立多窗格版面配置
  • 讓您的應用程式可調整大小。
  • 一律不鎖定活動方向
  • 不要限制顯示比例
  • 支援觸控以外的輸入方式
  • 避免使用已淘汰的 API

✓ 滿足使用者期望: 針對使用者每天使用的各種裝置,將應用程式調整至最佳狀態。

✗ 不要等待。立即開始使用!