Publicado por Jolanda Verhoef, ingeniera de Relaciones con Desarrolladores de Android, y Anna-Chiara Bellini, gerente de Producto de la IU del kit de Herramientas de Android
Ya hace casi un año que se lanzó Jetpack Compose 1.0 y durante este tiempo, notamos el entusiasmo con el que la comunidad lo adoptó. Muchos desarrolladores nos comentaron que aprecian la concisión de la sintaxis de Kotlin y el enfoque declarativo, que hace que pensar en la IU sea una tarea más rápida y sencilla.
Muchas empresas adoptaron Compose a gran escala para las funciones más nuevas y audaces de sus apps. Por ejemplo, trabajamos en conjunto con el equipo de Play Store, que empezó a experimentar con Compose desde sus inicios. Sus miembros aprendieron que no solo es más agradable, sino también representa un beneficio para los desarrolladores en cuanto a la productividad. Nos comentaron que “todas las funciones nuevas de Play Store se compilaron conforme a este marco de trabajo. Compose fue fundamental para conseguir una mayor velocidad y un mejor destino para la app”. El equipo de Twitter usó Jetpack Compose en diferentes partes de la app y está disfrutando de los beneficios. Sus miembros nos comentan que “Compose hace que definir nuestros propios componentes sea mucho más fácil y también permite que los contratos de API sean más explícitos, intuitivos y flexibles”. El equipo de Airbnb también adoptó Compose: “Jetpack Compose es una parte fundamental de nuestra estrategia técnica. El aumento de la productividad es increíble”.
Nos complace saber que estos equipos, que evaluaron cuidadosamente Compose en entornos de producción grandes y complejos, no solo obtienen más diversión y claridad en el desarrollo de la IU, sino también beneficios de ingeniería más amplios. Y estos son solo unos pocos ejemplos, porque más de 100 de las 1000 apps más importantes de Play Store ahora usan Compose.
Estas colaboraciones estrechas, así como la atención a los comentarios de la comunidad de Android en general, están siempre en el centro de nuestro proceso de desarrollo y son fundamentales para avanzar en nuestra hoja de ruta. Ahora nos enfocamos en brindar compatibilidad con los casos de uso más avanzados, con nuevas API y mejoras en las funciones, todo ello junto con nuevas herramientas para facilitar la compilación con Compose. Sabemos que Compose cambia radicalmente la forma de compilar la IU. Para ayudarte a cambiar de mentalidad, publicaremos más guías, charlas y codelabs sobre temas avanzados, y más videos más detallados a fin de que puedas crear apps con un aspecto genial y un rendimiento excelente. Estas son las novedades:
Hoy lanzamos la primera versión beta de Compose 1.2, que incluye muchas funciones y mejoras.
Abordamos uno de los errores más votados en nuestra herramienta de seguimiento de problemas y personalizamos el parámetro de includeFontPadding. Recomendamos que este valor se configure como false, ya que permitirá una alineación más precisa del texto dentro del diseño. Nuestro objetivo es que este sea el valor predeterminado en una versión futura. Cuéntanos si configurar el valor como false genera problemas en tu app. Además, cuando se configura includeFontPadding como false, puedes adaptar la altura de la línea del texto que admite composición si configuras el parámetro lineHeightStyle. Si se combina, puede verse de la siguiente manera:
includeFontPadding
false
lineHeightStyle
Texto de varias líneas con includeFontPadding configurado como verdadero (izquierda, diseño predeterminado actual) en comparación con el parámetro configurado como falso (derecha) y lineHeightStyle.
Text( text = myText, style = TextStyle( lineHeight = 2.5.em, platformStyle = PlatformTextStyle( includeFontPadding = false ), lineHeightStyle = LineHeightStyle( alignment = Alignment.Center, trim = Trim.None ) ) )
En la versión 1.2 de Compose, se incluyen fuentes para descargar en Compose. Puedes usar las nuevas API de Compose para acceder a Google Fonts de manera asíncrona. Incluso puedes definir fuentes de resguardo sin realizar ninguna configuración compleja. Con las fuentes para descargar, puedes mantener un tamaño reducido para tu APK y mejorar el estado del sistema de los usuarios, ya que varias apps pueden compartir la misma fuente a través de un proveedor.
El texto de Android incluye un widget de ampliación que facilita la selección de texto. Compose ahora es compatible con la lupa para texto.
La lupa se muestra cuando se arrastra un controlador de selección para ayudarte a ver el texto debajo del dedo. Compose 1.1.0 incorporó la lupa a la selección dentro de los campos de texto y ahora Compose 1.2.0 la admite tanto en los campos de texto como en SelectionContainer. También se mejoró la lupa para que coincida con el comportamiento preciso de la de Android en Vistas.
SelectionContainer
Los diseños diferidos siguen mejorando con las API de LazyVerticalGrid y LazyHorizontalGrid, que ya no son experimentales. Además, se agregó una nueva API experimental, llamada LazyLayout, que te permite implementar tus propios diseños diferidos y personalizados. Obtén más información sobre estas API en la charla Diseños diferidos en Compose de I/O.
LazyVerticalGrid
LazyHorizontalGrid
LazyLayout
Cuando incorporas un elemento de desplazamiento que admite composición en un CoordinatorLayout desde la vista del sistema, puedes asegurarte de que su comportamiento de desplazamiento sea interoperable. Esto hace que la configuración de una barra de herramientas contraíble sea mucho más fácil. Puedes aceptar este comportamiento si pasas el resultado de la llamada al nuevo método experimental rememberNestedScrollInteropConnection al modificador nestedScroll. A continuación, se muestra un ejemplo de esta nueva función.
CoordinatorLayout
rememberNestedScrollInteropConnection
nestedScroll
La biblioteca de inserciones de Accompanist pasó a la biblioteca de Compose Fundation, con la clase WindowInsets. Obtén más información al respecto en nuestra documentación sobre Cómo integrar Compose con la IU existente.
WindowInsets
Para facilitar el diseño, el desarrollo y la comprobación de los diseños de tamaño ajustable, lanzamos las clases de tamaño de ventana, un conjunto de puntos de interrupción de viewports que se pueden determinar. Están disponibles en versión alfa en una nueva biblioteca material3-window-size-class, como parte del conjunto de bibliotecas de Material 3. Puedes leer más acerca de las clases de tamaño en la documentación sobre compatibilidad con diferentes tamaños de pantalla y ver un ejemplo de la implementación en Crane.
material3-window-size-class
Para ayudarte a comprender y mejorar el rendimiento de tu app, nos centramos en desarrollar nuevas guías y herramientas de rendimiento. Así, es mucho más fácil comprender por qué y en qué parte podría fallar tu app.
A partir de Android Studio Dolphin, con el Inspector de diseño puedes inspeccionar la frecuencia con la que se recomponen los elementos componibles. Una cantidad inesperada de recomposiciones puede indicarte un elemento componible que se podría optimizar. Además, Android Studio Electric Eel ahora incluye un resaltador de recomposición, una ayuda visual para ver qué elementos componibles se recomponen. Obtén más información sobre esta nueva herramienta en el blog Novedades de Android Studio.
El inspector de diseño, donde se muestra el recuento de recomposición y el resaltador de recomposición
Compose cambia la forma de escribir la IU a un nivel fundamental, por lo que te recomendamos seguir algunas prácticas recomendadas para asegurarte de que tu app tenga un buen rendimiento. En la nueva página de documentación, encontrarás sugerencias sobre cómo escribir y configurar tu app de Compose para obtener el mejor rendimiento. En la charla de I/O Los inconvenientes de rendimiento más comunes en Jetpack Compose, el equipo de Compose describe errores de rendimiento comunes y explica cómo solucionarlos.
El rendimiento es un área de interés permanente y nos estamos esforzando para mejorar y ampliar las herramientas y la orientación. Mientras tanto, nos encantaría conocer tus comentarios sobre el trabajo que hicimos hasta el momento. Puedes compartir en el seguimiento de problemas los errores que encuentras o hacerle tus preguntas al equipo de KotlinLang Slack.
Además de las mejoras, también presentamos nuevas actualizaciones de las herramientas para que utilices Compose de forma más eficaz. Android Studio Dolphin, actualmente en versión beta, incorpora funciones interesantes para el desarrollo en Compose. Además de los recuentos de recomposición, las nuevas herramientas incluyen Coordinación de animaciones para que puedas ver y revisar todas tus animaciones a la vez, y la anotación MultiPreview, que te ayuda a compilar para distintos tamaños de pantalla. Para permitirte iterar más rápido, Android Studio Electric Eel (en Canary) incorpora LiveEdit.
Consulta Novedades sobre las herramientas de desarrollo de Android para obtener más detalles. No te olvides de compartir tus comentarios para ayudarnos a dar forma a las herramientas que necesitas de Compose.
Si hay algo mejor que Compose, es más Compose. ¡Nos da mucha alegría ver la transición de Compose para Wear OS a la versión beta! Al igual que en cualquier otra biblioteca de Jetpack, beta significa que la versión está completa en cuanto a funciones y estable en cuanto a la API, y que puedes empezar a compilar tus apps para la producción. Continúa y lee la entrada de blog.
Agregamos y renovamos muchas de las guías en Compose:
Esperamos que también disfrutes de estas nuevas funciones. Si aún no comenzaste, es hora de aprender sobre Jetpack Compose y ver cómo se ajusta a las necesidades de tu equipo y al proceso de desarrollo, para que puedas experimentar todos los beneficios de la mejora de la velocidad y la productividad de los desarrolladores. ¡Feliz trabajo con Compose!