Novedades de productos

Jetpack WindowManager 1.5 es estable

Lectura de 3 min
Francesco Romano
Ingeniero de Relaciones con Desarrolladores, 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 facilita aún más la creación de UIs adaptables y refinadas que se ven muy bien en todos los tamaños de pantalla. A medida que el ecosistema de Android sigue creciendo, los usuarios interactúan con las apps en una variedad más amplia de dispositivos que nunca: desde teléfonos y plegables hasta tablets, pantallas conectadas, Chromebooks e incluso pantallas de automóviles en modo estacionado.

WindowManager 1.5 se enfoca en proporcionar mejores herramientas para este entorno de dispositivos diversos.

Novedades de WindowManager 1.5

Esta versión estable presenta nuevos puntos de interrupción para pantallas muy grandes, mejora la API de incorporación de actividades y proporciona más flexibilidad para calcular las métricas de la ventana.

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

La actualización más importante de la versión 1.5 es la incorporación de dos nuevas clases de tamaño de ventana de ancho: grande y extragrande.

Las clases de tamaño de ventana son nuestro conjunto oficial y bien definido de puntos de interrupción de viewports que te ayudan a diseñar y desarrollar diseños adaptables. Con la versión 1.5, extendemos esta guía para pantallas que van más allá de las tablets típicas.

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

  • Grande: Para anchos entre 1200 dp y 1600 dp
  • Extragrande: Para anchos ≥1600 dp
window_size_classes_width.png

Las diferentes clases de tamaño de ventana según el ancho 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 transformarlo en una herramienta similar a una computadora 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. 

Con esta nueva función disponible, es fundamental contar con una guía bien definida para incluir pantallas más grandes. 

En estas superficies muy grandes, simplemente aumentar el diseño expandido de una tablet no siempre es la mejor experiencia del usuario. Un cliente de correo electrónico, por ejemplo, podría mostrar cómodamente dos paneles (un buzón y un mensaje) en la clase de tamaño de ventana expandida. Sin embargo, en un monitor de escritorio extragrande, el cliente de correo electrónico podría mostrar con elegancia tres o incluso cuatro paneles , tal vez un buzón, 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 brinda una señal clara para introducir diseños específicamente diseñados para una experiencia de escritorio productiva y densa en 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 extiende el tipo Set<WindowSizeClass>

Para incluir las nuevas clases de tamaño de ventana en tu proyecto, simplemente llama a la función del conjunto WindowSizeClass.BREAKPOINTS_V2 en lugar de WindowSizeClass.BREAKPOINTS_V1:

val currentWindowMetrics =

    WindowMetricsCalculator.getOrCreate()

    .computeCurrentWindowMetrics(LocalContext.current)


val sizeClass = WindowSizeClass.BREAKPOINTS_V2

    .computeWindowSizeClass(currentWindowMetrics)


Luego, aplica el diseño correcto cuando estés seguro de que tu app tiene al menos ese espacio:

if(sizeClass.isWidthAtLeastBreakpoint(

    WindowSizeClass.WIDTH_DP_LARGE_LOWER_BOUND)){

    ...

    // window is at least 1200 dp wide


}

Bibliotecas adaptables

La biblioteca adaptable de Compose Material 3 te ayuda a crear UIs adaptables que se adaptan automáticamente según las configuraciones de ventana actuales, 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 (ahora en la etapa de candidato para el lanzamiento), las funciones de directiva de scaffold de panel predeterminadas admiten clases de tamaño de ancho de ventana grandes y extragrandes.

Solo debes habilitar la opción declarando en tu archivo de compilación de Gradle que deseas usar los nuevos puntos de interrupción:

currentWindowAdaptiveInfo(

    supportLargeAndXLargeWidth = true)

Mejoras adicionales

  • Incorporación de actividades: guardado y restablecimiento automáticos: WindowManager ahora puede guardar y restablecer automáticamente el estado de las divisiones de incorporación de actividades. Esto ayuda a preservar el diseño del usuario en la recreación del proceso, lo que genera una experiencia más estable y coherente. Los desarrolladores ya no tienen que guardar y restablecer el estado de forma manual, sino que pueden habilitar la opción automática configurando la propiedad EmbeddingConfiguration#isAutoSaveEmbeddingState.
  • WindowMetrics expandido: Ahora puedes calcular WindowMetrics desde un contexto de Application, no solo un contexto de Activity. Esto proporciona más flexibilidad para acceder a la información de la ventana desde diferentes partes de tu app.

Cómo comenzar

Para comenzar a usar las nuevas clases de tamaño grande y extragrande, y otras funciones de la versión 1.5 en tus proyectos de Android, actualiza las dependencias de tu app en build.gradle.kts a la versión estable más reciente:

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 adelante para crear apps completamente adaptables que se ejecuten en factores de forma de Android. Consulta las notas de la versión oficiales para obtener una lista completa de los cambios y las correcciones de errores.

¡Feliz codificación!

Escrito por:

Seguir leyendo