模式和組件

在 Android 8.0 中,「設定」選單獲得了多個涵蓋常見用途的組件和小部件。鼓勵設備製造商和開發人員在擴展「設定」應用程式時使用通用元件,以便新的使用者介面與現有的「設定 UI」保持一致。

以下是改進的摘要:

  • 支援庫首選項框架中的分隔線行為變更。現在在類別之間繪製分隔線。
  • ActionBar 主題變更。 ActionBar 現在使用淺色主題和強調色文字。
  • 新的偏好佈局。即使首選項沒有圖標,圖標的空間也會保留。

新的小部件:

  • 用於顯示應用程式詳細資訊的標題小工具。顯示應用程式圖示、應用程式標籤等資訊。
  • 某些頁面上有展開按鈕。頁面可以以折疊方式開始並隱藏不太重要的項目,直到使用者點擊展開按鈕。
  • 預設應用程式選擇器 UI:
    • 用於選擇預設瀏覽器、預設手機應用程式等的 UI。
    • 以前是一個對話框,現在是一個基於單選按鈕的全螢幕 UI。
  • “MasterSwitch”風格偏好。這是具有兩個點擊目標的首選項。左側目標導致子集化片段或意圖。右側目標是一個開關,控制整個頁面的開/關。

範例和來源

  • 分音器行為
    • 設定中的所有頁面均已修改為使用新的分隔線行為。
    • 分隔線行為定義為 ThemeOverlay:
      packages/apps/Settings/res/values/styles_preference.xml
  • ActionBar 主題更改
    • 設定中的所有頁面均已修改為使用新的 ActionBar 主題。
    • 主題在 Theme.DeviceDefault.Settings 中定義
  • 新的偏好佈局
    • 「設定」中的許多頁面現在都使用新的首選項佈局。
    • 您可以在以下位置找到程式碼:
      packages/apps/Settings/res/values/styles_preference.xml
  • 應用程式標題小工具
    • 設定中的大多數應用程式資訊頁面已經實現了新的應用程式標頭。
    • 範例和程式碼可以在以下位置找到:
      packages/apps/Settings/src/com/android/settings/applications/AppHeaderController.java
  • 展開按鈕
    • 範例和程式碼可以在以下位置找到:
      packages/apps/Settings/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java

      注意:該元件必須與DashboardFragment一起使用。 (請參閱更新資訊架構中有關 DashboardFragment 的更多詳細資訊。)

  • 預設應用程式選擇器
    • 您可以在以下位置找到基底類別的程式碼:
      packages/apps/Settings/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java
    • DefaultAppPickerFragment 有多個子類,每個子類別都實作了用於不同意圖的選擇器。
  • MasterSwitch風格偏好
    • 程式碼位於:https: https://cs.android.com/android/platform/superproject/+/main:packages/apps/Settings/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceController.java :packages/apps/Settings/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceController.java
    • 一個範例用例是 Wi-Fi 主交換器。您可以在以下位置找到範例: packages/apps/Settings/src/com/android/settings/wifi/WifiMasterSwitchPreferenceController.java

執行

設備製造商可以開始使用所有開箱即用的新組件。如果 OEM 決定實施新的「MasterSwitch」樣式首選項或預設應用程式選擇器,則應遵循本文檔中的範例以及隨每個元件編寫的參考檔案 (Javadoc) 以取得更多詳細資訊。

客製化

  • 分頻器行為。若要變更分隔線的繪製方式,請更新「設定分隔線」的樣式並變更下列值:
    • 允許上方分隔符
    • 允許分隔線低於
    • 允許分隔符號在最後一個項目之後
  • ActionBar 主題顏色。活動應使用Theme.DeviceDefault.Settings作為主題,或使用Theme.DeviceDefault.Settings作為父主題建立自訂主題。
  • 應用程式標題小工具。使用 AppHeaderController 中的 setter 自訂每個字段,並在設定所有字段後調用 build() 。
  • 展開按鈕:
    • 若要完全停用該功能,請重寫 ProgressiveDisclosureMixin 的建構子並將 keepExpanded 設為 true。
    • 若要自訂最初顯示的項目數,請在片段的onAttach(Context)方法期間呼叫ProgressiveDisclosureMixin.setTileLimit()方法。