Wear Compose

  
Escribe aplicaciones de Jetpack Compose para dispositivos Wearable proporcionando funcionalidad que admita dispositivos, tamaños, formas y gestos de navegación específicos para wearables.
Actualización más reciente Versión estable actual Próxima versión potencial Versión beta Versión alfa
29 de septiembre de 2021 - - - 1.0.0-alpha07

Cómo declarar dependencias

Para agregar una dependencia en Wear, debes agregar el repositorio Maven de Google a tu proyecto. Consulta el repositorio Maven de Google para obtener más información.

Agrega las dependencias de los artefactos que necesites en el archivo build.gradle de tu app o módulo:

Groovy

dependencies {
    implementation "androidx.wear.compose:compose-foundation:1.0.0-alpha06"

    // For Wear Material Design UX guidelines and specifications
    implementation "androidx.wear.compose:compose-material:1.0.0-alpha06"
}

Kotlin

dependencies {
    implementation("androidx.wear.compose:compose-foundation:1.0.0-alpha06")

    // For Wear Material Design UX guidelines and specifications
    implementation("androidx.wear.compose:compose-material:1.0.0-alpha06")
}

Para obtener más información sobre las dependencias, consulta Cómo agregar dependencias de compilación.

Comentarios

Tus comentarios ayudan a mejorar Jetpack. Avísanos si descubres nuevos errores o tienes ideas para mejorar esta biblioteca. Consulta los errores existentes en esta biblioteca antes de crear uno nuevo. Para agregar tu voto a un error existente, haz clic en el botón de la estrella.

Cómo crear un error nuevo

Consulta la documentación sobre la Herramienta de seguimiento de errores para obtener más información.

Versión 1.0.0

Versión 1.0.0-alpha07

29 de septiembre de 2021

Lanzamiento de androidx.wear.compose:compose-foundation:1.0.0-alpha07, androidx.wear.compose:compose-material:1.0.0-alpha07 y androidx.wear.compose:compose-navigation:1.0.0-alpha07. La versión 1.0.0-alpha07 contiene estas confirmaciones.

Nuevas funciones

  • Se agregó un componente de CurvedText en Material, que permite a los desarrolladores escribir con facilidad texto curvo siguiendo la curvatura de un círculo (generalmente en el borde de una pantalla circular). (I19593)

Cambios en la API

  • Se agregaron pruebas para TimeText. (Idfead)
  • Se transformó ArcPaddingValues en una interfaz. (Iecd4c)
  • Se agregó una animación a SwipeToDismissBox. (I9ad1b)
  • Se agregó el parámetro hasBackground a la API de SwipeToDismissBox para que se pueda inhabilitar el gesto de deslizamiento cuando no haya contenido en segundo plano para mostrar. (I313d8)
  • Ahora, rememberNavController() toma un conjunto opcional de instancias de Navigator que se agregarán al NavController que se muestre para mejorar la compatibilidad con los elementos Navigator opcionales, como los de Material de Navigation acompañante. (I4619e)
  • Haz una referencia a NamedNavArgument de navigation-common y quita la copia de Wear.compose.navigation. (I43af6)

Correcciones de errores

  • Se corrigió la fragilidad de prueba de CurvedRow en dispositivos más pequeños. (If7941)
  • Se corrigió el posible parpadeo en CurvedRow cuando se actualizaba el contenido y se garantiza que se vuelva a medir la fila curva. (Ie4e06)
  • Se actualizó ChipDefaults.gradientBackgroundChipColors() según los cambios en las especificaciones de UX. El gradiente ahora comienza con MaterialTheme.colors.primary en alfa al 32.5% y termina con MaterialTheme.colors.surface en alfa al 0% sobre un fondo de MaterialTheme.colors.surface en alfa al 75%. (Id1548)
  • Actualizamos los colores de ToggleChips cuando están en el estado seleccionado para que coincidan con las pautas de UX más recientes de Material Design de Wear. Cuando se seleccionan, los ToggleChips ahora tienen un fondo con gradiente que va desde MaterialTheme.color.surface en alfa al 0%, arriba a la izquierda, hasta MaterialTheme.color.primary en alfa al 32%, abajo a la derecha, sobre un fondo de MaterialTheme.color.surface en alfa al 75%. Esto genera una diferencia más sutil entre los elementos marcados y desmarcados correspondientes al ToggleChip. (Idd40b)

Versión 1.0.0-alpha06

15 de septiembre de 2021

