AndroidDeveloperGuia

Android 15 te mueve todo: guía práctica para edge-to-edge y SplashScreen sin “doble pantalla”

Android 15 activa el modo edge-to-edge por defecto al apuntar a API 35, lo que hace que la app dibuje detrás de la barra de estado y la de navegación si no se aplican insets correctamente. Desde Android 12, el sistema también añade una SplashScreen por defecto, por lo que quienes aún usen pantallas de arranque personalizadas sin la API oficial suelen ver “doble splash” o transiciones inconsistentes.

Qué cambió exactamente en Android 15

  • Edge-to-edge se aplica por defecto a apps con target SDK 35: barra de estado transparente, barra de navegación sin offset y contenido detrás de ambas si no se gestionan insets.
  • Los colores de barra vía setStatusBarColor y setNavigationBarColor están deprecados o sin efecto en Android 15 con navegación por gestos, obligando a migrar a insets y contraste desde el sistema.
  • El cutout se trata como “always” para evitar bandas negras, forzando layouts realmente de borde a borde en ventanas no flotantes.

Por qué “rompe” tu UI

  • Sin paddings dinámicos, toolbars, FABs o bottom bars quedan solapadas por las system bars, afectando clics y legibilidad en pantallas con gestos o recortes de cámara.
  • Los degradados y colores “fijos” de barras dejan de respetarse, generando inconsistencias visuales al heredar transparencia y contraste gestionado por el sistema.

Qué hacer en Views: migración edge-to-edge

  • Sigue la guía oficial “Display content edge-to-edge in views” para pasar de fitsSystemWindows a un manejo explícito de WindowInsets con ViewCompat y listeners, aplicando paddings donde corresponde.
  • La estrategia recomendada es dibujar detrás de system bars y compensar con WindowInsetsCompat.systemBars() en contenedores críticos como AppBar, listas y bottom containers.

Qué hacer en Jetpack Compose: insets bien puestos

  • Usa WindowInsets y contentWindowInsets en Scaffold para que el contenido respete automáticamente status/nav bars sin sobrecompensar en distintos modos de navegación.
  • Para casos complejos, aplica Modifier.windowInsetsPadding(WindowInsets.systemBars) en columnas o contenedores raíz y combina con paddings locales para elementos interactivos.

Ejemplo conceptual de ajuste en Compose con insets aplicado a contenido y barras, según las guías oficiales de Compose e insets avanzados explicados por la comunidad técnica:.

SplashScreen: adiós a la “doble pantalla”

  • Desde Android 12 el sistema impone una SplashScreen, y si además hay una Activity o tema de splash antigua, se producen dos pantallas seguidas al abrir la app.
  • Migra a la API SplashScreen e instala SplashScreen en la Activity de arranque para una transición única, personalizando icono, fondo y animación sin duplicidades.

Checklist express de migración para hoy

  • Sube targetSdkVersion a 35 y verifica layout en Android 15 real o emulado, con especial foco en pantallas con gestos y recortes.
  • Aplica WindowInsets en Views o WindowInsets/Scaffold en Compose, retirando dependencias de fitsSystemWindows y colores de barras deprecados.
  • Migra a SplashScreen API para evitar doble splash y garantizar una transición limpia en Android 12+.
  • Revisa contraste automático y legibilidad de íconos/textos en status bar y nav bar bajo edge-to-edge.
  • Valida gestos, clics y safe areas en plegables, pantallas con notches y distintos modos de navegación del sistema.

Consejos finos para no perder UX

  • Deja que el contenido “luzca” detrás de las barras, pero protege elementos interactivos clave con insets dinámicos, evitando paddings estáticos que se rompen entre gestos y 3 botones.
  • Usa contentWindowInsets en Scaffold en lugar de añadir paddings manuales por todos lados, y ajusta piezas concretas con windowInsetsPadding cuando sea necesario.
  • En listas y grids, aplica insets al contenedor y no a cada ítem, reduciendo overdraw y errores de espaciado en el extremo superior e inferior.

Puntos de control antes de publicar

  • Verifica que la barra de estado se vea correctamente con transparencia y contraste, sin imponer colores deprecados en Android 15.
  • Comprueba que el FAB no quede bajo la barra de navegación cuando hay gestos, aplicando padding desde WindowInsets.navigationBars si hace falta.
  • Asegura que la SplashScreen oficial se disipe con una animación fluida y que no aparezca otra pantalla intermedia antes de la primera vista útil.

Recursos clave de referencia

Con estos pasos y referencias, la app quedará preparada para Android 15 sin solapamientos, sin “doble splash” y con una experiencia moderna realmente edge-to-edge que se ve y se siente nativa en 2025.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *