Para implementar una experiencia del usuario coherente y de alta calidad, y evitar problemas que provoquen fallas en el Conjunto de pruebas de compatibilidad (CTS), implementa los principios básicos de WindowManager (WM) que se describen aquí. Estos principios se aplican a lo siguiente:
Versiones de Android que usan una arquitectura de multiventana, que comenzó en Android 14 y continuó en Android 15 con la IU adaptable.
IU escalable de Android y tus propias implementaciones personalizadas
Si aplicas los principios, evitarás de forma proactiva la mayoría de los problemas de cumplimiento de CTS y de pruebas funcionales.
Terminología
- invariante
- Es una condición lógica que permanece verdadera durante la ejecución de una app y que conduce a la integridad estructural. Una invariante actúa como una regla de límite.
- actividad especial
- También conocida como actividad de IU automática o actividad de IU del sistema, esta actividad crítica de la app tiene un área dedicada en la pantalla que siempre está visible o que se ve la mayor parte del tiempo, incluso cuando el usuario presiona Inicio, como una app de navegación principal o de clúster.
- Actividad estándar
- Cualquier actividad estándar de la app que no sea fundamental para la interfaz de usuario principal del sistema, como una app de medios de terceros que se inicia desde la cuadrícula de apps
Principios de WM
Para maximizar el cumplimiento del CTS, aplica estos principios en tus implementaciones de WM.
Usa una configuración estable en el inicio de la actividad
Inicia cada actividad estándar nueva con una sola transición de WM que establezca su posición, tamaño y densidad finales. No debes activar una segunda transición que cambie la configuración de la ventana de la tarea subyacente (como el tamaño o la densidad) inmediatamente después de la primera, ya que esto provoca un cambio de configuración inmediatamente después de que se crea la actividad.
Cómo pasar las actividades estándar al estado detenido
Cuando el usuario navega a la tarea o escena principal, debes mover todas las actividades estándar en ejecución al estado detenido para mantener el ciclo de vida predecible de la app para Android que requieren las pruebas de CTS.
Evita que se oculte el contenido de la actividad estándar
No dibujes decoraciones ni elementos de la IU personalizados que obstruyan el contenido de una actividad estándar. Si dibujas superposiciones personalizadas (como una barra de control de clima personalizada), debes informar las dimensiones al sistema con inserciones SystemOverlay. En Android 15 y versiones posteriores, usa DecorPanel en la IU escalable.
Oculta las superposiciones en la solicitud de modo envolvente
Cuando una app solicita el modo envolvente, debes ocultar los elementos de IU personalizados temporales y quitar sus inserciones de SystemOverlay. Las obstrucciones persistentes interfieren con las expectativas de píxeles de una app.
Aplica esquinas redondeadas solo a nivel de la pantalla
Aplica esquinas redondeadas solo a nivel de la pantalla con las configuraciones de recursos adecuadas en frameworks/base. No apliques esquinas redondeadas arbitrarias a la superficie de una actividad estándar.
Esto interfiere con las pruebas de elementos de la IU. Como medida temporal, puedes especificar el mismo radio de esquina redondeada para la pantalla que aplicas a la superficie de la actividad estándar.
Mantener el tamaño de la app en la solicitud de modo envolvente
Cuando una app solicita ingresar al modo envolvente, no cambies el tamaño de su ventana. Si lo haces, se activará un cambio de configuración disruptivo. En cambio, para maximizar la app, ofrece un botón de pantalla completa controlado por el usuario.