Lanzamiento de androidx.wear.compose:compose-foundation:1.0.0-alpha06, androidx.wear.compose:compose-material:1.0.0-alpha06 y androidx.wear.compose:compose-navigation:1.0.0-alpha06. La versión 1.0.0-alpha06 contiene estas confirmaciones.

Nuevas funciones

  • Se agregó Scaffold a un objeto que admite composición de nivel superior de la aplicación que proporciona una estructura para controlar los PositionIndicators (como Scroll o Volume) y un área en la parte superior de la pantalla para mostrar la hora y el estado de la aplicación, y que además admite un objeto Vignette para desenfocar los bordes superior e inferior de la pantalla para el contenido sobre el que es posible desplazarse. El área principal de Scaffold es donde se coloca el contenido de la aplicación. (I5e0bf)
  • Se agregó la implementación de TimeText para Wear Compose. (I5654c)

Biblioteca de navegación de Wear Compose

  • Agregamos la primera versión de la biblioteca de navegación de Wear Compose, que proporciona integración entre las bibliotecas de navegación de Wear Compose y Androidx. Proporciona un medio simple para navegar entre las funciones @Composable como destinos de tu aplicación.

  • En esta versión inicial, se proporciona lo siguiente:

    • Un elemento que admite composición SwipeDismissableNavHost que aloja un gráfico de navegación y proporciona navegación hacia atrás mediante gestos de deslizamiento
    • La extensión NavGraphBuilder.composable para ayudar a construir gráficos de navegación
    • rememberSwipeDismissableNavController() para permitir la elevación del estado
  • Ejemplo de uso en el que creamos dos pantallas y navegamos entre ellas:

    val navController = rememberSwipeDismissableNavController()
    SwipeDismissableNavHost(
        navController = navController,
        startDestination = "start"
    ) {
        composable("start") {
            Column(
                horizontalAlignment = Alignment.CenterHorizontally,
                verticalArrangement = Arrangement.Center,
                modifier = Modifier.fillMaxSize(),
            ) {
                Button(onClick = { navController.navigate("next") }) {
                    Text("Go")
                }
            }
        }
        composable("next") {
            Column(
                horizontalAlignment = Alignment.CenterHorizontally,
                verticalArrangement = Arrangement.Center,
                modifier = Modifier.fillMaxSize(),
            ) {
                Text("Swipe to go back")
            }
        }
    }
    
  • La navegación de Wear Compose se empaqueta como una biblioteca independiente de modo que no sea necesario que las aplicaciones WearCompose simples que implementen su propia navegación con desplazamiento manual dependan de la biblioteca de navegación de AndroidX.

Cambios en la API

  • Se actualizó SwipeDismissableNavHost para admitir rememberSaveable estableciendo la identidad clave para el contenido y el fondo. (I746fd)
  • Se agregó un adaptador PositionIndicador que puede controlar LazyListState. (I21b88)
  • Se actualizó SwipeToDismissBox para admitir rememberSaveable. (Ie728b)
  • Se agregó compatibilidad con reverseLayout a ScalingLazyColumn. Esto permite revertir la dirección del desplazamiento y el diseño. (I9e2fc)
  • performGesture y GestureScope dejar de estar disponibles y se reemplazaron con performTouchInput y TouchInjectionScope. (Ia5f3f, b/190493367)
  • Cambiamos el nombre de VignetteValue a VignettePosition, el de VignetteValue.Both a VignettePosition.TopAndBottom. (I57ad7)
  • Cambiamos el nombre de ScalingLazyColumnState a ScalingLazyListState, el de ScalingLazyColumnItemInfo to ScalingLazyListItemInfo, el de ScalingLazyColumnLayoutInfo to ScalingLazyListLayoutInfo y el de ScalingLazyColumnScope to ScalingLazyListScope en caso de que decidamos agregar una implementación de ScalingLazyRow en el futuro. (I22734)

Correcciones de errores

  • Se actualizó la documentación de CompactChip para describir lo que sucede si no se proporciona un ícono ni una etiqueta. (I4ba88)
  • Realizamos algunos ajustes en los componentes de la tarjeta de Wear. (I6b3d0)
    1. Se redujo el espaciado de TitleCard entre Title y Body de 8.dp a 2.dp.
    2. Se cambió la fuente del encabezado de TitleCard de body a title3.
    3. El gradiente de fondo de la tarjeta cambió para oscurecer el fondo.

Versión 1.0.0-alpha05

1 de septiembre de 2021

Lanzamiento de androidx.wear.compose:compose-foundation:1.0.0-alpha05 y androidx.wear.compose:compose-material:1.0.0-alpha05. La versión 1.0.0-alpha05 contiene estas confirmaciones.

