Implementa paneles de notificaciones de atención

En Android 17 y versiones posteriores, la IU escalable para las notificaciones emergentes (HUN) te permite personalizar la administración de ventanas (posicionamiento, scrim de fondo, animaciones) de los paneles de HUN con el framework de IU escalable y las superposiciones de recursos en tiempo de ejecución (RRO). Esta función permite controlar el contenedor de la notificación sin afectar la renderización del contenido interno.

Implementación

La implementación de la IU escalable para HUN incluye lo siguiente:

  • APIs públicas y del sistema: Se introduce la clase HunWindow y la lógica de análisis de la etiqueta XML <HunPanel> en los analizadores de IU escalables.
  • Implementación del socio:
    • Define una superposición de RRO personalizada.
    • Para crear un archivo en formato XML (por ejemplo, res/xml/hun_panel.xml), usa la etiqueta raíz <HunPanel>.
    • Define elementos <Variant> para controlar los límites, la gravedad (TOP o BOTTOM), la visibilidad y el fondo (elemento de diseño de scrim).
    • Asigna variantes a eventos del sistema (por ejemplo, _System_Show_Panel) con <Transitions>.
  • Dispositivos nuevos frente a dispositivos actualizados: Este es un cambio de configuración que realizan los RR.OO. Para actualizar los dispositivos y que reciban la nueva imagen del sistema, crea un RRO adecuado para definir el comportamiento de HUN. Esto permite que los usuarios se desvíen de la configuración predeterminada.
  • Habilitar o inhabilitar: Para habilitar o inhabilitar esta función, agrega o quita @xml/hun_panel de la configuración de window_states.
  • Configuración predeterminada: Modifica la configuración predeterminada aplicando tu propio RRO que anule la configuración predeterminada del sistema.

Requisitos y validación

Usa la siguiente secuencia para probar la habilitación y la inhabilitación de las superposiciones:

adb shell cmd overlay disable --user current com.example.overlay.scalableUI.hun.bottom

Si habilitas o inhabilitas el RRO, el HUN se muestra en la parte inferior o superior, respectivamente.

Validación manual

  • Posicionamiento: Verifica que los HUN aparezcan en la gravedad (TOP o BOTTOM) y los límites especificados.
  • Interacciones: Verifica que funcione el gesto de deslizar para descartar (si no se puede descartar, verifica que funcione el botón).
  • Animaciones: Verifica las animaciones de transición entre los estados abierto y cerrado.