模式和元件

在 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://cs.android.com/android/platform/superproject/+/main: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) 中的範例,瞭解更多詳細資料。

自訂設定選單

  • 分隔線行為。如要變更分隔線的繪製方式,請更新「設定」分隔線的樣式,並變更下列值:
    • allowDividerAbove
    • allowDividerBelow
    • allowDividerAfterLastItem
  • ActionBar 主題顏色。活動應使用 Theme.DeviceDefault.Settings 做為主題,或使用 Theme.DeviceDefault.Settings 做為父項建立自訂主題。
  • 應用程式標頭小工具。使用 AppHeaderController 中的設定器自訂每個欄位,並在設定所有欄位後呼叫 build()
  • 展開按鈕:
    • 如要完全停用這項功能,請覆寫 ProgressiveDisclosureMixin 的建構函式,並將 keepExpanded 設為 true。
    • 如要自訂一開始顯示的項目數量,請在片段的 onAttach(Context) 方法中呼叫 ProgressiveDisclosureMixin.setTileLimit() 方法。