Novedades de productos

Jetpack WindowManager 1.5 es estable

Lectura de 3 minutos
Francesco Romano
Ingeniero de relaciones con desarrolladores de Android

Nos complace anunciar que Jetpack WindowManager 1.5.0 ya es estable.

Esta versión se basa en la sólida base de adaptabilidad de WindowManager, lo que hace que sea aún más fácil crear interfaces de usuario adaptativas y pulidas que se vean bien en todos los tamaños de pantalla. A medida que el ecosistema Android sigue creciendo, los usuarios interactúan con las aplicaciones en una variedad de dispositivos más amplia que nunca: desde teléfonos y plegables hasta tablets, pantallas conectadas, Chromebooks e incluso pantallas de coche en modo aparcado.

WindowManager 1.5 se centra en ofrecer mejores herramientas para este entorno de dispositivos diversos.

Novedades de WindowManager 1.5

En esta versión estable se introducen nuevos puntos de interrupción para pantallas muy grandes, se mejora la API Activity Embedding y se ofrece más flexibilidad para calcular las métricas de las ventanas.

Nuevas clases de tamaño de ventana: grande y muy grande

La mayor novedad de la versión 1.5 es la incorporación de dos nuevas clases de tamaño de ventana de ancho: grande y extra grande.

Las clases de tamaño de ventana son nuestro conjunto oficial de puntos de interrupción de la ventana gráfica que te ayudan a diseñar y desarrollar diseños adaptables. Con la versión 1.5, ampliamos estas directrices a las pantallas que van más allá de las tablets típicas.

Estos son los nuevos puntos de interrupción de ancho:

  • Grande: para anchuras entre 1200 y 1600 dp
  • Extragrande: para anchuras ≥ 1600 dp
window_size_classes_width.png

Las diferentes clases de tamaño de ventana en función de la anchura de la pantalla. 

¿Por qué son importantes?

A partir de Android 16 QPR1 Beta 2, Android admite pantallas conectadas, lo que permite a los usuarios conectar una pantalla externa a su dispositivo y convertirlo en una herramienta similar a un ordenador de escritorio con una pantalla grande.

ADB_5350_asset.gif

Teléfono conectado a una pantalla externa, con una sesión de escritorio en la pantalla externa. 

Ahora que esta nueva función está disponible, es fundamental ofrecer recomendaciones sobre cómo incluir pantallas más grandes. 

En estas superficies tan grandes, ampliar el diseño expandido de una tablet no siempre ofrece la mejor experiencia de usuario. Por ejemplo, un cliente de correo podría mostrar cómodamente dos paneles (un buzón de correo y un mensaje) en la clase de tamaño de ventana Ampliada. Sin embargo, en un monitor de escritorio extra grande, el cliente de correo podría mostrar de forma elegante tres o incluso cuatro paneles: quizás un buzón de correo, una lista de mensajes, el contenido completo del mensaje y un panel de calendario o tareas, todo a la vez.

Al proporcionar puntos de interrupción oficiales para tamaños de pantalla muy grandes, WindowManager 1.5 te ofrece una señal clara para introducir diseños específicamente diseñados para una experiencia de escritorio productiva y con mucha información.

Las clases de tamaño de ventana se pueden calcular con computeWindowSizeClass(), que es una función de extensión de la biblioteca androidx.window.core.layout que amplía el tipo Set<WindowSizeClass>

Para incluir las nuevas clases de tamaño de ventana en tu proyecto, solo tienes que llamar a la función desde el conjunto WindowSizeClass.BREAKPOINTS_V2 en lugar de WindowSizeClass.BREAKPOINTS_V1:

  val currentWindowMetrics =

    WindowMetricsCalculator.getOrCreate()

    .computeCurrentWindowMetrics(LocalContext.current)


val sizeClass = WindowSizeClass.BREAKPOINTS_V2

    .computeWindowSizeClass(currentWindowMetrics)


A continuación, aplica el diseño correcto cuando tengas la certeza de que tu aplicación tiene al menos ese espacio:

  if(sizeClass.isWidthAtLeastBreakpoint(

    WindowSizeClass.WIDTH_DP_LARGE_LOWER_BOUND)){

    ...

    // window is at least 1200 dp wide


}

Bibliotecas adaptativas

La biblioteca Compose Material 3 Adaptive te ayuda a crear interfaces de usuario adaptables que se ajustan automáticamente según las configuraciones de la ventana actual, como las clases de tamaño de ventana o las posturas del dispositivo. 

La buena noticia es que la biblioteca ya está actualizada con los nuevos puntos de interrupción. A partir de la versión 1.2 (que ahora está en la fase de versión candidata), las funciones de la directiva de estructura del panel predeterminada admiten las clases de tamaño de ancho de ventana grande y extra grande.

Solo tienes que habilitar la función declarando en tu archivo de compilación de Gradle que quieres usar los nuevos puntos de interrupción:

  currentWindowAdaptiveInfo(

    supportLargeAndXLargeWidth = true)

Mejoras adicionales

  • Inserción de actividad: guardado y restauración automáticos: WindowManager ahora puede guardar y restaurar automáticamente el estado de las divisiones de inserción de actividad. De esta forma, se conserva el diseño del usuario en la recreación del proceso, lo que da lugar a una experiencia más estable y coherente. Los desarrolladores ya no tienen que guardar y restaurar el estado manualmente, sino que pueden habilitar la opción automática configurando la propiedad EmbeddingConfiguration#isAutoSaveEmbeddingState.
  • WindowMetrics ampliado: ahora puedes calcular WindowMetrics a partir de un contexto de aplicación, no solo de un contexto de actividad. De esta forma, tendrás más flexibilidad para acceder a la información de las ventanas desde diferentes partes de tu aplicación.

Cómo empezar

Para empezar a usar las nuevas clases de tamaño grande y extra grande, así como otras funciones de la versión 1.5 en tus proyectos de Android, actualiza las dependencias de tu aplicación en build.gradle.kts a la última versión estable:

  dependencies {
    implementation("androidx.window:window:1.5.0") 

    // or, if you're using the WindowManager testing library:

    testImplementation("androidx.window:window-testing:1.5.0")

}

WindowManager 1.5 es otro paso más para crear aplicaciones totalmente adaptables que se ejecuten en diferentes factores de forma de Android. Consulta las notas de la versión oficiales para ver una lista completa de los cambios y las correcciones de errores.

¡Disfruta programando!

Escrito por:

Seguir leyendo