Compose 1.11: novedades clave

jetpack compose

Analizamos las novedades clave de Compose 1.11 y su impacto en el desarrollo de interfaces modernas en Android, con mejoras en rendimiento y productividad.

1. Indicador de scroll
2. Nuevo modificador para la visibilidad
3. Depuración visual de animaciones
4. Contexto compartido para ComposeView
5. Conclusión

Jetpack Compose, el kit de UIs declarativas de Jetbrains está en constante evolución.

Hace dos meses fue oficial la salida de Compose 1.10, y ahora Compose 1.11 ya está en Alfa y se pueden empezar a probar las nuevas funcionalidades que trae la última versión de Compose.

En este artículo vamos a profundizar en las novedades más interesantes de esta nueva versión (La versión que voy a utilizar para este análisis es Compose 1.11-alpha03, de esta versión a la final muchas APIs han podido haber cambiado).

 

Indicador de scroll

Usando el ejemplo que hay en el repositorio de Google podemos ver como se mostraria un indicador de desplazamiento cuando hacemos scroll.

 

Como podemos ver en este ejemplo básico, el indicador se muestra a la derecha y tiene un color negro semi transparente. Para poder mostrar el indicador hay que usar el interfaz  ScrollIndicatorFactory , al implementarlo recibimos en el método createNode el estado del scroll y la orientación y a partir de ahí podemos decidir como pintar el indicador que queramos.

Nuevo modificador para la visibilidad

En compose 1.11 se introduce un nuevo modificador  Modifier.visible() el cual nos permite ocultar visualmente un elemento saltándose la fase de dibujado sin afectar al espacio que ocupa en el interfaz:

En el ejemplo anterior podemos ver cómo al aplicar  Modifier.visible(false) la caja oscura del medio se oculta visualmente pero sigue ocupando el espacio.

Depuración visual de animaciones

Gracias al nuevo composable LookaheadAnimationVisualDebugging nos va a facilitar mucho perfeccionar las animaciones, ya que proporciona la siguiente información:

  • Los límites de la animación.
  • La trayectoria de la animación
  • Si una transición está activa.

 

Toda esta información visual, está disponible para la transición de elementos compartidos (SharedElement) y para el modificador animateBounds

Contexto compartido para ComposeView

Se ha creado un nuevo flag para habilitar el contexto compartido en las ComposeView. Esto va a ser muy útil para aquellas aplicaciones que todavía no han migrado el 100% de las vistas a Compose y siguen dependiendo de la interoperabilidad del sistema de vistas con Compose. El flag se habilita de la siguiente manera (lo suyo es ponerlo en la clase Application antes de que cualquier Activity se haya inicializado):

Una vez habilitado se cambia la forma de inicializar las vistas que permiten tener composables dentro. Ahora van a formar todas partes de un mismo contexto, en vez de estar aisladas. Esto va a permitir compartir recursos (caches internos, caches de medición de texto, etc) aumentado mucho el rendimiento, ya que crear una composición nueva para cada ComposeView es muy costoso en rendimiento, mientras que enlazar a una ya existente no.

Estas son algunas de las nuevas funcionalidades más interesantes que trae Compose 1.11-alpha03, tendremos que esperar a futuras versiones para ver qué hay de nuevo en las betas y las RCs de la versión 1.11.

Conclusión

Compose 1.11 continúa impulsando la evolución de Jetpack Compose con mejoras orientadas a crear interfaces modernas de forma más eficiente. Las nuevas opciones de personalización visual, las herramientas para depurar animaciones y las optimizaciones de rendimiento facilitan el trabajo diario de los equipos de desarrollo.

Compartir artículo