Cambios en la API

  • Se marcó ArcPaddingValues como @Stable. (I57deb)
  • Ahora, ScalingLazyColumnState implementa la interfaz de ScrollableState, que les brinda a los desarrolladores acceso programático para desplazar el componente. (I47dbc)

Correcciones de errores

  • Redujimos el espacio entre Icon y Text en Chip y ToggleChip para alinearlos con las actualizaciones de UX Spec. (I83802)

Versión 1.0.0-alpha04

18 de agosto de 2021

Lanzamiento de androidx.wear.compose:compose-foundation:1.0.0-alpha04 y androidx.wear.compose:compose-material:1.0.0-alpha04. La versión 1.0.0-alpha04 contiene estas confirmaciones.

Nuevas funciones

  • Se agregó un objeto SwipeToDismissBox y un modificador deslizable que se pueden usar a fin de admitir un gesto de deslizar de izquierda a derecha para descartar. Independientemente de los componentes de navegación, se espera que se use para salir de una pantalla y navegar a otra. Se agregaron pruebas de integración a fin de demostrar el gesto deslizar para descartar. (I7bbaa)
  • Agregamos las interfaces de ScalingLazyColumnItemInfo y ScalingLazyColumnLayoutInfo a la clase ScalingLazyColumnState, para que los desarrolladores conozcan las posiciones y los tamaños reales de los elementos en ScalingLazyColumn después de que se aplicara el escalamiento. También, corregimos un error relacionado con la manera en que se calculaba el escalamiento cuando se aplicaba el padding del contenido "principal" a ScalingLazyColumn. (I27c07)

Cambios en la API

  • Se agregó la clase CurvedTextStyle para especificar las opciones de estilo de texto curvo. Es similar a TextStyle, pero ahora solo admite color, tamaño de fuente y fondo. En el futuro, se agregarán más opciones de estilo. (I96ac3)
  • Agregamos las interfaces de ScalingLazyColumnItemInfo y ScalingLazyColumnLayoutInfo a la clase ScalingLazyColumnState, para que los desarrolladores conozcan las posiciones y los tamaños reales de los elementos en ScalingLazyColumn después de que se aplicara el escalamiento. También, corregimos un error relacionado con la manera en que se calculaba el escalamiento cuando se aplicaba el padding del contenido "principal" a ScalingLazyColumn. Por último, hicimos lo siguiente (I27c07):
  • Agregamos @ExperimentalWearMaterialApi a la enumeración SwipeDismissTarget, que forma parte de la API de SwipeToDismissBox. (I48b5e)

Correcciones de errores

  • Se agregó material de prueba para SwipeToDismissBox (I9febc)

Versión 1.0.0-alpha03

4 de agosto de 2021

Lanzamiento de androidx.wear.compose:compose-foundation:1.0.0-alpha03 y androidx.wear.compose:compose-material:1.0.0-alpha03. La versión 1.0.0-alpha03 contiene estas confirmaciones.

Cambios en la API

  • Se agregó el componente CurvedText, que le permite a los desarrolladores escribir texto con facilidad en la curvatura de un círculo (generalmente en el perímetro de una pantalla circular). (Id1267)
  • Se cambió el nombre de CardDefaults.imageBackgroundPainter() a CardDefaults.imageWithScrimBackgroundPainter() para aclarar que la imagen de fondo tiene una malla dibujada. (I53206)
  • Se agregó el componente ScalingLazyColumn, que proporciona una lista de componentes para Wear Material. Esto otorga una vista de ojo de pez con la lista de contenidos, que reduce la escala de su tamaño verticalmente y se vuelve transparente a medida que se ajustan a los bordes del componente. (I7070c)

Correcciones de errores

  • Se cambió el color predeterminado del contenido de appName en AppCard, en respuesta a una actualización de UX Spec. El color predeterminado de appName ahora es MaterialTheme.colors.onSurfaceVariant. Además, se agregó la descripción del documento de parámetros faltante para el espacio del título. (Ic4ad1)

Versión 1.0.0-alpha02

21 de julio de 2021

Lanzamiento de androidx.wear.compose:compose-foundation:1.0.0-alpha02 y androidx.wear.compose:compose-material:1.0.0-alpha02. La versión 1.0.0-alpha02 contiene estas confirmaciones.

