パターンとコンポーネント

Android 8.0 では、設定メニューに、一般的な用途に対応するコンポーネントとウィジェットが追加されています。デバイス メーカーとデベロッパーは、新しいユーザー インターフェースと既存の設定 UI との整合性が保たれるように、設定アプリの拡張時に共通コンポーネントを使用することをおすすめします。

改善の概要は次のとおりです。

  • サポート ライブラリの設定フレームワークで分割線の動作が変更され、カテゴリ間に分割線が入るようになりました。
  • ActionBar のテーマが変更されました。ActionBar では、薄い色のテーマとアクセント カラーのテキストが使用されます。
  • 設定のレイアウトが新しくなりました。設定にアイコンが含まれていない場合も、アイコンのスペースが残ります。

新しいウィジェットは次のとおりです。

  • アプリの詳細を示すヘッダー ウィジェット。アプリアイコンやアプリラベルなどの情報を表示します。
  • 一部のページに表示される展開ボタン。折りたたまれた状態でページが表示され、ユーザーが展開ボタンをクリックするまで、重要性の低い項目は非表示になります。
  • デフォルト アプリ選択ツール UI:
    • デフォルトのブラウザやデフォルトの電話アプリなどを選択するための UI。
    • 全画面表示のラジオボタンベースの UI(従来のダイアログ)。
  • 「MasterSwitch」スタイルの設定。2 つのクリック ターゲットがある設定です。左側のターゲットはサブセット フラグメントまたはインテントを起動します。右側のターゲットは、ページ全体のオンとオフを制御する切り替えスイッチです。

例とソース

  • 分割線の動作
    • 設定のすべてのページが、新しい分割線の動作を使用するように変更されました。
    • 分割線の動作は、次のファイルで 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 のセッターを使用して各項目をカスタマイズし、すべての項目を設定したら build() を呼び出します。
  • 開くボタン:
    • 機能を完全に無効にするには、ProgressiveDisclosureMixin のコンストラクタをオーバーライドして keepExpanded を true に設定します。
    • 最初に表示する項目数をカスタマイズするには、フラグメントの onAttach(Context) メソッド中に ProgressiveDisclosureMixin.setTileLimit() メソッドを呼び出します。