在 Android 8.0 中,「設定」選單新增了幾個涵蓋常見用途的元件和小工具。我們建議裝置製造商和開發人員在擴充「設定」應用程式時使用通用元件,以便新的使用者介面與現有的「設定」UI 保持一致。
以下是改善項目摘要:
- 支援資料庫偏好設定架構中的分隔符行為變更。分隔線現在會在類別之間繪製。
- ActionBar 主題變更。ActionBar 現在使用淺色主題,並搭配輔色文字。
- 新的偏好設定版面配置。即使偏好設定沒有圖示,圖示空間仍會保留。
新增小工具:
- 應用程式詳細資料的標頭小工具。顯示應用程式圖示、應用程式標籤和其他資訊。
- 部分網頁上的展開按鈕。網頁一開始可以處於收合狀態,並隱藏較不重要的項目,直到使用者點選展開按鈕為止。
- 預設應用程式挑選器 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/+/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 中使用 setter 自訂每個欄位,並在所有欄位設定完成後呼叫
build()
。 - 展開按鈕:
- 如要完全停用這項功能,請覆寫 ProgressiveDisclosureMixin 的建構函式,並將 keepExpanded 設為 true。
- 如要自訂要顯示的項目數量,請在片段的
onAttach(Context)
方法中呼叫ProgressiveDisclosureMixin.setTileLimit()
方法。