Nuevas funciones

  • Se agregó la nueva clase CurvedRow para disponer los elementos componibles en forma de arco. (I29941)
  • Se agregó un nuevo tipo de tarjeta para las apps (TitleCard) y compatibilidad para usar imágenes como fondo de las tarjetas a fin de destacar su contenido. (I53b0f)

Cambios en la API

  • Se agregó compatibilidad con la alineación radial a CurvedRow (similar a la alineación vertical en una fila). (Id9de5)
  • Se agregó la nueva clase CurvedRow para disponer los elementos componibles en forma de arco. (I29941)
  • Se agregó un nuevo tipo de tarjeta para las apps (TitleCard) y compatibilidad para usar imágenes como fondo de las tarjetas a fin de destacar su contenido. (I53b0f)
  • Se agregaron íconos de activación (casillas de verificación, botones y botones de selección) a ToggleChipDefaults para que los desarrolladores puedan configurar ToggleChip y SplitToggleChips de forma más fácil. (I7b639)
  • Se actualizó el padding inicial y final del contenido para los chips a fin de que siempre sea 14.dp, independientemente de si el chip tiene un ícono o no (antes era 12.dp si tenía íconos y 14.dp si no los tenía). (I34c86).

Correcciones de errores

  • Se agregaron pruebas para CurvedRow. (I93cdb)
  • Se vincularon las dependencias de Wear Compose a Compose 1.0.0-rc01. (Ie6bc9)
  • Se modificó el manejo del color en la imagen de fondo en las tarjetas y los chips para que la imagen se recorte, en lugar de ampliarse, a fin de mantener sus proporciones. (I29b41)
  • Se agregaron más demostraciones y pruebas de integración para Button y SwitchButton. (5e27ed2)
  • Se agregaron más pruebas de chips a fin de agregar los colores de contenido de imageBackgroundChips. (Ia9183)

Versión 1.0.0-alpha01

1 de julio de 2021

Lanzamiento de androidx.wear.compose:compose-foundation:1.0.0-alpha01 y androidx.wear.compose:compose-material:1.0.0-alpha01. La versión 1.0.0-alpha01 contiene estas confirmaciones.

Nuevas funciones

Wear Compose es una biblioteca de Kotlin basada en Compose que admite Material Design para Wear, una extensión de este lenguaje para wearables de Wear OS. Esta primera versión alfa contiene implementaciones iniciales y funcionales de lo siguiente:

  • Tema de Material: Configura los colores, la tipografía y las formas de manera coherente en los componentes utilizados de esta biblioteca.
  • Chip, CompactChip: Los chips tienen forma de estadio, y hay variaciones disponibles para tomar el contenido de los íconos, las etiquetas y las etiquetas secundarias.
  • ToggleChip, SplitToggleChip: Se trata de un tipo especializado de chips que incluye un espacio para un ícono de botón de activación de dos estados, como un botón de selección o una casilla de verificación. Además, SplitToggleChip tiene dos áreas que se pueden presionar, una en la que se puede hacer clic y una que se puede activar y desactivar.
  • Button, CompactButton: Los botones tienen forma circular y cuentan con un solo espacio de contenido para un ícono o una cantidad mínima de texto (3 caracteres como máximo).
  • ToggleButton: Se trata de un botón que permite activar o desactivar una acción y que contiene un solo espacio para un ícono o una cantidad mínima de texto (3 caracteres como máximo).
  • Card, AppCard: Tienen forma rectangular, con esquinas redondeadas, y ofrecen espacios de contenido, como el ícono de la app, la marca de tiempo, el título y el cuerpo.

Las próximas versiones extenderán el conjunto de widgets a fin de agregar compatibilidad con elementos de Material Design para Wear, como selectores, controles deslizantes, listas, indicadores de página, diálogos, indicadores RSB de desplazamiento, avisos y mucho más.

Además, se brindará compatibilidad con otras funciones específicas para wearables, como texto y diseños curvos, además de estructuras que facilitarán a los desarrolladores la compilación de superposiciones o apps para estos dispositivos.

Wear Compose Material se diseñó con los mismos principios que Compose Material, aunque está orientado a wearables. La biblioteca de Wear Compose Material se debe usar en lugar de la biblioteca de Compose Material cuando se compile para wearables.

Las dos bibliotecas "Material" deben considerarse mutuamente excluyentes y no deben mezclarse en la misma app. Si los desarrolladores incluyeran la biblioteca de Material Compose en sus dependencias, esto indicaría que falta un componente de la biblioteca de Wear Compose Material (en este caso, avísanos lo que necesitas), o bien se está usando un componente que no recomendamos que utilices en un dispositivo wearable.