Patrones y componentes

En Android 8.0, se agregan varios componentes y widgets al menú Configuración, que cubren usos comunes. Se recomienda a los fabricantes y desarrolladores de dispositivos que usen los componentes comunes cuando extiendan la app de Configuración para que las nuevas interfaces de usuario se mantengan coherentes con la IU de Configuración existente.

Este es un resumen de las mejoras:

  • Cambio del comportamiento del divisor en el framework de Preference de la biblioteca de compatibilidad ahora se dibuja el divisor entre las categorías.
  • Cambio de tema de ActionBar. La ActionBar ahora usa el tema de color claro, con texto de colores de acento.
  • Nuevo diseño de preferencia. El espacio para los íconos se mantiene incluso cuando una preferencia no tiene un ícono.

Nuevos widgets:

  • Un widget de encabezado para los detalles de la app Muestra el ícono y la etiqueta de la app, entre otros datos.
  • Un botón para expandir en algunas páginas La página puede comenzar como contraída y ocultar elementos menos importantes hasta que el usuario haga clic en el botón para expandir.
  • IU predeterminada del selector de apps:
    • La IU para elegir el navegador y la aplicación para teléfonos predeterminados, entre otros.
    • Antes era un diálogo, pero ahora es una IU basada en botones de selección de pantalla completa.
  • Una preferencia de estilo "MasterSwitch" Esta es una preferencia con dos objetivos de clics. El objetivo izquierdo conduce a un fragmento o un intent subconjuntos. El objetivo derecho es un interruptor, que controla la activación o desactivación de toda la página.

Ejemplos y fuente

  • Comportamiento del divisor
    • Se modificaron todas las páginas de Configuración para usar el nuevo comportamiento de divisor.
    • El comportamiento del divisor se define como ThemeOverlay en:
      packages/apps/Settings/res/values/styles_preference.xml
  • Cambio de tema en ActionBar
    • Se modificaron todas las páginas de Settings para usar el nuevo tema ActionBar.
    • El tema se define en Theme.DeviceDefault.Settings.
  • Nuevo diseño de preferencia
    • Muchas páginas de Configuración ahora usan el nuevo diseño de preferencias.
    • Puedes encontrar el código en:
      packages/apps/Settings/res/values/styles_preference.xml
  • Widget de encabezado de la app
    • La mayoría de las páginas de información de la app en Configuración ya están implementando el nuevo encabezado App.
    • Puedes encontrar ejemplos y códigos en:
      packages/apps/Settings/src/com/android/settings/applications/AppHeaderController.java
  • Botón Expandir
    • Puedes encontrar ejemplos y códigos en:
      packages/apps/Settings/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java

      Nota: Este componente debe usarse junto con DashboardFragment. (obtén más detalles sobre DashboardFragment en la arquitectura de la información actualizada).

  • Selector de apps predeterminado
    • Puedes encontrar el código de la clase base en:
      packages/apps/Settings/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java
    • Hay varias subclases de DefaultAppPickerFragment, cada una de las cuales implementa un selector para diferentes intents.
  • Preferencia de estilo de MasterSwitch
    • El código está en: https://cs.android.com/android/platform/superproject/+/main:packages/apps/Settings/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceController.java
    • Un ejemplo de caso de uso es el interruptor principal de Wi-Fi. Puedes encontrar un ejemplo en: packages/apps/Settings/src/com/android/settings/wifi/WifiMasterSwitchPreferenceController.java

Implementación

Los fabricantes de dispositivos pueden comenzar a usar todos los componentes nuevos listos para usar. Si los OEM deciden implementar una preferencia de estilo "MasterSwitch" o un selector de apps predeterminado nuevo, deben seguir los ejemplos de este documento y los archivos de referencia (Javadoc) escritos con cada componente para obtener más detalles.

Cómo personalizar el menú de configuración

  • Comportamiento del divisor. Para cambiar la forma en que se dibuja, actualiza el estilo de los divisores de Configuración y cambia el valor de lo siguiente:
    • allowDividerAbove
    • allowDividerBelow
    • allowDividerAfterLastItem
  • Color del tema de ActionBar. Las actividades deben usar Theme.DeviceDefault.Settings como tema o crear un tema personalizado con Theme.DeviceDefault.Settings como elemento superior.
  • Widget de encabezado de la app Usa métodos set en AppHeaderController para personalizar cada campo y llamar a build() una vez que se configuren todos los campos
  • Botón Expandir:
    • Para inhabilitar por completo la funcionalidad, anula el constructor de ProgressiveDisclosureMixin y establece keepExpanded como verdadero.
    • Para personalizar la cantidad de elementos que se mostrarán inicialmente, llama al método ProgressiveDisclosureMixin.setTileLimit() durante el método onAttach(Context) del fragmento.