Compose Material
androidx.compose.material
androidx.compose.material.icons
(Puedes ver todos los paquetes de Compose en los documentos de referencia de la API)
Actualización más reciente | Versión estable | Versión potencial | Versión beta | Versión alfa |
---|---|---|---|---|
21 de agosto de 2024 | 1.6.8 | 1.7.0-rc01 | - | - |
Estructura
Compose es una combinación de 7 IDs de grupo de Maven en androidx
. Cada grupo contiene un subconjunto de funcionalidades objetivo, cada uno con su propio conjunto de notas de la versión.
En esta tabla, se explican los grupos y vínculos correspondientes a cada conjunto de notas de la versión.
Grupo | Descripción |
---|---|
compose.animation | Compila animaciones en las aplicaciones de Jetpack Compose para enriquecer la experiencia del usuario. |
compose.compiler | Transforma las funciones que admite @Composable y habilita las optimizaciones con un complemento de compilador de Kotlin. |
compose.foundation | Escribe aplicaciones de Jetpack Compose con componentes fundamentales listos para usar y extiende la base para compilar tus propias piezas de sistema de diseño. |
compose.material | Compila las IUs de Jetpack Compose con componentes de Material Design listos para usar. Este es el punto de entrada de nivel superior de Compose, diseñado para proporcionar componentes que coincidan con los descritos en www.material.io. |
compose.material3 | Compila las IUs de Jetpack Compose con componentes de Material Design 3, la siguiente evolución de Material Design. Material 3 incluye temas y componentes actualizados, y funciones de personalización de Material You, como el color dinámico. Además, se diseñó para ser coherente con el nuevo estilo visual y la IU del sistema de Android 12. |
compose.runtime | Se trata de los componentes fundamentales del modelo de programación de Compose y de su administración de estados, así como del entorno de ejecución principal al cual se orienta el complemento de compilación de Compose. |
compose.ui | Son los componentes fundamentales de la IU de Compose necesarios para interactuar con el dispositivo, incluidos el diseño, el dibujo y la entrada. |
Cómo declarar dependencias
Para agregar una dependencia en Compose, debes agregar el repositorio de Maven de Google a tu proyecto. Consulta el repositorio de 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.compose.material:material:1.6.8" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.material:material:1.6.8") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
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 de esta biblioteca antes de crear uno nuevo. Puedes agregar tu voto a un error existente haciendo clic en el botón de la estrella.
Consulta la documentación sobre la Herramienta de seguimiento de errores para obtener más información.
Versión 1.7
Versión 1.7.0-rc01
21 de agosto de 2024
Lanzamiento de androidx.compose.material:material-*:1.7.0-rc01
. La versión 1.7.0-rc01 contiene estas confirmaciones.
Versión 1.7.0-beta07
7 de agosto de 2024
Lanzamiento de androidx.compose.material:material-*:1.7.0-beta07
. La versión 1.7.0-beta07 contiene estas confirmaciones.
Versión 1.7.0-beta06
24 de julio de 2024
Lanzamiento de androidx.compose.material:material-*:1.7.0-beta06
. La versión 1.7.0-beta06 contiene estas confirmaciones.
Versión 1.7.0-beta05
10 de julio de 2024
Lanzamiento de androidx.compose.material:material-*:1.7.0-beta05
. La versión 1.7.0-beta05 contiene estas confirmaciones.
Versión 1.7.0-beta04
26 de junio de 2024
Lanzamiento de androidx.compose.material:material-*:1.7.0-beta04
. La versión 1.7.0-beta04 contiene estas confirmaciones.
Versión 1.7.0-beta03
12 de junio de 2024
Lanzamiento de androidx.compose.material:material-*:1.7.0-beta03
. La versión 1.7.0-beta03 contiene estas confirmaciones.
Versión 1.7.0-beta02
29 de mayo de 2024
Lanzamiento de androidx.compose.material:material-*:1.7.0-beta02
. La versión 1.7.0-beta02 contiene estas confirmaciones.
Cambios en la API
- Se actualizó la API para definir el estilo de los vínculos: se movió
TextLinkStyles
aTextStyle
y se quitóTextDefaults
del material (I5477b).
Versión 1.7.0-beta01
14 de mayo de 2024
Lanzamiento de androidx.compose.material:material-*:1.7.0-beta01
. La versión 1.7.0-beta01 contiene estas confirmaciones.
Cambios en la API
- Se actualizó la API para obtener vínculos con temática de Material en Text. Específicamente, se quitaron los métodos de
TextDefaults
para construirLinkAnnotations
con temas y analizar HTML con vínculos temáticos. En su lugar, se agregó una claseTextLinkStyles
que permite diseñar los vínculos como un parámetro en el elemento Text componible. (I31b93).
Versión 1.7.0-alpha08
1 de mayo de 2024
Lanzamiento de androidx.compose.material:material-*:1.7.0-alpha08
. La versión 1.7.0-alpha08 contiene estas confirmaciones.
Cambios en la API
- Se corrigió
backgroundColor
que no se aplicaba aTextFieldDecorationBox
yOutlinedTextFieldDecorationBox
. Los cuadros de decoración ahora aceptan un parámetroshape
. (I371c2, b/307694651). - Se quitó
RippleConfiguration#isEnabled
y se hizo anulable paraLocalRippleConfiguration
. Para inhabilitar un ripple, en lugar de proporcionar unRippleConfiguration
conisEnabled = false
, proporcionanull
aLocalRippleConfiguration
. (I22725). - Los vínculos de texto tienen una opción de estilo de estado presionado además del estilo normal (desplazamiento y enfoque). Cada método
TextDefaults
tiene un argumentopressedStyle
para admitirlo. (Ic473f, b/139312671).
Correcciones de errores
- El padding superior de
OutlinedTextField
para la etiqueta ahora considera el tamaño de la fuente del sistema. (Idc781).
Versión 1.7.0-alpha07
17 de abril de 2024
Lanzamiento de androidx.compose.material:material-*:1.7.0-alpha07
. La versión 1.7.0-alpha07 contiene estas confirmaciones.
Cambios en la API
- Se aplicó la opción de estilo de estado presionado a los vínculos de texto, además del estilo normal, se colocaron sobre el elemento y se enfocaron. (I5f864, b/139312671).
- Se agregó un objeto
TextDefaults
que contiene métodos para construir unLinkAnnotation
y analizar la cadena etiquetada con HTML que aplicaMaterialTheme
a los vínculos. (I98532, b/139312671).
Versión 1.7.0-alpha06
3 de abril de 2024
Lanzamiento de androidx.compose.material:material-*:1.7.0-alpha06
. La versión 1.7.0-alpha06 contiene estas confirmaciones.
Anuncio
androidx.compose.material
ya no requiere el uso de la misma versión de cada artefacto que es este grupo de Maven. Los usuarios pueden combinar y hacer coincidir versiones de bibliotecas base de Compose. (Ie5fba)
Cambios en la API
- Se movieron más valores predeterminados de
ModalDrawer
yBottomDrawer
al objetoDrawerDefaults
. (Ib5b2e).
Versión 1.7.0-alpha05
20 de marzo de 2024
Lanzamiento de androidx.compose.material:material-*:1.7.0-alpha05
. La versión 1.7.0-alpha05 contiene estas confirmaciones.
Cambios en la API
- Se quitó la marca
ScaffoldSubcomposeInMeasureFix
. (I67363).
Versión 1.7.0-alpha04
6 de marzo de 2024
Lanzamiento de androidx.compose.material:material-*:1.7.0-alpha04
. La versión 1.7.0-alpha04 contiene estas confirmaciones.
Nuevas funciones
- Se agregó un nuevo artefacto
androidx.compose.material:material-navigation
que agrega compatibilidad con hojas inferiores como destinos cuando se usa Navigation Compose. Esto reemplaza la biblioteca de Accompanist Navigation Material. (d65d57, b/180247978).
Versión 1.7.0-alpha03
21 de febrero de 2024
Lanzamiento de androidx.compose.material:material-*:1.7.0-alpha03
. La versión 1.7.0-alpha03 contiene estas confirmaciones.
Cambios en la API
BottomDrawer
pasó de ser experimental a estable.BottomDrawerState
ahora expone el progreso como una función, lo que permite el progreso de la consulta entre destinos específicos.BottomDrawerState
ahora permite personalizar la especificación de animación, yconfirmStateChange
ya no es una expresión lambda final. (I9c029, b/261423850).BackdropScaffold
pasó de ser experimental a estable. La especificación de animación ahora es una especificación detween
de acuerdo con los lineamientos. El parámetrosnackbarHost
deBackdropScaffold
ya no es el último parámetro para evitar confusiones con las expresiones lambda finales.BackdropScaffoldState
expone una API deprogress(from, to)
para el progreso de la consulta entre anclas. (I73f48, b/261423218).- Las hojas inferiores estándar pasaron de ser experimentales a estables. Se quitaron los constructores obsoletos. La especificación de animación ahora es una especificación de interpolación de acuerdo con los lineamientos. (I3c1a8, b/278692145, b/261409034).
- Las hojas inferiores modales se pasaron de experimentales a estables. Se quitaron los constructores obsoletos. La especificación de animación ahora es una especificación de
tween
de acuerdo con los lineamientos. (Ic53f4, b/278692145, b/266780235, b/261409034).
Correcciones de errores
- Se corrigió un problema por el que
BackdropScaffold
podía fallar en situaciones específicas junto conLookaheadScope
. (I51396). - Se quitó la subcomposición dentro de
BottomSheetScaffold
para mejorar el rendimiento. Se corrigió un problema por el queBottomSheetScaffold
fallaba en situaciones específicas junto conLookaheadScope
. (I2f90c). - Se quitó la subcomposición dentro de
ModalBottomSheetLayout
, lo que mejora el rendimiento. (I7a025).
Versión 1.7.0-alpha02
7 de febrero de 2024
Lanzamiento de androidx.compose.material:material-*:1.7.0-alpha02
. La versión 1.7.0-alpha02 contiene estas confirmaciones.
Versión 1.7.0-alpha01
24 de enero de 2024
Lanzamiento de androidx.compose.material:material-*:1.7.0-alpha01
. La versión 1.7.0-alpha01 contiene estas confirmaciones.
Cambios en el comportamiento
- Se migraron los componentes de Material para usar las nuevas APIs de ripple y ya no se consultarán
RippleTheme
Cambios en la API
rememberRipple
yRippleTheme
dejaron de estar disponibles en Material ripple, y se agregaron las nuevas APIs de ripple yRippleConfiguration
a las bibliotecas de sistemas de Material y otros diseños.Los componentes de Material que anteriormente aceptaban un
MutableInteractionSource
y que recordaron de forma predeterminada{ MutableInteractionSource() }
ahora aceptan unMutableInteractionSource
anulable y, de forma predeterminada, son nulos. Si no elevas y usas elMutableInteractionSource
, debes pasar un valor nulo. Esto permite que algunos componentes creen de forma diferida una instancia solo cuando sea necesario, lo que mejora el rendimiento. También se recomienda que realices cambios similares en tus propios componentes.
Versión 1.6
Versión 1.6.8
12 de junio de 2024
Lanzamiento de androidx.compose.material:material-*:1.6.8
. La versión 1.6.8 contiene estas confirmaciones.
Versión 1.6.7
1 de mayo de 2024
Lanzamiento de androidx.compose.material:material-*:1.6.7
. La versión 1.6.7 contiene estas confirmaciones.
Versión 1.6.6
17 de abril de 2024
Lanzamiento de androidx.compose.material:material-*:1.6.6
. No hay cambios desde la última versión.
Versión 1.6.5
3 de abril de 2024
Lanzamiento de androidx.compose.material:material-*:1.6.5
. La versión 1.6.5 contiene estas confirmaciones.
Versión 1.6.4
20 de marzo de 2024
Lanzamiento de androidx.compose.material:material-*:1.6.4
. La versión 1.6.4 contiene estas confirmaciones.
Versión 1.6.3
6 de marzo de 2024
Lanzamiento de androidx.compose.material:material-*:1.6.3
. La versión 1.6.3 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió la regresión en
ExposedDropdownMenu
para que vuelva a enfocarse. (c0e0ed, b/323694447).
Versión 1.6.2
21 de febrero de 2024
Lanzamiento de androidx.compose.material:material-*:1.6.2
. La versión 1.6.2 contiene estas confirmaciones.
Versión 1.6.1
7 de febrero de 2024
Lanzamiento de androidx.compose.material:material-*:1.6.1
. La versión 1.6.1 contiene estas confirmaciones.
Versión 1.6.0
24 de enero de 2024
Lanzamiento de androidx.compose.material:material-*:1.6.0
. La versión 1.6.0 contiene estas confirmaciones.
Versión 1.6.0-rc01
10 de enero de 2024
Lanzamiento de androidx.compose.material:material-*:1.6.0-rc01
. La versión 1.6.0-rc01 contiene estas confirmaciones.
Versión 1.6.0-beta03
13 de diciembre de 2023
Lanzamiento de androidx.compose.material:material-*:1.6.0-beta03
. La versión 1.6.0-beta03 contiene estas confirmaciones.
Versión 1.6.0-beta02
29 de noviembre de 2023
Lanzamiento de androidx.compose.material:material-*:1.6.0-beta02
. La versión 1.6.0-beta02 contiene estas confirmaciones.
Versión 1.6.0-beta01
15 de noviembre de 2023
Lanzamiento de androidx.compose.material:material-*:1.6.0-beta01
. La versión 1.6.0-beta01 contiene estas confirmaciones.
Versión 1.6.0-alpha08
18 de octubre de 2023
Lanzamiento de androidx.compose.material:material-*:1.6.0-alpha08
. La versión 1.6.0-alpha08 contiene estas confirmaciones.
Cambios en la API
- Una función
materialIcon
dejó de estar disponible y se reemplazó por su sobrecarga que toma un parámetroautoMirror
. (Ia338d).
Corrección de errores - Aumento automático de la altura del elemento de navegación para contenido de gran tamaño. (0c4ecc, b/272336962).
Versión 1.6.0-alpha07
4 de octubre de 2023
Lanzamiento de androidx.compose.material:material-*:1.6.0-alpha07
. La versión 1.6.0-alpha07 contiene estas confirmaciones.
- Actualizaciones de dependencias
Versión 1.6.0-alpha06
20 de septiembre de 2023
Lanzamiento de androidx.compose.material:material-*:1.6.0-alpha06
. La versión 1.6.0-alpha06 contiene estas confirmaciones.
Cambio rotundo de comportamiento
- Se quitó la funcionalidad relacionada con el panel lateral de
BottomSheetScaffold
. Une tuBottomSheetScaffold
en un panel lateral componible para lograr la funcionalidad anterior. ConsultaBottomSheetScaffoldWithDrawerSample
para ver un ejemplo. (I1dcc8).
Cambios en la API
- Se agregó una marca temporal para controlar si Scaffold debe medir sus elementos secundarios durante la medición o durante la colocación. De forma predeterminada, se medirá en mediciones. Si tienes problemas con el comportamiento nuevo, infórmalos. (If6e3b).
Versión 1.6.0-alpha05
6 de septiembre de 2023
Lanzamiento de androidx.compose.material:material-*:1.6.0-alpha05
. La versión 1.6.0-alpha05 contiene estas confirmaciones.
Nuevas funciones
- Se agregó compatibilidad con íconos de duplicación automática cuando se renderizan en diseños de derecha a izquierda. Los íconos en los módulos ampliados de íconos de material y íconos de material ahora proporcionan conjuntos de íconos adicionales para admitir la duplicación automática cuando el ícono lo permite. Los nuevos conjuntos tienen el prefijo
Icons.AutoMirrored.Filled...
, etc., y mantienen los íconos que se reflejarán automáticamente en los diseños de derecha a izquierda. Consulta la lista de íconos de Material para conocer la lista de íconos que pueden (y deben) duplicarse automáticamente.
Cambios en la API
- Se agregó compatibilidad con íconos de duplicación automática cuando se renderizan en diseños de derecha a izquierda. Los íconos en los módulos ampliados de íconos de material y íconos de material ahora proporcionan conjuntos de íconos adicionales para admitir la duplicación automática cuando el ícono lo permite. Los nuevos conjuntos tienen el prefijo
Icons.AutoMirrored.Filled...
, etc., y mantienen los íconos que se reflejarán automáticamente en los diseños de derecha a izquierda. Consulta la lista de íconos de Material para conocer la lista de íconos que pueden (y deben) duplicarse automáticamente. Las propiedades de ícono proporcionadas anteriormente para esos íconos ahora están marcadas como obsoletas y proporcionan una sugerencia de bloque de reemplazo para ayudar con la migración. En caso de que no tengas un control especial para duplicar íconos en RTL, te recomendamos que migres al nuevo conjunto de íconos. Por ejemplo,Icons.Filled.ArrowBack
debe refactorizarse aIcons.AutoMirrored.Filled.ArrowBack
. (I4b511).
Versión 1.6.0-alpha04
23 de agosto de 2023
Lanzamiento de androidx.compose.material:material-*:1.6.0-alpha04
. La versión 1.6.0-alpha04 contiene estas confirmaciones.
Correcciones de errores
- Se solucionó un problema por el que algunos componentes que usaban
Subcomposition
(p. ej.,BottomSheetScaffold
) dentro de Scaffold dentro deLookaheadScope
intentaban leer su tamaño demasiado pronto (If2c5d). - Se corrigió el cálculo
offset
deDropdownMenu
para que los desplazamientos de x dependan únicamente de la dirección del diseño local, y ya no se revertirán cuando el menú esté cerca de la parte inferior de la pantalla. (Iccc74, b/294103942). - Se optimizaron los componentes internos del diseño de
BottomSheetScaffold
y se corrigió un posible problema conBottomSheetScaffold
dentro de unLookaheadLayout
. (Ic0afa).
Versión 1.6.0-alpha03
9 de agosto de 2023
Lanzamiento de androidx.compose.material:material-*:1.6.0-alpha03
. La versión 1.6.0-alpha03 contiene estas confirmaciones.
Cambios en la API
- Los componentes de Material2 ahora tienen una API separada para pasar
windowInsets
a fin de admitir la funcionalidad de borde a borde en Android. A diferencia de los componentes de material3, los componentes de material2 no admiten inserciones de forma predeterminada, y el valor se debe pasar manualmente. Consulta las muestras correspondientes para obtener orientación. (I655e8).
Versión 1.6.0-alpha02
26 de julio de 2023
Lanzamiento de androidx.compose.material:material-*:1.6.0-alpha02
. La versión 1.6.0-alpha02 contiene estas confirmaciones.
Cambios en la API
- Estamos moviendo la dependencia de densidad al nivel de componente. Esto se aplica a los siguientes componentes:
SwipeToDismiss
y los componentes basados en Hojas de cálculo. Usa la nueva sobrecarga proporcionada donde la densidad es un parámetro. (I1846e). - Anotaciones adicionales para especificar las entradas permitidas a elementos componibles (I51109)
- Se actualizaron los archivos de la API para anotar la supresión de compatibilidad (I8e87a, b/287516207).
- Se agregó una nueva alineación de inicio para
FabPosition
. (Ib7aea, b/170592777) - Se dio de baja
TextFieldColorsWithIcons
en Material 2 y se reemplazó porTextFieldColors
. Cuando anulesleadingIconColor
otrailingIconColor
, también anula la sobrecarga coninteractionSource
. (Id57ed, b/199377790).
Versión 1.6.0-alpha01
21 de junio de 2023
Lanzamiento de androidx.compose.material:material-*:1.6.0-alpha01
. La versión 1.6.0-alpha01 contiene estas confirmaciones.
Cambios en el comportamiento
includeFontPadding
ahora esfalse
de forma predeterminada en la tipografía de Material 2. También se cambió el estilo predeterminado de altura de línea aTrim.None
yAlignment.Center
, y se agrególineHeight
explícito (en sp) a losTextStyle
deTypography
. Consulta los documentos de la API si quieres personalizar estos valores y lee la entrada de blog para obtener una explicación detallada de estos cambios. (Icabc3, I3f801, I04c03).
Cambios en la API
- Las APIs de
Swipeable
de Material dejaron de estar disponibles. Consulta las APIs deAnchoredDraggable
de Foundation, que están optimizadas para casos de uso simples y complejos. (I732e0).
Correcciones de errores
BottomSheetState
,ModalBottomSheetState
yBottomDrawerState
ahora exponen una propiedad de progreso que indica el progreso entre el ancla actual (establecida) y el ancla más cercana en la dirección de deslizamiento. (I1b317, b/271169225, b/276375124, b/276776071, b/270066861).
Versión 1.5
Versión 1.5.4
18 de octubre de 2023
Lanzamiento de androidx.compose.material:material-*:1.5.4
. La versión 1.5.4 contiene estas confirmaciones.
Versión 1.5.3
4 de octubre de 2023
Lanzamiento de androidx.compose.material:material-*:1.5.3
. Esta versión no tiene cambios
Versión 1.5.2
27 de septiembre de 2023
Lanzamiento de androidx.compose.material:material-*:1.5.2
. La versión 1.5.2 contiene estas confirmaciones.
Versión 1.5.1
6 de septiembre de 2023
Se lanzó androidx.compose.material:material-*:1.5.1
sin cambios. La versión 1.5.1 contiene estas confirmaciones.
Versión 1.5.0
9 de agosto de 2023
Lanzamiento de androidx.compose.material:material-*:1.5.0
. La versión 1.5.0 contiene estas confirmaciones.
Cambios importantes desde la versión 1.4.0
Cambios en la API
- Se incorporaron cambios en las APIs de Translateable1 en
BottomSheetScaffold
. Se cambió el nombre del parámetroconfirmStateChange
deBottomSheetState
aconfirmValueChange
.progress
ahora está expuesto como un valor flotante.animateTo
ysnapTo
son internos. En su lugar, usaexpand()
ycollapse()
. Se quitarondirection
yoverflow
. Se reemplazóoffset
porrequireOffset()
. I323b4 - Se marca la función
snapTo
en el panel lateral como API no experimental (Ib9c18, b/261425368). - Se agregó un parámetro de color de seguimiento para los indicadores de progreso circular y un parámetro de limitación de trazo tanto para los indicadores de progreso circular como los de progreso lineal (Ie668c, b/216325962, b/222964817).
- Se cambió el nombre del
confirmStateChange
deModalBottomSheetState
,ModalBottomSheetState.Saver
yrememberModalBottomSheetState
aconfirmValueChange
(Ib48d1). - Agrega
Modifier.minimumInteractiveComponentSize
. que puede usarse para reservar al menos 48 dp de tamaño para desambiguar las interacciones táctiles si el elemento fuera más pequeño (I33f58, b/258495559). - Se incorporaron cambios en las APIs de Swipeable en
ModalBottomSheetLayout
. El elemento animateTo deModalBottomSheetState
ya no toma un parámetroanimationSpec
y el desplazamiento expuesto ahora es anulable. UsarequireOffset
para requerir el desplazamiento. (Ia2e79). - Se agregó la anotación
@JvmDefaultWithCompatibility
(I8f206). - Los cambios incorporados en las APIs de Deslizable en el
animateTo
deModalDrawer. DrawerState
se reemplazaron por los métodos de apertura y cierre, y el desplazamiento ahora es anulable. UsarequireOffset
para requerir el desplazamiento. (I3de9e). - Se actualizaron los paneles laterales y las hojas de cálculo para retrasar correctamente las presiones en caso de que los gestos se conviertan en eventos de desplazamiento.
- Se agregó el parámetro
minLines
al texto de Material y Material 3,TextField
yOutlinedTextField
, que permiten establecer la altura mínima del componente en términos de cantidad de líneas (I4af1d).
Correcciones de errores
- Se solucionó un problema por el que
pullRefresh
no consumía la velocidad, lo que provocaba que se mostrara el sobredesplazamiento. También se cambió la firma de la API de la lambdaonRelease
enModifier.pullRefresh
para mostrar un número de punto flotante para velocidad consumida (I7db65, b/266874741). BottomSheetState
,ModalBottomSheetState
yBottomDrawerState
ahora exponen una propiedad de progreso que indica el progreso entre el ancla actual (establecida) y el ancla más cercana en la dirección de deslizamiento. (I1b317, b/271169225, b/276375124, b/276776071, b/270066861).- Se corrigió la acción de descarte
AlertDialog
para que aparezca debajo de la acción de confirmación cuando las acciones se apilan unas sobre otras para adaptarse al ancho del diálogo. Esta corrección alinea la implementación con las especificaciones de Material Design. (I029de, b/235454277). BottomSheetScaffold
ya no participará en el desplazamiento anidado cuandogesturesEnabled
se establezca como falso. (I634f3, b/215403277).- Se corrigió un error por el que
BottomSheetScaffold
fallaba cuando se proporcionaba contenido vacío para espacios. (Ib24a5, b/235588730). - Se corrigió la interceptación de eventos de clics o punteros de
PullRefreshIndicator
. (2494256, b/271777421). - Se solucionó un problema por el que
ModalBottomSheetLayout
fallaba en un caso límite durante el cambio de orientación Las animaciones de diseño (p.ej.,Modifier.animateContentSize
) en el contenido de la hoja ahora funcionan sin problemas. (I2f981, b/266780234).
Versión 1.5.0-rc01
26 de julio de 2023
Lanzamiento de androidx.compose.material:material-*:1.5.0-rc01
. La versión 1.5.0-rc01 contiene estas confirmaciones.
Versión 1.5.0-beta03
28 de junio de 2023
Lanzamiento de androidx.compose.material:material-*:1.5.0-beta03
. La versión 1.5.0-beta03 contiene estas confirmaciones.
Correcciones de errores
BottomSheetState
,ModalBottomSheetState
yBottomDrawerState
ahora exponen una propiedad de progreso que indica el progreso entre el ancla actual (establecida) y el ancla más cercana en la dirección de deslizamiento. (I1b317, b/271169225, b/276375124, b/276776071, b/270066861).
Versión 1.5.0-beta02
7 de junio de 2023
Lanzamiento de androidx.compose.material:material-*:1.5.0-beta02
. La versión 1.5.0-beta02 contiene estas confirmaciones.
Versión 1.5.0-beta01
24 de mayo de 2023
Lanzamiento de androidx.compose.material:material-*:1.5.0-beta01
. La versión 1.5.0-beta01 contiene estas confirmaciones.
Cambios en la API
- El desplazamiento de
DrawerState
yBottomDrawerState
ya no es anulable. En su lugar, muestranFloat.NaN
para indicar la ausencia del desplazamiento. (Ie9855). - Se agregó una opción para pasar un
ScrollState
cuando se construye unDropdownMenu
o unExposedDropdownMenu
para controlar el estado de desplazamiento vertical de los elementos del menú que se muestran. (Idb009, b/185304441). - Se agregó compatibilidad para habilitar o inhabilitar el gesto de
ModalBottomSheetLayout
, de modo que el usuario pueda configurar esta opción para hojas inferiores más destacadas. (I40af0) - Se agregó un parámetro de color a
BasicText
para permitir animar o establecer el color del texto de manera eficiente. (Iffd88, b/246961787). - Se cambió el nombre de la propiedad semántica
isContainer
aisTraversalGroup
. (I121f6)
Correcciones de errores
- Se corrigió la acción de descarte
AlertDialog
para que aparezca debajo de la acción de confirmación cuando las acciones se apilan unas sobre otras para adaptarse al ancho del diálogo. Esta corrección alinea la implementación con las especificaciones de Material Design. (I029de, b/235454277).
Versión 1.5.0-alpha04
10 de mayo de 2023
Lanzamiento de androidx.compose.material:material-*:1.5.0-alpha04
. La versión 1.5.0-alpha04 contiene estas confirmaciones.
Cambios en la API
- Estamos moviendo la dependencia de densidad al nivel de componente. Esto se aplica a los siguientes componentes:
BottomDrawer
,ModalBottomSheetLayout
,BottomSheetScaffold
,Switch
yModalDrawer
. Usa la nueva sobrecarga proporcionada donde la densidad es un parámetro. (I8fbd8).
Versión 1.5.0-alpha03
19 de abril de 2023
Lanzamiento de androidx.compose.material:material-*:1.5.0-alpha03
. La versión 1.5.0-alpha03 contiene estas confirmaciones.
Cambios en la API
- Se actualizaron los componentes internos de
BottomDrawer
para usar las nuevas APIs deSwipeableV2
. Debido a que esteBottomDrawerState
ahora solo tendrá APIs definidas a nivel de clase, no heredará métodos ni propiedades deSwipeableState
. Estamos usando la composición con unSwipeableV2State
interno. Offset ahora es una propiedad de punto flotante anulable. Se puede acceder al valor actual y a un valor objetivo de deslizamiento a través de las propiedades currentValue y targetValue. Se seguirán admitiendo los métodos de nivel de clase anteriores, como abrir, expandir o cerrar, y las propiedades, comoisOpen/isClosed
. (Iad40c, b/178529942, b/220676296).
Correcciones de errores
- Se actualizaron los componentes internos del componente Switch. El interruptor ahora mostrará una vista previa del más cercano (estado objetivo) cuando se arrastre. (Id90d4).
- Se optimizó el contenido animado de hojas (p.ej.,
Modifier.animateContentSize
en el contenido de la hoja) enBottomSheetScaffold
y ahora funciona sin problemas. (Ia913c, b/270518202, b/254446195). BottomSheetScaffold
ya no participará en el desplazamiento anidado cuandogesturesEnabled
se establezca enfalse
. (I634f3, b/215403277).
Versión 1.5.0-alpha02
5 de abril de 2023
Lanzamiento de androidx.compose.material:material-*:1.5.0-alpha02
. La versión 1.5.0-alpha02 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un error por el que
BottomSheetScaffold
fallaba cuando se proporcionaba contenido vacío para espacios. (Ib24a5, b/235588730). - Se corrigió la interceptación de eventos de clics / punteros de
PullRefreshIndicator
(2494256, b/271777421).
Versión 1.5.0-alpha01
22 de marzo de 2023
Lanzamiento de androidx.compose.material:material-*:1.5.0-alpha01
. La versión 1.5.0-alpha01 contiene estas confirmaciones.
Correcciones de errores
- Agrega una muestra de reprocesamiento del grupo de chips. Actualiza el padding horizontal entre los chips secundarios en la muestra del grupo de chips de una sola línea para que coincida con la especificación. (I3b155).
- Se solucionó un problema por el que
ModalBottomSheetLayout
fallaba en un caso límite durante el cambio de orientación Las animaciones de diseño (p.ej.,Modifier.animateContentSize
) en el contenido de la hoja ahora funcionan sin problemas. (I2f981, b/266780234).
Versión 1.4
Versión 1.4.3
3 de mayo de 2023
Lanzamiento de androidx.compose.material:material-*:1.4.3
sin cambios (solo un cambio de versión).
Versión 1.4.2
19 de abril de 2023
Lanzamiento de androidx.compose.material:material-*:1.4.2
. La versión 1.4.2 contiene estas confirmaciones.
Versión 1.4.1
5 de abril de 2023
Lanzamiento de androidx.compose.material:material-*:1.4.1
. La versión 1.4.1 contiene estas confirmaciones.
Versión 1.4.0
22 de marzo de 2023
Lanzamiento de androidx.compose.material:material-*:1.4.0
. La versión 1.4.0 contiene estas confirmaciones.
Cambios importantes desde la versión 1.3.0
Cambios en la API
- Agrega
Modifier.minimumInteractiveComponentSize
. que puede usarse para reservar al menos 48 dp de tamaño para desambiguar las interacciones táctiles si el elemento fuera más pequeño (I33f58, b/258495559). - Se incorporaron cambios en las APIs de Swipeable en
ModalDrawer
. Se reemplazó el elementoanimateTo
deDrawerState
por los métodos de apertura y cierre, y el desplazamiento ahora es anulable. UsarequireOffset
para requerir el desplazamiento. (I3de9e). - Se agregó el parámetro
minLines
al texto de Material y Material 3,TextField
yOutlinedTextField
, que permiten establecer la altura mínima del componente en términos de cantidad de líneas (I4af1d). - Se agregó el parámetro
minLines
aBasicText
yBasicTextField
. Permite establecer la altura mínima de estos elementos componibles en términos de cantidad de líneas (I24294, b/122476634).
Versión 1.4.0-rc01
8 de marzo de 2023
Se lanzó androidx.compose.material:material-*:1.4.0-rc01
sin cambios. La versión 1.4.0-rc01 contiene estas confirmaciones.
Versión 1.4.0-beta02
22 de febrero de 2023
Lanzamiento de androidx.compose.material:material-*:1.4.0-beta02
. La versión 1.4.0-beta02 contiene estas confirmaciones.
Cambios en la API
- Se incorporaron cambios en las APIs de Swipeable en
BottomSheetScaffold
. Se cambió el nombre del parámetroconfirmStateChange
deBottomSheetState
aconfirmValueChange
.progress
ahora está expuesto como un valor flotante.animateTo
ysnapTo
son internos. En su lugar, usaexpand()
ycollapse()
. Se quitarondirection
yoverflow
. Se reemplazóoffset
porrequireOffset()
. (I323b4).
Correcciones de errores
- Se quitaron los roles semánticos de las superficies en las que se puede hacer clic y se pueden seleccionar, y se actualizaron los componentes que los usaban para establecer roles con modificador.semantics. (Ibb4ba)
- Se realizaron actualizaciones menores a los íconos extendidos de Material que ajustan los íconos rellenos de
desktop_mac
,directions
ykitchen
. (I65f5e).
Versión 1.4.0-beta01
8 de febrero de 2023
Lanzamiento de androidx.compose.material:material-*:1.4.0-beta01
. La versión 1.4.0-beta01 contiene estas confirmaciones.
Cambios en la API
- Se solucionó un problema por el que
pullRefresh
no consumía la velocidad, lo que provocaba que se mostrara el sobredesplazamiento. También se cambió la firma de la API de la lambdaonRelease
enModifier.pullRefresh
para mostrar un número de punto flotante para velocidad consumida (I7db65, b/266874741). - Se restableció el método get de propiedad
LocalMinimuTouchTargetEnforcement
, y se marcó como obsoleto, y redirecciona aLocalMinimumInteractiveComponentEnforcement
. (I60dd5)
Versión 1.4.0-alpha05
25 de enero de 2023
Lanzamiento de androidx.compose.material:material-*:1.4.0-alpha05
. La versión 1.4.0-alpha05 contiene estas confirmaciones.
Correcciones de errores
- Se solucionó un problema por el que el estado de
ModalBottomSheetLayout's HalfExpanded
se calculaba de forma incorrecta y la hoja parecía flotar (I8c615, b/265610459). - Se corrigió un error en
ModalBottomSheetLayout
por el que la hoja fallaba cuando se pasaba del estado oculto a un estado visible en algunas circunstancias (Ia9265, b/265444789).
Versión 1.4.0-alpha04
11 de enero de 2023
Se lanzó androidx.compose.material:material-*:1.4.0-alpha04
. La versión 1.4.0-alpha04 contiene estas confirmaciones.
Cambios en la API
- Se agregó la propiedad semántica
IsContainer
a Surfaces. Esta propiedad se usará en un cambio posterior que determina el orden de recorrido en función del significado semántico de los elementos, como las plataformas (I63379). - Se marca la función
snapTo
en el panel lateral como API no experimental (Ib9c18, b/261425368). - Se agregó un parámetro de color de seguimiento para los indicadores de progreso circular y un parámetro de limitación de trazo tanto para los indicadores de progreso circular como los de progreso lineal (Ie668c, b/216325962, b/222964817).
- Se cambió el nombre del
confirmStateChange
deModalBottomSheetState
,ModalBottomSheetState.Saver
yrememberModalBottomSheetState
aconfirmValueChange
(Ib48d1). - Se aumentó la nulabilidad de tipo de datos que se muestra de las funciones ocultas obsoletas (Ibf7b0).
- Se agregó
Modifier.minimumInteractiveComponentSize
, que puede usarse para reservar al menos 48 dp de tamaño para desambiguar las interacciones táctiles si el elemento fuera más pequeño (I33f58, b/258495559). - Se incorporaron cambios en las APIs de Swipeable en
ModalBottomSheetLayout
. El elementoanimateTo
deModalBottomSheetState
ya no toma un parámetroanimationSpec
y el elementooffset
expuesto ahora es anulable. Se utilizarequireOffset
para solicitar el elementooffset
(Ia2e79).
Correcciones de errores
- La hoja de un
ModalBottomSheetLayout
ahora tiene un ancho máximo de 640 dp (I71a4f, b/234927577). - Se solucionó un problema por el que
rememberPullRefreshState
no actualizabarefreshThreshold
nirefreshingOffset
con el tiempo (Ifed10, b/263159832). - El progreso que muestran los indicadores ahora está delimitado correctamente en el rango esperado (I8a7eb, b/262262727).
- Mientras
ModalBottomSheetState
no haya recibido anclas, actualizarácurrentValue
sin animación cuando se llame asnapTo
oanimateTo
, en lugar de generar una excepción (I2c91b). - Se corrigió el estado habilitado en la implementación de
FilterChip
de Material 2 (Id326a, b/261329817). - Se corrigió un error por el que
ModalBottomSheetLayout
fallaba si seHalfExpanded
cuando rotaba del modo vertical al horizontal. Asegúrate de pasar elinitialValue
correcto. Para ello, puedes, por ejemplo, verificar la configuración (Ie8df7, b/182882364). - Se solucionó un problema por el que
ModalBottomSheetLayout
fallaba si la hoja estaba vacía.ModalBottomSheetLayout
ahora permite contenido de hojas vacías. Si la hoja está vacía, solo aparecerá con estado Oculto (Ic2288, b/200980998, b/216693030).
Problema conocido
- Cuando actualices de
androidx.compose.foundation:1.4.0-alpha03
aandroidx.compose.foundation:1.4.0-alpha04
, es posible que experimentes un errorjava.lang.NoSuchFieldError
. Aquí es donde originalmente se informó el problema. Se envió una solución, que estará disponible en la próxima actualización de Compose. Como solución, actualiza las bibliotecasandroidx.compose.material
yandroidx.compose.material3
a la versión más reciente (1.1.0-alpha04) o cambia tuandroidx.compose.foundation
a la versión 1.4.0-alpha03 inferior.
Versión 1.4.0-alpha03
7 de diciembre de 2022
Se lanzó androidx.compose.material:material-*:1.4.0-alpha03
. La versión 1.4.0-alpha03 contiene estas confirmaciones.
Cambios en la API
- Se agregó la anotación
@JvmDefaultWithCompatibility
(I8f206). - Se incorporaron cambios en las APIs de
Swipeable
enModalDrawer
. Se reemplazó el elementoanimateTo
deDrawerState
por los métodosopen
yclose
, y el desplazamiento ahora es anulable. Se usarequireOffset
para requerir el desplazamiento (I3de9e). - Se agregó una API de modificador para consultar información de desplazamiento de principales (I2ba9d, b/203141462).
- Se usa en
Clickable
para retrasar correctamente las interacciones de presionar, cuando los gestos pueden convertirse en eventos de desplazamiento. - Se corrigió un error donde
Clickables
no retrasaba correctamente las ondas, cuando se usa dentro de unScrollable ViewGroup
. - Se actualizaron los paneles laterales y las hojas de cálculo para retrasar las presiones correctamente en caso de que los gestos se conviertan en eventos de desplazamiento.
Correcciones de errores
- Se solucionó un problema en el que
PullRefreshIndicator
podía bloquearse después de llamar aonRefresh
si no se cambiaba el estado de actualización a verdadero (Ie2416, b/248274004).
Actualizaciones de dependencias
- La IU de Compose y Compose Material ahora dependen de Lifecycle 2.5.1. (I05ab0, b/258038814).
Versión 1.4.0-alpha02
9 de noviembre de 2022
Lanzamiento de androidx.compose.material:material-*:1.4.0-alpha02
. La versión 1.4.0-alpha02 contiene estas confirmaciones.
Cambios en la API
awaitFirstDown
ywaitForUpOrCancellation
ahora aceptan unPointerEventPass
para lograr mayor flexibilidad (I7579a, b/212091796).- Se agregó el parámetro
minLines
al texto de Material y Material 3,TextField
yOutlinedTextField
, que permiten establecer la altura mínima del componente en términos de cantidad de líneas (I4af1d). - Se agregó el parámetro
minLines
aBasicTex
t yBasicTextField
. Permite establecer la altura mínima de estos elementos componibles en términos de cantidad de líneas (I24294, b/122476634).
Versión 1.4.0-alpha01
24 de octubre de 2022
Lanzamiento de androidx.compose.material:material-*:1.4.0-alpha01
. La versión 1.4.0-alpha01 contiene estas confirmaciones.
Cambios en la API
- Se agregó un nuevo método,
awaitEachGesture()
, para los detectores de gestos. Funciona de manera similar aforEachGesture()
, pero la repetición de gestos funciona completamente dentro deAwaitPointerEventScope
, por lo que no se pueden perder eventos entre iteraciones. forEachGesture()
dejó de estar disponible a favor deawaitEachGesture()
porque permite que se pierdan eventos entre gestos (Iffc3f, b/251260206).
Versión 1.3
Versión 1.3.1
9 de noviembre de 2022
Lanzamiento de androidx.compose.material:material-*:1.3.1
. La versión 1.3.1 contiene estas confirmaciones.
Versión 1.3.0
24 de octubre de 2022
Lanzamiento de androidx.compose.material:material-*:1.3.0
. La versión 1.3.0 contiene estas confirmaciones.
Cambios importantes desde 1.2.0
Cambio rotundo de comportamiento
- La elevación máxima admitida en los diálogos y las ventanas emergentes se redujo a 8 dp.
Cambios en la API
- Se agregó un componente Pull-to-Refresh a Compose (I29168).
- Se cambió el nombre de parámetro de los valores al valor en RangeSlider (I3b79a).
Versión 1.3.0-rc01
5 de octubre de 2022
Lanzamiento de androidx.compose.material:material-*:1.3.0-rc01
. La versión 1.3.0-rc01 contiene estas confirmaciones.
Versión 1.3.0-beta03
21 de septiembre de 2022
Lanzamiento de androidx.compose.material:material-*:1.3.0-beta03
. La versión 1.3.0-beta03 contiene estas confirmaciones.
Cambios en la API
- Se agregó un componente Pull-to-Refresh a Compose (I29168).
Versión 1.3.0-beta02
7 de septiembre de 2022
Lanzamiento de androidx.compose.material:material-*:1.3.0-beta02
. La versión 1.3.0-beta02 contiene estas confirmaciones.
No hay cambios desde la versión 1.3.0-beta01
Versión 1.3.0-beta01
24 de agosto de 2022
Se lanzó androidx.compose.material:material-*:1.3.0-beta01
. La versión 1.3.0-beta01 contiene estas confirmaciones.
Cambio rotundo de comportamiento
La elevación máxima admitida en los diálogos y las ventanas emergentes se redujo a 8 dp.
La elevación máxima admitida para los diálogos y las ventanas emergentes de Compose se redujo de 30 dp a 8 dp. Este cambio afecta a los diálogos personalizados y a las ventanas emergentes de IU y Material. Este cambio se realiza para mitigar un error de accesibilidad en las versiones de Android anteriores a S y garantizar que los servicios de accesibilidad de esas ventanas puedan interactuar con el contenido dentro del diálogo o la ventana emergente.
Este cambio solo te afectará si creas un diálogo personalizado o una implementación de ventana emergente con una elevación establecida en niveles superiores a 8 dp. Puedes bajar la elevación del diálogo o la ventana emergente. Si quieres rechazar este nuevo comportamiento, bifurca tu propio diálogo o ventana emergente con la configuración de elevación deseada. No se recomienda, ya que la accesibilidad podría verse afectada negativamente y es responsabilidad del desarrollador asegurarse de que la parte inferior del diálogo o la ventana emergente sea interactiva y legible con los servicios de accesibilidad.
Versión 1.3.0-alpha03
10 de agosto de 2022
Lanzamiento de androidx.compose.material:material-*:1.3.0-alpha03
. La versión 1.3.0-alpha03 contiene estas confirmaciones.
Versión 1.3.0-alpha02
27 de julio de 2022
Lanzamiento de androidx.compose.material:material-*:1.3.0-alpha02
. La versión 1.3.0-alpha02 contiene estas confirmaciones.
Contribución externa
- Se corrigió un problema de
AnimatedVisibility
conFloatingActionButton
en Scaffold (I3a0ae, b/224005027).
Versión 1.3.0-alpha01
29 de junio de 2022
Se lanzó androidx.compose.material:material-*:1.3.0-alpha01
. La versión 1.3.0-alpha01 contiene estas confirmaciones.
Cambios en la API
- Se cambió el nombre de parámetro de los valores al valor en
RangeSlider
(I3b79a).
Correcciones de errores
- Actualiza la muestra de la insignia para brindar una descripción más significativa del contenido (I10b9d).
Versión 1.2
Versión 1.2.1
10 de agosto de 2022
Lanzamiento de androidx.compose.material:material-*:1.2.1
. La versión 1.2.1 contiene estas confirmaciones.
Versión 1.2.0
27 de julio de 2022
Lanzamiento de androidx.compose.material:material-*:1.2.0
. La versión 1.2.0 contiene estas confirmaciones.
Versión 1.2.0-rc03
29 de junio de 2022
Se lanzó androidx.compose.material:material-*:1.2.0-rc03
. La versión 1.2.0-rc03 contiene estas confirmaciones.
- No hay cambios desde la versión 1.2.0-rc02.
Versión 1.2.0-rc02
22 de junio de 2022
Se lanzó androidx.compose.material:material-*:1.2.0-rc02
. La versión 1.2.0-rc02 contiene estas confirmaciones.
Versión 1.2.0-rc01
15 de junio de 2022
Se lanzó androidx.compose.material:material-*:1.2.0-rc01
. La versión 1.2.0-rc01 contiene estas confirmaciones.
Cambios en la API
- Las interfaces en las bibliotecas de Compose ahora se compilan con métodos de interfaz predeterminados de jdk8 (I5bcf1).
Correcciones de errores
- Actualiza la insignia con la pestaña del ícono principal para adjuntarla a la etiqueta en lugar del ícono (I90993).
Versión 1.2.0-beta03
1 de junio de 2022
Se lanzó androidx.compose.material:material-*:1.2.0-beta03
. La versión 1.2.0-beta03 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un error en el que
BottomSheetScaffold
se dibujaba sobre la sombra de la barra superior de la app.BottomSheetScaffold
ahora también tiene en cuenta el estado de la hoja cuando se colocan las barras de notificaciones: en el estado contraído, las barras de notificaciones se colocan sobre la hoja y el BAF. En el estado desplegado, las barras de notificaciones se fijan en la parte inferior de la hoja (Ia80b5, b/187771422).
Versión 1.2.0-beta02
18 de mayo de 2022
Lanzamiento de androidx.compose.material:material-*:1.2.0-beta02
. La versión 1.2.0-beta02 contiene estas confirmaciones.
Versión 1.2.0-beta01
11 de mayo de 2022
Lanzamiento de androidx.compose.material:material-*:1.2.0-beta01
. La versión 1.2.0-beta01 contiene estas confirmaciones.
Nuevas funciones
- Esta es la primera versión beta de 1.2.
Cambios en la API
- Se cambió el nombre del elemento
TextFieldDefaults.BorderStroke
que admite composición y que dibuja un trazo de borde deOutlinedTextField
aTextFieldDefaults.BorderBox
(I5f295).
Versión 1.2.0-alpha08
20 de abril de 2022
Se lanzó androidx.compose.material:material-*:1.2.0-alpha08
. La versión 1.2.0-alpha08 contiene estas confirmaciones.
Cambios en la API
- El consumo parcial (de posición abajo O) ya no está disponible en
PointerInputChange
. Puedes usarconsume()
para consumir el cambio por completo. También puedes usarisConsumed
para determinar si otra persona ya consumió el cambio. PointerInputChange::copy()
ahora siempre hace una copia superficial. Significa que se consumirán copias dePointerInputChange
una vez que se consuma una de las copias. Si quieres crear unaPointerInputChange
no vinculada, usa un constructor (Ie6be4, b/225669674).
Versión 1.2.0-alpha07
6 de abril de 2022
Lanzamiento de androidx.compose.material:material-*:1.2.0-alpha07
. La versión 1.2.0-alpha07 contiene estas confirmaciones.
Versión 1.2.0-alpha06
23 de marzo de 2022
Lanzamiento de androidx.compose.material:material-*:1.2.0-alpha06
. La versión 1.2.0-alpha06 contiene estas confirmaciones.
Cambios en la API
- Se realizaron actualizaciones en la API de Card, en la que se puede hacer clic, para realizar cambios en la API de Surface (I56bcb).
- Se implementaron actualizaciones a la API de Material 2 Surface, que agrega funciones sobrecargadas adicionales para las superficies seleccionables y que se pueden activar o desactivar (Ifcca5).
Versión 1.2.0-alpha05
9 de marzo de 2022
Lanzamiento de androidx.compose.material:material-*:1.2.0-alpha05
. La versión 1.2.0-alpha05 contiene estas confirmaciones.
Cambios en la API
LazyVerticalGrid
yLazyHorizontalGrid
ahora son estables (I307c0).LazyVerticalGrid/LazyHorizontalGrid
y todas las APIs relacionadas se movieron al subpaquete .grid. Actualiza tus importaciones de androidx.compose.foundation.lazy a androidx.compose.foundation.lazy.grid (I2d446, b/219942574).- Se revirtió el cambio anterior de depender solo de una View para
WindowInsetsControllerCompat
y, de nuevo, se requiere una Window, necesaria para administrar algunas marcas de ventana. Se dio de bajaViewCompat.getWindowInsetsController
y se reemplazó porWindowCompat.getInsetsController
para garantizar que se use la Window correcta (por ejemplo, si la View está en un diálogo) (I660ae, b/219572936). - Texto: El elemento
includeFontPadding
ahora está desactivado de forma predeterminada. Se controlaron los problemas de recorte como resultado deincludeFontPadding=false
y no se deberían producir recortes para secuencias de comandos altas (I31c84, b/171394808). - Se agregó una nueva API de
LazyVerticalGrid
para definir tamaños de ejes cruzados (I17723).
Versión 1.2.0-alpha04
23 de febrero de 2022
Lanzamiento de androidx.compose.material:material-*:1.2.0-alpha04
. La versión 1.2.0-alpha04 contiene estas confirmaciones.
Cambios en la API
Add support for filter chips
(I39a6e, b/192585545).- Se agregaron
TextFieldDecorationBox
yOutlinedTextFieldDecorationBox
. Si usas los elementos junto conBasicTextField
, podrás crear un campo de texto personalizado basado en los campos de texto de Material Design, pero con más opciones para la personalización. - Se proporcionó una manera de ajustar los paddings horizontales y verticales en campos de texto (I8c9f1, b/203764564, b/191543915, b/189971673, b/183136600, b/179882597, b/168003617).
Se agregaron
ComposableTarget
,ComposableTargetMarker
yComposableOpenTarget
, que permiten generar informes sobre el tiempo de compilación cuando se llama a una función que admite composición dirigida a un aplicador que no estaba diseñada para usar.En la mayoría de los casos, el complemento del compilador de Compose puede inferir las anotaciones, por lo que no es común utilizarlas directamente. Entre los casos que no se pueden inferir, se incluyen la creación y el uso de un aplicador personalizado, las funciones de componibilidad abstractas (como los métodos de interfaz), los campos o las variables globales que son lambdas componibles (las variables y los parámetros locales se infieren), o cuando se usa
ComposeNode
o una función de componibilidad relacionada.En el caso de los aplicadores personalizados, las funciones que admiten composición y que llaman a
ComposeNode
oReusableComposeNode
deben agregar una anotaciónCompoableTarget
para la función y para cualquier tipo de parámetro lambda que admita composición. Sin embargo, se recomienda crear una anotación con la anotaciónComposableTargetMarker
y, luego, usar la anotación marcada en lugar deComposableTarget
directamente. Una anotación que admite composición marcada conComposableTargetMarker
es equivalente a unaComposbleTarget
con el nombre completamente calificado de la clase de atributo como el parámetro aplicador. Para ver un ejemplo del uso deComposableTargetMarker
, consultaanroidx.compose.ui.UiComposable
(I38f11).
Versión 1.2.0-alpha03
9 de febrero de 2022
Lanzamiento de androidx.compose.material:material-*:1.2.0-alpha03
. La versión 1.2.0-alpha03 contiene estas confirmaciones.
Correcciones de errores
- Se agregó una muestra del grupo de chips (I97080, b/192585545).
Versión 1.2.0-alpha02
26 de enero de 2022
Lanzamiento de androidx.compose.material:material-*:1.2.0-alpha02
. La Versión 1.2.0-alpha02 contiene estas confirmaciones.
Cambios en la API
- Se agregó
NonRestartableComposable
a los métodos que son sobrecargas de métodos existentes sin lógica compleja. De esta manera, se reducen las comprobaciones de memorización generadas por el compilador (es igual a) para todos los parámetros que se repiten en la función interna a la que se llama. (I90490) - Se agregó compatibilidad con el chip de acción. (I07100, b/192585545)
Versión 1.2.0-alpha01
12 de enero de 2022
Lanzamiento de androidx.compose.material:material-*:1.2.0-alpha01
. La versión 1.2.0-alpha01 contiene estas confirmaciones.
Actualizaciones de dependencias
- Ahora depende de Kotlin
1.6.10
.
Contribución externa
ModalBottomSheetState
ahora tiene una marcaisSkipHalfExpanded
. Se puede configurar mediante el constructor o actualizar más adelante estableciendo la propiedadisSkipHalfExpanded
deModalBottomSheetState
entrue
. Actualizar el valor deisSkipHalfExpanded
provoca una recomposición de la hoja. (I18b86, b/186669820)
Versión 1.1
Versión 1.1.1
23 de febrero de 2022
Lanzamiento de androidx.compose.material:material-*:1.1.1
. La versión 1.1.1 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió
NullPointerException
enandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462). - Se corrigió la falla que causaba el contenido del portapapeles mientras se leía desde el portapapeles en Android (I06020, b/197769306).
- Se corrigió la lectura de derecha a izquierda en
LazyVerticalGrid
(aosp/1931080, b/207510535).
Versión 1.1.0
9 de febrero de 2022
Lanzamiento de androidx.compose.material:material-*:1.1.0
. La versión 1.1.0 contiene estas confirmaciones.
Cambios importantes desde 1.0.0
- Se agregó compatibilidad estable con el efecto de desplazamiento de Android 12.
- Se agregaron mejoras en el tamaño de los objetivos táctiles.
- Ten en cuenta que, con respecto a Compose 1.0, los componentes de Material expandirán su espacio de diseño para cumplir con los lineamientos de accesibilidad de Material relativos al tamaño del objetivo táctil. Por ejemplo, el objetivo táctil del botón se expandirá hasta un tamaño mínimo de 48 x 48 dp, incluso si configuras el tamaño del botón para que sea más pequeño. Esto alinea Compose Material con el mismo comportamiento de los componentes de Material Design y proporciona un comportamiento coherente si combinas View y Compose. Este cambio también garantiza que, cuando crees tu IU mediante componentes de Compose Material, se cumplan los requisitos mínimos de la accesibilidad de objetivos táctiles.
- Se agregó compatibilidad estable con Navigation Rail.
- Varias API que antes eran experimentales se pasaron a niveles estables.
- Se agregó compatibilidad con versiones más recientes de Kotlin.
Versión 1.1.0-rc03
26 de enero de 2022
Lanzamiento de androidx.compose.material:material-*:1.1.0-rc03
. La versión 1.1.0-rc03 contiene estas confirmaciones.
Cambios de comportamiento
Ten en cuenta que, con respecto a Compose 1.0, los componentes de Material expandirán su espacio de diseño para cumplir con los lineamientos de accesibilidad de Material respecto del tamaño del objetivo táctil. Por ejemplo, el objetivo táctil del botón se expandirá hasta un tamaño mínimo de 48 x 48 dp, incluso si configuras el tamaño del botón para que sea más pequeño. Esto alinea Compose Material con el mismo comportamiento de los componentes de Material Design y proporciona un comportamiento coherente si combinas View y Compose. Este cambio también garantiza que, cuando crees tu IU mediante componentes de Compose Material, se cumplan los requisitos mínimos de la accesibilidad de objetivos táctiles.
Correcciones de errores
- Se agregó mejor información de depuración para el inspector de diseño cuando se inspeccionan los modificadores del objetivo táctil mínimo. (aosp/1955036)
Versión 1.1.0-rc01
15 de diciembre de 2021
Lanzamiento de androidx.compose.material:material-*:1.1.0-rc01
. La versión 1.1.0-rc01 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió el radio de esquina que se aplica a las
Checkbox
(I38b03, b/175198975, b/202309440).
Versión 1.1.0-beta04
1 de diciembre de 2021
Lanzamiento de androidx.compose.material:material-*:1.1.0-beta04
. La versión 1.1.0-beta04 contiene estas confirmaciones.
Nuevas funciones
- Se actualizó para que sea compatible con Kotlin
1.6.0
.
Versión 1.1.0-beta03
17 de noviembre de 2021
Lanzamiento de androidx.compose.material:material-*:1.1.0-beta03
. La versión 1.1.0-beta03 contiene estas confirmaciones.
Versión 1.1.0-beta02
3 de noviembre de 2021
Lanzamiento de androidx.compose.material:material-*:1.1.0-beta02
. La versión 1.1.0-beta02 contiene estas confirmaciones.
Correcciones de errores
- Las ondas y otras indicaciones ahora se retrasarán solo si están dentro de un contenedor Modifier.scrollable(), en lugar de retrasarse siempre para un evento descendiente. (Ibefe0, b/203141462)
Versión 1.1.0-beta01
27 de octubre de 2021
Lanzamiento de androidx.compose.material:material-*:1.1.0-beta01
. La versión 1.1.0-beta01 contiene estas confirmaciones.
Nuevas funciones
- Las ondas ahora admiten estados de desplazamiento y enfoque, por lo que al colocar el cursor sobre un componente, como un botón, ahora se mostrará la superposición de estado correcta.
Versión 1.1.0-alpha06
13 de octubre de 2021
Lanzamiento de androidx.compose.material:material-*:1.1.0-alpha06
. La versión 1.1.0-alpha06 contiene estas confirmaciones.
Cambios en la API
- Se agregó una sobrecarga para Layout sin elemento secundario con eficiencia mejorada. (IB0d9a)
- Se implementó
ExposedDropdownMenu
basado enExposedDropdownMenuBox
conTextField
yDropdownMenu
dentro. (If60b2) - Se agregó
dismissOnOutsideClick
aPopupProperties
y se reemplazódismissOnClickOutside
, que dejó de estar disponible. La nueva propiedad recibe la posición del clic y los límites de anclaje, lo que brinda un control más preciso sobre si se debe invocar onDismissRequest o no. Por ejemplo, esto puede ser útil para evitar el descarte de anclajes al tocarlos.- Se agregó
updateAndroidWindowManagerFlags
aPopupProperties
, y ofrece un control de bajo nivel sobre las marcas que pasa la ventana emergente a WindowManager de Android. El parámetro de la lambda será las marcas calculadas a partir de los valores de PopupProperties que generen marcas de WindowManager (p. ej., enfocables). El resultado de la expresión lambda serán las marcas finales que se pasarán a Android WindowManager. De manera predeterminada, updateAndroidWindowManagerFlags dejará las marcas calculadas a partir de los parámetros sin modificar. Esta API se debe utilizar con precaución, solo en los casos en que la ventana emergente tenga requisitos de comportamiento muy específicos. (I6e9f9)
- Se agregó
Versión 1.1.0-alpha05
29 de septiembre de 2021
Lanzamiento de androidx.compose.material:material-*:1.1.0-alpha05
. La versión 1.1.0-alpha05 contiene estas confirmaciones.
Cambios en la API
- Se agregó el tamaño mínimo de los objetivos táctiles para los componentes de Material que no tienen un objetivo táctil accesible. Como se agrega espacio adicional alrededor de los componentes para garantizar que tengan un objetivo táctil lo suficientemente grande, esto puede cambiar las IU existentes que suponen que el tamaño de esos componentes es su tamaño visual, y no tiene en cuenta el tamaño del objetivo táctil. Puedes usar el elemento local de composición
LocalMinimumTouchTargetEnforcement
experimental para inhabilitar este comportamiento en una jerarquía, pero esto es solo una solución temporal mientras se actualizan las IU existentes a fin considerar el nuevo tamaño mínimo. (I9b966, b/149691127, b/171509422) - Se agregó la interfaz experimental TextFieldColorsWithIcons, que extendía TextFieldColors para proporcionar InteractionSource a leadingColor y trailingColor. Esto permite modificar el aspecto de TextField según el estado del enfoque. (I66923, b/198402662)
Versión 1.1.0-alpha04
15 de septiembre de 2021
Lanzamiento de androidx.compose.material:material-*:1.1.0-alpha04
. La versión 1.1.0-alpha04 contiene estas confirmaciones.
Cambios en la API
- Se dieron de baja
performGesture
yGestureScope
, que se reemplazaron porperformTouchInput
yTouchInjectionScope
. (Ia5f3f, b/190493367) - Se agregó
touchBoundsInRoot
aSemanticsNode
, que incluye el tamaño mínimo del objetivo táctil para que los desarrolladores puedan garantizar que estos cumplan con los requisitos de accesibilidad mínimos. (I2e14b, b/197751214)
Correcciones de errores
- Permite que el clip extienda los límites del objetivo táctil más allá de la región del clip para los fines mínimos del objetivo táctil. (I43e10, b/171509422)
- Se actualizó el elemento
Divider
que admite composición para respetarDp.Hairline
del parámetro de grosor a fin de admitir el dibujo de divisores de píxeles únicos, independientemente de la densidad de la pantalla. (I16ffb, b/196840810)
Versión 1.1.0-alpha03
1 de septiembre de 2021
Lanzamiento de androidx.compose.material:material-*:1.1.0-alpha03
. La versión 1.1.0-alpha03 contiene estas confirmaciones.
Nuevas funciones
- Se actualizó Compose
1.1.0-alpha03
para que dependa de Kotlin1.5.30
. (I74545)
Cambios en la API
- Se agregó un método de prueba para obtener los límites recortados. (I6b28e)
- Se agregó un tamaño mínimo de objetivo táctil a ViewConfiguration para usarlo en la semántica y la entrada de puntero a fin de garantizar la accesibilidad. (Ie861c)
Versión 1.1.0-alpha02
18 de agosto de 2021
Lanzamiento de androidx.compose.material:material-*:1.1.0-alpha02
. La versión 1.1.0-alpha02 contiene estas confirmaciones.
Contribución externa
- Se corrigió el comportamiento de SwipeableState en el caso en que el desplazamiento se encuentre dentro de un error de redondeo de un anclaje. (I03d39, b/191993377)
Versión 1.1.0-alpha01
4 de agosto de 2021
Lanzamiento de androidx.compose.material:material-*:1.1.0-alpha01
. La versión 1.1.0-alpha01 contiene estas confirmaciones.
Cambios en la API
- Se actualizó el método
DrawScope#drawImage
que consume los rects de origen y destino para consumir un parámetro opcional FilterFilter. Esto es útil para el arte de píxeles que se pixela cuando se escala verticalmente para el arte basado en píxeles. Se actualizó el objeto BitmapPainter + Image que admite composición para que también consuma un parámetro opcional FilterQuality. (Ie4fb0, b/180311607) - Se cambió el nombre de la insignia de BadgeBox por BadgedBox, y se cambiaron los parámetros para Badge que admite componibilidad. Se agregó el componente de insignia que es el contenido típico de la insignia para un BadgedBox. (I639c6)
- Se agregó el componente NavigationRail. Consulta los documentos y las muestras para obtener información sobre el uso. (I8de77)
Correcciones de errores
- Se agregó un ejemplo de NavigationRail y una demostración de la app de catálogo alineados en la demostración. (I3cffc)
- Los diálogos siguen el comportamiento del tamaño de la plataforma. Establece usePlatformDefaultWidth como falso para anular este comportamiento. (Iffaed, b/192682388)
- Se agregó una demostración de navigation-rail a la app de catálogo. (I04960).
- Se agregó la demostración de badge a la app de catálogo. (If285d)
Versión 1.0
Versión 1.0.5
3 de noviembre de 2021
Lanzamiento de androidx.compose.material:material-*:1.0.5
. La versión 1.0.5 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió una falla en el seguimiento de las instancias de derivedStateOf (aosp/1792247).
Versión 1.0.4
13 de octubre de 2021
Lanzamiento de androidx.compose.material:material-*:1.0.4
. La versión 1.0.4 contiene estas confirmaciones.
Actualizaciones de dependencias
- Se actualizó para depender de Kotlin
1.5.31
Versión 1.0.3
29 de septiembre de 2021
Lanzamiento de androidx.compose.material:material-*:1.0.3
. La versión 1.0.3 contiene estas confirmaciones.
Actualizaciones de dependencias
- Se actualizó para depender de Kotlin
1.5.30
Versión 1.0.2
1 de septiembre de 2021
Lanzamiento de androidx.compose.material:material-*:1.0.2
. La versión 1.0.2 contiene estas confirmaciones.
Se actualizó para que sea compatible con la versión 1.0.2
de Compose. Compose 1.0.2
continúa siendo compatible con Kotlin 1.5.21
.
Versión 1.0.1
4 de agosto de 2021
Lanzamiento de androidx.compose.material:material-*:1.0.1
. La versión 1.0.1 contiene estas confirmaciones.
Actualizaciones de dependencias
- Se actualizó para depender de Kotlin
1.5.21
.
Versión 1.0.0
28 de julio de 2021
Lanzamiento de androidx.compose.material:material-*:1.0.0
. La versión 1.0.0 contiene estas confirmaciones.
Funciones principales de la versión 1.0.0
Esta es la primera versión estable de Compose. Consulta el blog oficial de Lanzamientos de Compose para obtener más información.
Errores conocidos
Si usas Android Studio Bumblebee Canary 4 o AGP
7.1.0-alpha04
/7.1.0-alpha05
, es posible que se produzca la siguiente falla:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Para sortear el problema, aumenta temporalmente tu minSdkVersion a más de 24 en el archivo
build.gradle
. Este error se solucionará en la próxima versión de Android Studio Bumblebee y en el AGP7.1
. (b/194289155)
Versión 1.0.0-rc02
14 de julio de 2021
Lanzamiento de androidx.compose.material:material-*:1.0.0-rc02
. La versión 1.0.0-rc02 contiene estas confirmaciones.
Correcciones de errores
- Los diálogos siguen el comportamiento del tamaño de la plataforma. Establece
usePlatformDefaultWidth
como falso para anular este comportamiento. (Iffaed, b/192682388)
Versión 1.0.0-rc01
1 de julio de 2021
Lanzamiento de androidx.compose.material:material-*:1.0.0-rc01
. La versión 1.0.0-rc01 contiene estas confirmaciones.
Cambios en la API
- Se agregó el componente
BadgeBox
. Consulta los documentos y las muestras para obtener información de uso. (I5e284) - Se cambió el nombre de
useDefaultMaxWidth
enPopupProperties
porusePlatformDefaultWidth
. (I05710) - Ahora se pueden usar los diálogos en todo el ancho de la pantalla. (I83929, b/190810877)
- Se agregó la implementación del control deslizante de rango experimental. (I2f4b3)
Correcciones de errores
- A fin de alinearse con las especificaciones de OutlinedTextField de Material Design con entradas no válidas, se dejó de usar el color de error en la etiqueta cuando esta se usa como un marcador de posición. Esto sucede cuando no hay texto de entrada en el campo de texto y este no está enfocado. A partir de esa modificación, cambió el significado del parámetro
error:Boolean
de la funciónTextFieldColors.labelColor()
: ahora también se mostrará un valorfalse
aunque la entrada no sea válida si se usa la etiqueta como marcador de posición. (I45f78)
Versión 1.0.0-beta09
16 de junio de 2021
Lanzamiento de androidx.compose.material:material-*:1.0.0-beta09
. La versión 1.0.0-beta09 contiene estas confirmaciones.
Cambios en la API
- Se agregó el parámetro Shape a OutlinedTextField para poder personalizar la forma del borde. (I8f39e, b/181322957)
- Se cambió TextOverflow a una clase intercalada. (I433af)
Correcciones de errores
- La malla en BottomDrawer, BackdropScaffold y ModalBottomSheetLayout desaparecerá cuando se pase Color.Unspecified. (I2d899, b/182063309)
Reglas de perfiles agregadas
En esta versión, se agregaron reglas de perfiles a los siguientes módulos de Compose (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
¿Qué son las reglas de perfiles?
Las reglas de perfiles de una biblioteca se especifican en un archivo de texto
baseline-prof.txt
, ubicado ensrc/main
o el directorio equivalente. El archivo especifica una regla por línea, donde una regla en este caso es un patrón para la coincidencia con métodos o clases de la biblioteca. La sintaxis de estas reglas es un superconjunto del formato de perfil ART legible que se usa cuando se implementaadb shell profman --dump-classes-and-methods ...
. Estas reglas adoptan una de dos formas para segmentar métodos o clases.Una regla de métodos tendrá el siguiente patrón:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Una regla de clases tendrá el siguiente patrón:
<CLASS_DESCRIPTOR>
Aquí,
<FLAGS>
es uno o más caracteresH
,S
yP
, los cuales indican si este método debe marcarse como "Hot" (caliente), "Startup" (inicio) o "Post Startup" (posterior al inicio).El
<CLASS_DESCRIPTOR>
es el descriptor de la clase a la que pertenece el método segmentado. Por ejemplo, la claseandroidx.compose.runtime.SlotTable
tendría un descriptor deLandroidx/compose/runtime/SlotTable;
.El
<METHOD_SIGNATURE>
es la firma del método y, además, incluye el nombre, los tipos de parámetros y los tipos de datos que muestra. Por ejemplo, el métodofun isPlaced(): Boolean
enLayoutNode
tiene la firmaisPlaced()Z
.Estos patrones pueden tener comodines (
**
,*
y?
) para tener una sola regla que abarque varios métodos o clases.
¿Para qué sirven las reglas?
Un método con la marca
H
indica que es "hot" y debe compilarse con anticipación.Un método con la marca
S
indica que se llama durante el inicio y debe compilarse con anticipación para evitar el costo de interpretarlo y compilarlo en el momento del inicio.Un método que tiene la marca
P
indica que es un método que se llama después del inicio.Una clase presente en este archivo indica que se usa durante el inicio y debe asignarse previamente en el montón para evitar el costo de cargarla.
¿Cómo funciona?
- Las bibliotecas pueden definir estas reglas que se empaquetarán en artefactos de AAR. Luego, cuando se compila un APK que incluye esos artefactos, esas reglas se combinan y se usan para compilar un perfil de ART binario compacto específico para el APK. De esta manera, ART puede tomar este perfil cuando se instala el APK en dispositivos para compilar con anticipación un subconjunto específico de la aplicación a fin de mejorar su rendimiento, especialmente en la primera ejecución. Ten en cuenta que esta acción no tendrá efecto en las aplicaciones depurables.
Versión 1.0.0-beta08
2 de junio de 2021
Lanzamiento de androidx.compose.material:material-*:1.0.0-beta08
. La versión 1.0.0-beta08 contiene estas confirmaciones.
Nuevas funciones
Cambios de comportamiento en API
- CAMBIO DE COMPORTAMIENTO: Una tarjeta ahora consume clics, por lo que el proceso de agregarlos mediante
Card(Modifier.clickable)
es una no-op. Usa la nueva sobrecarga experimental de una tarjeta que acepte onClick. (Ia8744, b/183775620)- Se agregó una nueva sobrecarga de tarjetas que controla los clics, así como otras funcionalidades en las que se puede hacer clic: indication, interactionSource, enabled/disabled. No se puede usar una tarjeta normal en la que no se puede hacer clic con
Modifier.clickable
porque, en esos casos, la tarjeta no recortará el indication de ripple.
- Se agregó una nueva sobrecarga de tarjetas que controla los clics, así como otras funcionalidades en las que se puede hacer clic: indication, interactionSource, enabled/disabled. No se puede usar una tarjeta normal en la que no se puede hacer clic con
- CAMBIO DE COMPORTAMIENTO: Surface ahora consume clics, por lo que el proceso de agregarlos mediante
Surface(Modifier.clickable)
es una no-op. Usa la nueva sobrecarga experimental de Surface que acepte onClick. (I73e6c, b/183775620)- Se agregó una nueva sobrecarga de Surface que controla los clics, así como otras funcionalidades en las que se puede hacer clic: indication, interactionSource, enabled/disabled. No se puede usar un elemento Surface normal en el que no se puede hacer clic con
Modifier.clickable
porque, en esos casos, Surface no recortará el indication de ripple.
- Se agregó una nueva sobrecarga de Surface que controla los clics, así como otras funcionalidades en las que se puede hacer clic: indication, interactionSource, enabled/disabled. No se puede usar un elemento Surface normal en el que no se puede hacer clic con
Cambios en la API
FabPosition
se convirtió en una clase intercalada de enumeración para admitir una posible expansión en el futuro. (I030fb)- Se refactorizaron los usos de enumeración en clases intercaladas para evitar problemas con explicaciones exhaustivas cuando se agregan nuevos valores de enumeración. (I2b5eb)
- Se agregó un tiempo de espera a los elementos en los que se puede hacer clic o se pueden activar a fin de mostrar un ripple durante el desplazamiento o arrastre. (Ia2704, b/168524931)
- Las propiedades semánticas de ContentDescription y Text ya no son valores individuales, sino listas. Esto permite fusionarlas como aparecen en lugar de concatenaciones. También se proporcionaron mejores API de prueba para usar estos cambios. (Ica6bf, b/184825850)
Modifier.focusModifier()
dejó de estar disponible y se reemplazó conModifier.focusTarget()
. (I6c860)- Se reemplazó la enumeración
FocusState
con una interfazFocusState
. (Iccc1a, b/187055290) - Se quitó
LocalRippleNativeRendering
, porque ahora la implementación de ripple respaldada por View es estable. (I7fab3, b/188569367)
Correcciones de errores
- Se modificó
Modifier.onGloballyPositioned()
para informar las coordenadas de este modificador en la cadena de modificador, en lugar de las coordenadas de diseño después de aplicar todos los modificadores. Es decir, ahora el orden de los modificadores afecta las coordenadas que se informarán. (Ieb67d, b/177926591) - Se agregó un archivo readme para el catálogo de Compose Material existente. (If9191)
Versión 1.0.0-beta07
18 de mayo de 2021
Lanzamiento de androidx.compose.material:material-*:1.0.0-beta07
. La versión 1.0.0-beta07 contiene estas confirmaciones.
Cambios en la API
- Ya no es necesario usar métodos de extensión para la compatibilidad con rutas en Navigation Compose. (I22beb, b/172823546)
Versión 1.0.0-beta06
5 de mayo de 2021
Lanzamiento de androidx.compose.material:material-*:1.0.0-beta06
. La versión 1.0.0-beta06 contiene estas confirmaciones.
Cambios en la API
- Se migró Ripple para usar
RippleDrawable
internamente en dispositivos Android. Esto significa que las animaciones de ripple se producirán en el RenderThread y serán fluidas incluso cuando el subproceso de IU se encuentre con carga, como cuando se navega entre pantallas. Esto no cambia la superficie de la API de ripple, pero es posible que se produzcan cambios de comportamiento como resultado de este proceso. Para ayudar en la migración, se agregóLocalRippleNativeRendering
, que proporciona un valor defalse
a este CompositionLocal para recurrir a la implementación de ripple anterior dentro de CompositionLocalProvider. Esta API es temporal y se quitará en el futuro, por lo que si tienes problemas cuando usas la API, infórmalo. (I902f8, b/168777351, b/183019123) - Se agregaron las API de accesibilidad CollectionInfo y CollectionItemInfo, que permiten marcar la colección y sus elementos para los servicios de accesibilidad. (Id54ef, b/180479017)
- Se agregó la API de accesibilidad
error
que permite marcar un nodo que contiene entradas no válidas. (I12997, b/180584804, b/182142737)
Correcciones de errores
- Se actualizó la implementación del catálogo de inserción de Compose Material en https://github.com/google/accompanist/pull/365. (I25dc3)
- Los encabezados de fila y columna secundarios Row con peso (relleno = falso) ya no hacen que el elemento superior rellene todo el espacio del eje principal disponible. (Ied94d, b/186012444, b/184355105)
Versión 1.0.0-beta05
21 de abril de 2021
Lanzamiento de androidx.compose.material:material-*:1.0.0-beta05
. La versión 1.0.0-beta05 contiene estas confirmaciones.
Correcciones de errores
- Se agregaron imágenes de mosaicos de componentes, selector de temas, y URL del menú más específicas al catálogo existente de Compose Material. (I9b58e)
Versión 1.0.0-beta04
7 de abril de 2021
Lanzamiento de androidx.compose.material:material-*:1.0.0-beta04
. La versión 1.0.0-beta04 contiene estas confirmaciones.
Cambios en la API
- CAMBIO EN LA API: El estado
DrawerState
ya no extiende el elemento experimental SwipeableState.- CAMBIO EN LA API: Ahora,
BottomDrawerState
se marca como experimental para que coincida con el componente experimental BottomDrawer (I81114, b/181656094).
- CAMBIO EN LA API: Ahora,
- Se cambió el nombre de
hideSoftwareKeyboard
yshowSoftwareKeyboard
deSoftwareKeyboardController
ahide()
yshow()
, respectivamente.- Proporciona la interfaz completa de CompositionLocal para LocalSoftwareKeyboardController, que permite que se configure (especialmente útil en pruebas). (I579a6).
- Se agregó la API de accesibilidad LiveRegion. Si el nodo está marcado como una región live, los servicios de accesibilidad notificarán automáticamente al usuario sobre los cambios (Idcf6f, b/172590946)
Correcciones de errores
- Se agregó la implementación del catálogo de Compose Material al módulo existente. En los próximos cambios, se agregarán los componentes imágenes de mosaicos y selector de temas. (Ie7a94)
Versión 1.0.0-beta03
24 de marzo de 2021
Lanzamiento de androidx.compose.material:material-*:1.0.0-beta03
. La versión 1.0.0-beta03 contiene estas confirmaciones.
Cambios en la API
DefaultMonotonicFrameClock
ya no está disponible. Cuando se llama awithFrameNanos
oRecomposer.runRecomposeAndApplyChanges
sinMonotonicFrameClock
, ahora arrojará una excepciónIllegalStateException
. (I4eb0d)- Se agregó una nueva API de
LeadingIconTab
para admitir la visualización de un ícono y texto intercalado en una pestaña. (I23267)
Contribución externa
- [por Jossi Wolf]
BottomDrawer
ahora une el contenido del espacio del panel lateral.BottomDrawer
no muestra unIllegalStateException
cuando el elemento principal tiene una altura infinita. El panel lateral inferior ahora se abrirá en un estado expandido si tiene un tamaño inferior al 50%. Se actualizaron los documentos deBottomDrawerState
yModalBottomSheetLayoutState
. Ahora,BottomDrawerState#isOpen
se muestra como verdadero si está en estado abierto o expandido. (I87241)
Versión 1.0.0-beta02
10 de marzo de 2021
Lanzamiento de androidx.compose.material:material-*:1.0.0-beta02
. La versión 1.0.0-beta02 contiene estas confirmaciones.
Cambios en la API
- Se agregó una nueva API local de composición de
LocalSoftwareKeyboardController
para reemplazar la interfaz deSoftwareKeyboardController
anterior en TextField. (I5951e, b/168778053)
Correcciones de errores
- Se aplicaron restricciones sobre el uso público de las API experimentales. (I6aa29, b/174531520)
- Se cambió la alineación horizontal predeterminada para TopAppBar y BottomAppBar para comenzar de manera coherente con la fila. (lb2dc7)
- Se agregó un nuevo módulo y marcador de posición de IU para un catálogo de Compose Material, que actualmente está anidado en demostraciones de pruebas de integración existentes. (Idfcb3)
androidx.compose.ui:ui
ya no depende de AppCompat ni Fragment. Si usas ComposeView en tu aplicación y usas Fragment o AppCompat, asegúrate de usar AppCompat 1.3+ o Fragment 1.3+. Se necesitan estas versiones para establecer correctamente el ciclo de vida y los estados guardados del propietario que se requieren para ComposeView. (I1d6fa, b/161814404)
Versión 1.0.0-beta01
24 de febrero de 2021
Lanzamiento de androidx.compose.material:material-*:1.0.0-beta01
. La versión 1.0.0-beta01 contiene estas confirmaciones.
Esta es la primera versión de Compose 1.0.0 Beta.
Cambios en la API
- Se cambiaron los nombres de los modificadores de tamaño. Se cambió el nombre de modifier.width a requiredWidth, de modifier.height a requiredHeight y de modifier.size a requiredSize. Se cambió el nombre de modifier.preferredWidth a width, de preferredHeight a height y de preferredSize a size. (I5b414)
- Ahora, imageResource y vectorResource son funciones de extensión en los elementos ImageBitmap y ImageVector complementarios, respectivamente. Se borraron las funciones load{Image,Vector,Font}Resource. (I89130)
- Ya no son experimentales los modificadores para cambiar el tamaño de los elementos intrínsecos. (I15744)
- Se quitaron las aserciones de dp. (I798d2)
- Se quitó la devolución de llamada de SoftwareKeyboardController de todos los campos de texto que, en breve, se reemplazarán por una nueva API. (Iae869, b/168778053)
- Ahora, son nulas las expresiones lambda de acción Switch, Checkbox y RadioButton. Se actualizaron las muestras de filas para hacer clic en las casillas de verificación a fin de usar esta función. (If601b, b/171819073)
- Se reemplazó
InteractionState
por[Mutable]InteractionSource
.- Las interfaces son responsables de emitir o recopilar eventos de interacción.
- En lugar de pasar el elemento
interactionState = remember { InteractionState() }
a componentes comoButton
yModifier.clickable()
, usa el objetointeractionSource = remember { MutableInteractionSource() }
. - En lugar del elemento
Interaction.Pressed in interactionState
, debes usar las funciones de extensión en el objeto InteractionSource, como InteractionSource.collectIsPressedAsState(). - Para casos complejos de uso, puedes usar el elemento InteractionSource.interactions para observar el flujo de Interactions. Para obtener más información, consulta la documentación y ejemplos de InteractionSource.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Agrega la interfaz AccessibilityMananger y LocalAccessibilityMananger en CompositionLocals. (I53520)
- Se quitaron los métodos obsoletos de LayoutCoordinates; usa la función en lugar de la propiedad para positionInParent y boundsInParent. (I580ed, b/169874631, b/175142755)
- Ahora, el control deslizante admite el estado habilitado/inhabilitado. (I6d56b, b/179793072)
- Se creó un nuevo elemento TextInputSession para sesiones de entrada a partir de componentes de texto de bajo nivel, como CoreTextField. (I8817f, b/177662148)
- Se quitó AnimationEndReason.Interrupted. Si se interrumpe la animación, se mostrará una CancellationException. (I2cbbc, b/179695417)
- Se quitó
@ExperimentalRippleApi
y se cambióRippleAlpha
para que sea una clase con propiedades en lugar de una interfaz. (I6df7c) - Se agregó la interfaz TextFieldColors para representar diferentes colores usados en TextField y OutlinedTextField, en diferentes estados. Para la implementación predeterminada, consulta TextFieldDefaults.textFieldColors y TextFieldDefaults.outlinedTextFieldColors.
- Se cambió el nombre del parámetro isErrorValue a isError dentro de TextField y OutlinedTextField. (I831f9, b/171305338, b/168004067)
- Agrega un modificador selectionGroup que permite marcar la colección de Tabs o RadioButtons con fines de accesibilidad. (Ie5c29)
Agrega LazyListState.animateScrollToItem.
Este método se desplaza, de manera fluida, a un elemento específico de la lista. (I4bfd7)
Se cambió el nombre de
ScrollableState.smoothScrollBy()
aanimateScrollBy()
, deLazyListState.snapToItemIndex()
ascrollToItem()
y deScrollState.smoothScrollTo()
aanimateScrollTo()
. (I35ded)Ahora, se puede validar el tiempo de compilación de cualquier elemento que admite composición con el objeto
@ReadOnlyComposable
para garantizar que solo realicen llamadas a otro objeto@ReadOnlyComposables
. (I58961)Se quitó la API de TargetAnimation. (If47d1, b/177457083)
Ahora, la posición de desplazamiento en Modifier.verticalScroll()/horizontalScroll() se representa con Ints. (I81298).
Los paquetes de los métodos smoothScrollBy y scrollBy cambiaron a
androidx.compose.foundation.gestures.*
. (I3f7c1, b/175294473)Ahora, se cambió el nombre de FlingConfig a FlingBehavior para personalizar la animación de suspensión en lugar del elemento predefinido Decays. (I02b86, b/175294473)
Se cambiaron los nombres de los modificadores de tamaño. Se cambió el nombre de modifier.width a requiredWidth, de modifier.height a requiredHeight y de modifier.size a requiredSize. Se cambió el nombre de modifier.preferredWidth a width, de preferredHeight a height y de preferredSize a size. (I5b414)
Se cambió el nombre de defaultMinSizeConstraints a defaultMinSize. (I4eaae)
Se migró Orientation al paquete de base. Se migró VelocirtTracker de ui.gesture a ui.input.pointer. (Iff4a8, b/175294473)
Ahora, drawerState.open() y drawerState.close() son funciones de suspensión. Usa rememberCoroutineScope() a fin de obtener el alcance de la composición para llamarlas. (I16f60, b/175294473)
Se cambió el nombre de Providers a CompositionLocalProvider.
- El constructor Composition ya no acepta ningún parámetro clave y es obsoleto.
- Se convirtió currentCompositeKeyHash en una propiedad de nivel superior que admite composición en lugar de una función de nivel superior que admite composición.
- Se migraron CompositionData y CompositionGroup al espacio de nombres androidx.compose.runtime.tooling
- Se convirtió ComposableLambda en una interfaz, en lugar de una clase concreta, y ya no cuenta con parámetros de tipo.
- Se convirtió ComposableLambdaN en una interfaz, en lugar de una clase concreta, y ya no cuenta con parámetros de tipo.
- Se migró la función snapshotFlow al espacio de nombres androidx.compose.runtime
- Ya no es experimental el método de combinación de SnapshotMutationPolicy.
- Se quitó la función clearRoots de nivel superior de
@TestOnly
. Ya no es necesaria. - Se quitaron las funciones keySourceInfoOf y resetSourceInfo. Ya no son necesarias.
- Se quitó el elemento Composer.collectKeySourceInformation. Ya no es necesario.
- Se quitaron los métodos joinedKeyRight, isJoinedKey y joinedKeyLeft. Ya no son necesarios.
- Se migraron y reorganizaron varias API de nivel superior en archivos diferentes. Debido a la semántica de la clase de archivos de Kotlin, se romperá la compatibilidad binaria, pero no la compatibilidad de origen, por lo que no debería ser un problema para la mayoría de los usuarios.
- (I99b7d, b/177245490)
Se modificó Modifier.scrollable. Ahora, usa la interfaz Scrollable en lugar de la clase ScrollableController. (I4f5a5, b/174485541, b/175294473)
Ahora, Modifier.draggable acepta DraggableState en lugar de una expresión lambda simple. Para obtener el mismo comportamiento que antes, puedes crear un estado a través de
rememberDraggableState { delta -> }
. (Ica70f, b/175294473)Ahora, ZoomableController.smoothScaleBy y ZoomableController.stopAnimation son funciones de suspensión. (I7f970, b/177457083)
Se borraron algunas API que ya eran obsoletas. (Ice5da, b/178633932)
Se realizaron los siguientes cambios en la API de Material:
- Se agregó el parámetro contentPadding a Top/BottomAppBar para permitir personalizar el relleno predeterminado.
- Se reorganizaron los parámetros en BackdropScaffold a fin de cumplir con los lineamientos de las API para los parámetros obligatorios antes de los parámetros opcionales.
- Se migró el parámetro
icon
en BottomNavigationItem para que sea posterior aselected
yonClick
. - Se cambió el nombre del parámetro
alwaysShowLabels
en BottomNavigationItem aalwaysShowLabel
. - Se cambiaron los nombres de los parámetros
bodyContent
en algunos componentes a solocontent
. - Se reorganizaron los parámetros en
ButtonDefaults.buttonColors()
. Ten en cuenta que, debido a que no cambió el tipo de parámetros, no se producirá un error en tu código. Asegúrate de estar usando parámetros con nombre o actualiza el orden de manera manual; de lo contrario, tu código no funcionará como antes. - Se agregó el parámetro
secondaryVariant
adarkColors()
. Por lo general, este color es el mismo que el desecondary
en el tema oscuro, pero agrega coherencia y mayor personalización. - Se quitó ElevationDefaults y animateElevation() de la superficie de la API pública, ya que no se usaban con frecuencia ni eran útiles.
- Se cambió el nombre de
onValueChangeEnd
enSlider
aonValueChangeFinished
y se hizo nulo. - Se cambió el nombre del parámetro
text
enSnackbar
acontent
para brindar coherencia. - Se agregó el parámetro
contentPadding
aDropdownMenuItem
para permitir la personalización del relleno predeterminado y se convirtiócontent
en una extensión enRowScope
. - Se cambió el nombre de
ModalDrawerLayout
aModalDrawer
. - Se cambió el nombre de
BottomDrawerLayout
aBottomDrawer
. - (I1cc66)
Ahora, BasicTextField acepta Brush en lugar de Color para mejorar la personalización. (I83a36)
Ahora, imageResource y vectorResource son funciones de extensión en los elementos ImageBitmap y ImageVector complementarios, respectivamente. Se borraron las funciones load{Image,Vector,Font}Resource. (I89130)
Se cambió Indication#createIndication() a Indication#rememberUpdatedIndication(InteractionState) y se quitó el parámetro InteractionState de IndicationInstance#drawIndication(). IndicationInstance solo debe ser responsable de dibujar efectos visuales y no de lanzar animaciones ni estados de escritura en respuesta a los cambios de InteractionState. En se lugar, estas animaciones y escrituras de estado deberían ocurrir dentro de
rememberUpdatedIndication()
. También se cambió el parámetroindication
enModifier.indication
para que sea un parámetro obligatorio. (Ic1764, b/152525426)
Correcciones de errores
- Se agregó una nueva API local de composición de LocalSoftwareKeyboardController para reemplazar la interfaz de SoftwareKeyboardController anterior en TextField. (I658b6, b/168778053)
Versión 1.0.0-alpha12
10 de febrero de 2021
Lanzamiento de androidx.compose.material:material-*:1.0.0-alpha12
. La versión 1.0.0-alpha12 contiene estas confirmaciones.
Cambios en la API
- Modifier.pointerInput ahora requiere claves de memoria para indicar cuándo se debe reiniciar la corrutina de detección de la entrada del puntero para las dependencias nuevas. (I849cd)
- Se marcaron BottomDrawerLayout y ListItem como @ExperimentalMaterialApi. (Id766e)
- Se agregó PaddingValues.Absolute y se puede usar en las API que acepten PaddingValues. (Ia5f30)
- onImeActionPerformed dejó de estar disponible. En su lugar, usa KeyboardActions. (If0bbd, b/179071523)
- Para que las convenciones de nombre coincidan mejor con ImageBitmap e ImageVector, se cambió el nombre de ImagePainter a BitmapPainter, a fin de que sea paralelo con VectorPainter. (Iba381, b/174565889)
- Animatable.snapTo y Animatable.stop ahora son funciones de suspensión. (If4288)
- Se movió ComponentActivity.setContent a androidx.activity.compose.setContent en el módulo androidx.activity:activity-compose. (Icf416)
- Se quitaron los métodos copy() y de desestructuración de varias clases en las que se usaban con muy poca frecuencia. (I26702, b/178659281)
- Se hicieron internos los elementos halfExpand() y expand() en ModalBottomSheetState. (Ic914e)
- Se cambió Indication#createInstance para que sea @Composable y también se cambió LocalIndication para que contenga Indication y no () -> Indication. (I5eeea, b/157150564)
- Se migraron Moved AlertDialog y DropdownMenu, de manera que sean solo para Android por ahora. Se agregó el parámetro PopupProperties a DropdownMenu para ofrecer configuración adicional de la ventana emergente subyacente. (I9c443)
- loadFontResource dejó de estar disponible. En su lugar, usa fontResource. imageResource, loadImageResource, vectorResource y loadVectorResource dejaron de estar disponibles. o painterResource. (I6b809)
- Se quitaron los parámetros
toggle
ytoggleModifier
de DropdownMenu, y se cambió el nombre dedropdownModifier
,dropdownOffset
ydropdownContent
amodifier
,offset
ycontent
, respectivamente. Ahora, DropdownMenu se comporta de manera coherente conPopup
, donde el diseño de nivel superior se usa para la posición del menú. En la mayoría de los casos, puedes migrartoggle
para que sea equivalente aDropdownMenu
y unir ambos en un elementoBox
. Consulta la muestra actualizada en la documentación para obtener más información sobre el uso de esta API. (I884fb) - Se cambió el nombre de toIntPx() a roundToPx(). (I9b7e4, b/173502290)
- Se cambió el nombre de IntBounds a IntRect y se mejoró la API. (I1f6ff)
- Se agregaron las acciones de semántica para expandir y contraer. Se agregaron los elementos expand y halfExpand en ModalBottomSheetState (Ib5064).
- Modifier.dragGestureFilter dejó de estar disponible. Usa
Modifier.pointerInput { detectDragGestures (...)}
en su lugar. De forma alternativa, puedes usar Modifier.draggable para arrastrar un eje. (I0ba93, b/175294473) - Se cambió el nombre de Ambients para que coincida con Ambient -> CompositionLocal. Los elementos Ambients se solían llamar AmbientFoo; ahora los elementos CompositionLocals se llaman LocalFoo. (I2d55d)
- Se movió la selección a la base. (I7892b)
- Se quitará el objeto componible
savedInstanceState { 0 }
, de forma similar a como se quitó el objeto componiblestate { 0 }
, y ahora se promociona el uso deremember { mutableStateOf(0) }
, por ejemplo. En su lugar, se debe usarrememberSaveable { mutableStateOf(0) }
, que se guardará y restablecerá automáticamente si el tipo usado dentro de MutableState se puede almacenar en el paquete. Si antes pasabas un objeto Saver personalizado, ahora debes usar una sobrecarga nueva de rememberSaveable, que tiene el parámetrostateSaver
. Se verá de la siguiente manera:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
. (Ib4c26, b/177338004) - Se agregó ProgressBarRangeInfo.Indeterminate a fin de marcar barras de progreso indeterminadas para la accesibilidad. (I6fe05)
@ComposableContract dejó de estar disponible y se lo reemplazó por tres anotaciones más específicas.
@ComposableContract(restartable = false)
se convirtió en@NonRestartableComposable
.@ComposableContract(readonly = true)
se convirtió en@ReadOnlyComposable
.@ComposableContract(preventCapture = true)
se convirtió en@DisallowComposableCalls
.- Se quitó
@ComposableContract(tracked = true)
. - (I60a9d)
Dejaron de estar disponibles las utilidades
emptyContent()
y(@Composable () -> Unit).orEmpty()
, dado que ya no tienen un valor ni impacto de rendimiento positivos. (I0484d)Se cambió el nombre de rememberSavedInstanceState() a rememberSaveable() y se movió al paquete androidx.compose.runtime.saveable. (I1366e, b/177338004)
Se movieron Saver, listSaver(), mapSaver(), autoSaver de androidx.compose.runtime.savedinstancestate a androidx.compose.runtime.saveable. (I77fe6)
Se cambió el nombre de los parámetros en RounderCornerShape, CutCornerShape y CornerBasedShape de izquierda a derecha, de principio a fin, para admitir la duplicación automática de la forma en la dirección RTL. Se introdujeron los objetos AbsoluteRounderCornerShape y AbsoluteCutCornerShape para los casos en los que no se prefiere la duplicación automática. (I61040, b/152756983)
Se cambiaron los parámetros
text
yicon
de Tab y el parámetrolabel
de BottomNavigationItem para que sean nulos, a fin de transmitir mejor el comportamiento del componente cuando estos parámetros se proporcionan o no, ya que afectan el tamaño y el diseño del componente. Si actualmente pasasemptyContent()
para representar que no hay texto, ícono ni etiqueta, debes usarnull
en su lugar. (I57ed4)Se cambió el nombre del parámetro contentColorFor a backgroundColor. (I5bb67).
TabDefaults se volvió obsoleto y se lo reemplazó por TabRowDefaults. (I0f189)
Se introdujo la API de ColorMatrix para modificar valores RGB de contenido fuente y se refactorizó la API de ColorFilter para que sea una interfaz y coincida con la implementación de PathEffect. (Ica1e8)
AnimatedValue/Float dejó de estar disponible. En su lugar, usa Animatable. (I71345, b/177457083)
Agrega la API de SemanticsProperties.PaneTitle. (I20d5a)
Se agregaron parámetros habilitados a Tab y BottomNavigationItem para evitar que se pueda hacer clic en ellos. Se cambió BottomNavigationItem para que sea RowScope.BottomNavigationItem a fin de expresar mejor sus requisitos de diseño en su API. (Id683d)
tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter y pressIndicaitonGestureFilter dejaron de estar disponibles. En su lugar, usa Modifier.clickable o Modifier.pointerInput con la función detectTapGestures. (I6baf9, b/175294473)
Se agregó el parámetro layoutDirection al objeto createOutline del elemento Shape. Esto permite crear formas que reconozcan la dirección en el diseño. (I57c20, b/152756983)
Se quitó
Recomposer.current()
. Ahora, [Abstract]ComposeView es la opción predeterminada para los elementos Recomposer aplicados a ventanas y creados de forma diferida que controla ViewTreeLifecycleOwner para la ventana. La recomposición y las marcas de animación basadas en withFrameNanos-based se pausan cuando se detiene el ciclo de vida del host. (I38e11)
Correcciones de errores
- Ahora, el ícono escalará verticalmente para adaptarse al tamaño y respetar los modificadores de tamaño que se le apliquen. Por ejemplo,
Icon(.., modifier = Modifier.size(50.dp)
ahora se dibujará en un espacio de 50 x 50 dp. (Ib2ba9, b/178796190)
Versión 1.0.0-alpha11
28 de enero de 2021
Lanzamiento de androidx.compose.material:material-*:1.0.0-alpha11
. La versión 1.0.0-alpha11 contiene estas confirmaciones.
Cambios en la API
- Promueve algunas API de Material para que ya no sean
@Experimental
. (I5d20e). - Se agregó el parámetro de descripción de contenido a Image y Icon. Este se usa para proporcionar una descripción a los servicios de accesibilidad. (I2ac4c)
- Cambia las interfaces de parámetros con estado de Material para tener funciones @Composable que muestren
State<T>
. AgregaAnimatable.asState()
para facilitar la conversión de un valor Animatable en un State. También cambia animateElevation para que sea una extensión de suspensión en Animatable. (If613c) - Snackbar, SnackbarHost, SnackbarHostState ya no son
@ExperimentalMaterialAPI
. (Id1fb5) - Cambia Typography, Shapes y TabPosition para que ya no sean clases de datos. Se agregó la función de copia para Typography y Shapes de modo que reemplacen las ya generadas. (I40037)
- Se borraron algunas API de Material que dejaron de estar disponibles. (Ifaa25)
Correcciones de errores
- onCommit, onDispose y onActive dejaron de estar disponibles, y se los reemplazó con las API de SideEffect y DisposableEffect. (If760e)
- La transición TransitionDefinition-based dejó de estar disponible. (I0ac57)
- Ahora se admite el State inicial en updateTransition. (Ifd51d)
- WithConstraints ahora se llama BoxWithConstraints, y se movió a foundation.layout. (I9420b, b/173387208)
scrollBy sin suspensión dejó de estar disponible, y se quitó scrollTo sin suspensión.
Ahora, recomendamos el uso de funciones de suspensión para controlar el desplazamiento y esperar a que este finalice. Como parte de esta transición, daremos de baja y/o quitaremos las versiones sin suspensión. (Ie9ced)
Dejó de estar disponible smoothScrollBy sin suspensión, por lo que recomendamos el uso de funciones de suspensión para controlar el desplazamiento y esperar a que este finalice. Como parte de esta transición, daremos de baja a las versiones sin suspensión. (I12880)
Se agregó
ComposeContentTestRule
, que extiendeComposeTestRule
y definesetContent
, que se quitó deComposeTestRule
. Se agregó un métodocreateEmptyComposeRule()
de fábrica que muestra unComposeTestRule
y no inicia una Activity para ti. Usa este método cuando quieras iniciar tu Activity durante una prueba, p. ej., conActivityScenario.launch
. (I9d782, b/174472899).El efecto usado en Button y FloatingActionButton ya no se puede personalizar proporcionando una nueva Indication para AmbientIndication. No se suponía que fuera una forma de personalizar esos componentes, y ahora los componentes son coherentes con otros componentes de Material. Para personalizar los efectos de toda una aplicación, consulta RippleTheme. (I546c5)
animateAsState ahora es animateFooAsState, donde Foo es el tipo de variable que se anima, p. ej., Float, Dp, Offset, etc. (Ie7e25)
BasicTextField recibió un parámetro nuevo llamado
decorationBox
. Permite agregar decoraciones, como íconos, marcadores de posición, etiquetas y otros, al campo de texto y aumentar el área de destino en la que se encuentra. (I16996)Se corrigió un error que impedía configurar el ancho del campo de texto de Material de menos de 280 dp. (I78373)
Se quitó el parámetro canDrag de Modifier.draggable. (Ic4bec, b/175294473)
Como debe evitarse displaySize, este debe quitarse. En general, es mejor usar el tamaño de onRoot() o, al menos, el tamaño de la ventana. (I62db4)
La superficie ahora puede tener varios elementos secundarios de diseño. (I66a92, b/144488459)
invalidate y compositionReference() dejaron de estar disponibles, y se reemplazaron con currentRecomposeScope y rememberCompositionReference, respectivamente. (I583a8)
Cambia PopupPositionProvider para usar coordenadas relativas de ventana, no coordenadas globales. Cambia el nombre de parentGlobalBounds a anchorBounds y cambia windowGlobalBounds para que sea
windowSize: IntSize
. (I2994a)Duration y Uptime se reemplazarán con Long en milisegundos, y este paso quitará la dependencia de entrada del puntero en esas clases. (Ia33b2, b/175142755, b/177420019)
Se quitó el elemento AnimatedFloat.fling que acepta FlingConfig. Usa la suspensión Animatable.animateDecay. (I4659b, b/177457083)
Ahora, clickable, toggleable y selectable pueden crearse fuera de las composiciones. (I0a130, b/172938345, b/175294473)
Se cambió la aceleración a una interfaz funcional. (Ib14e5)
ScrollableColumn y Row dejaron de estar disponibles. El uso de ScrollableColumn es menos eficiente en comparación con LazyColumn cuando tienes contenido que lleva mucho desplazamiento, ya que con LazyColumn solo se podía componer, medir o dibujar elementos visibles. A fin de evitar que los usuarios sufran esta ineficiencia, decidimos dar de baja a ScrollableColumn y ScrollableRow para promover el uso de LazyColumn y LazyRow. Los usuarios aún pueden decidir no usar el comportamiento diferido y recurrir a los modificadores directamente de la siguiente manera: Column(Modifier.verticalScroll(rememberScrollState())). (Ib976b, b/170468083)
Se agregó un método de fábrica
items(count: Int)
nuevo para el alcance de LazyColumn/LazyRow/LazyVerticalGrid.items(items: List)
yitemsIndexed(items: List)
ahora son funciones de extensión, así que debes importarlas manualmente cuando las uses. Se agregaron sobrecargas de extensiones nuevas para Arrays:items(items: Array)
yitemsIndexed(Array)
. (I803fc, b/175562574)Se quitaron los métodos experimentales de monotonicFrameAnimationClockOf. (Ib753f, b/170708374)
Los métodos de coordenadas globales dejaron de estar disponibles y se crearon nuevos métodos de coordenadas basados en ventanas. (Iee284)
Se agregó Modifier.toolingGraphicsLayer, que agrega un modificador de capas de gráficos cuando se activa la inspección. (I315df)
Ahora, FocusRequester.createRefs se marca como experimental, ya que podría sufrir cambios. (I2d898, b/177000821)
Se cambió el nombre de SemanticsPropertyReceiver.hidden a invisibleToUser y se marcó como @ExperimentalComposeUiApi. Se cambió el nombre de AccessibilityRangeInfo a ProgressBarRangeInfo, y el de stateDescriptionRange a progressBarRangeInfo. Se cambió el nombre de AccessibilityScrollState a ScrollAxisRange, el de horizontalAccessibilityScrollState a horizontalScrollAxisRange, y el de verticalAccessibilityScrollState a verticalScrollAxisRange. (Id3148)
Se implementó TestCoroutineDispatcher en pruebas. (I532b6)
Se actualizó la API de gráficos vectoriales para admitir el análisis del tono aplicado a la raíz de los gráficos vectoriales. (Id9d53, b/177210509)
Versión 1.0.0-alpha10
13 de enero de 2021
Lanzamiento de androidx.compose.material:material-*:1.0.0-alpha10
. La versión 1.0.0-alpha10 contiene estas confirmaciones.
Cambios en la API
- Se modificó Velocity para que tuviera partes de componentes y operaciones matemáticas. (Ib0447)
- Se cambió el nombre de
@ExperimentalTesting
a@ExperimentalTestApi
para que sea coherente con anotaciones de API experimentales similares. (Ia4502, b/171464963) - Se cambió el nombre de Position a DpOffset y se quitó getDistance(). (Ib2dfd)
- Se cambió el nombre de Color.useOrElse() a Color.takeOrElse(). (Ifdcf5)
- Se agregó la opción de activar o desactivar el Strings.kt de Foundation. (I4a5b7, b 172366489)
- FlowRow y FlowColumn dejaron de estar disponibles. En su lugar, usa un diseño personalizado. (I09027)
- Modifier.focus() y Modifier.focusRequester() dejaron de estar disponibles. En su lugar, usa Modifier.focusModifier() y Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
- Se trasladó nativeClass al módulo de IU y se la convirtió en clase interna. Se actualizaron los usos de nativeClass en implementaciones iguales a usar “es MyClass” en su lugar. (I4f734)
Correcciones de errores
- Se agregó compatibilidad para campos de texto inhabilitados y de solo lectura. (I35279, b/171040474, b/166478534)
- Se reemplazó
animate()
conanimateAsState()
, que muestraState<T>
, en lugar deT
. Esto mejora el rendimiento, ya que el alcance de la invalidación se puede limitar a donde se lee el valor State. (Ib179e) - Se agregó la API de función de Semantics y Role como parámetro para SemanticsModifier que se puede seleccionar, activar o desactivar, y en el que se puede hacer clic. Se cambió Modifier.progressSemantics para que Slider también pudiera usarlo. (I216cd)
Versión 1.0.0-alpha09
16 de diciembre de 2020
Lanzamiento de androidx.compose.material:material-*:1.0.0-alpha09
. La versión 1.0.0-alpha09 contiene estas confirmaciones.
Cambios en la API
- Se agregó una API para activar manualmente las acciones de establecer animación y arrastrar en Modifier.swipeable. (Iaa17a, b/162408885)
- Se cambiaron los nombres de objetos *Constants como ButtonConstants para que terminen con Defaults, como ButtonDefaults. También se quitaron los prefijos
default
innecesarios de las propiedades en esos objetos nuevos. (Ibb915, b/159982740) Compose admite captadores de propiedad que pueden realizar invocaciones que se pueden componer. La compatibilidad con lo anterior no desaparecerá, pero cambiará la sintaxis para declarar un captador de propiedad, dado que @Composable cambiará.
La sintaxis, ahora obsoleta, consistía en anotar la propiedad en sí:
@Composable val someProperty: Int get() = ...
Ahora, la sintaxis correcta consiste en anotar el captador de la propiedad:
val someProperty: Int @Composable get() = ...
Ambas sintaxis funcionarán por un tiempo, pero, al final, la sintaxis obsoleta anterior se convertirá en un error de compilación. (Id9197)
Se agregó la biblioteca
androidx.compose.material:material-ripple
que contiene API de efectos para permitir la creación de componentes interactivos sin que se necesite el resto de la biblioteca de Material. rememberRippleIndication dejó de estar disponible y se reemplazó por rememberRipple. (Ibdf11)
Correcciones de errores
- Las expresiones lambda en los modificadores de compensación ahora muestran IntOffset en lugar de Float. (Ic9ee5, b/174137212, b/174146755)
Se refactorizó ShaderBrush para crear de forma diferida una instancia de sombreador cuando está disponible la información sobre el tamaño del entorno de dibujo. Esto es útil para definir gradientes que ocupan todos los límites de dibujo de un elemento componible en el momento de la composición, sin tener que llevar a cabo implementaciones personalizadas de DrawModifier.
Dejaron de estar disponibles las API del constructor de la función de gradiente y se reemplazaron por los métodos de fábrica en un objeto de gradiente. (I511fc, b/173066799)
Modifier.focusObserver dejó de estar disponible. Usa Modifier.onFocusChanged o Modifier.onFocusEvent. (I30f17, b/168511863, b/168511484)
Dejaron de estar disponibles los objetos LazyColumnFor, LazyRowFor, LazyColumnForIndexed y LazyRowForIndexed. En su lugar, usa LazyColumn y LazyRow. (I5b48c)
Se movieron p.VectorConverter, Position.VectorConverter, etc. a animation-core, y dejaron de estar disponibles los objetos VectorConveters anteriores. (If0c4b)
Ahora la API de autocompletado es una experimental y requiere que la habilites. (I0a1ec)
Se agregaron declaraciones de desestructuración para crear instancias de FocusRequester. (I35d84, b/174817008)
Se cambió el nombre de accessibilityLabel a "descriptionDescription". Se cambió el nombre de accessibilityValue a stateDescription. (I250f2)
Se agregó una función infiniteRepeatable para crear InfiniteRepetableSpec. (I668e5)
El comportamiento de posicionamiento de los menús desplegables se cambió ligeramente según la especificación de Material. (I34c72, b/168594123).
Se agregó compatibilidad con InteractionState para TextFields. (I61d91)
Se agregó Modifier.clearAndSetSemantics para borrar la semántica de los derivados y establecer nuevas. (I277ca)
Se movió ContentDrawScope al módulo ui-graphics para que esté con DrawScope. (Iee043, b/173832789)
Versión 1.0.0-alpha08
2 de diciembre de 2020
Lanzamiento de androidx.compose.material:material:1.0.0-alpha08
, androidx.compose.material:material-icons-core:1.0.0-alpha08
y androidx.compose.material:material-icons-extended:1.0.0-alpha08
. La versión 1.0.0-alpha08 contiene estas confirmaciones.
Cambios en la API
- MaterialTheme ahora establece los colores correctos para los controladores y el fondo de selección. Las apps que no son de Material pueden usar AmbientTextSelectionColors de forma manual para personalizar los colores usados para la selección. (I1e6f4, b/139320372, b/139320907)
- Se agregó la comprobación de lint para el nombre y la posición del parámetro lambda que se pueden componer a fin de verificar la coherencia con los lineamientos de Compose.
También se migraron algunas API que usaban
children
como nombre de su lambda al final acontent
, según la comprobación y orientación de lint. (Iec48e) - Se cambió el nombre de VectorAsset a ImageVector y se movió VectorAsset a Builder para que fuera una clase de ImageVector de acuerdo con los lineamientos acordados de la API. Se agregó un typealias de VectorAssetBuilder para vincular ImageVector.Builder con fines de compatibilidad. (Icfdc8)
- Se cambió el nombre de ImageAsset y los métodos relacionados a ImageBitmap. (Ia2d99)
- Se trasladaron las propiedades de semántica básica a la IU. (I6f05c)
fun RippleIndication()
dejó de estar disponible y se reemplazó porrememberRippleIndication()
por coherencia con otras API. (Id8e2c)- Se agregó un parámetro singeLine a BasicTextField, TextField y OutlinedTextField. Establece este parámetro en verdadero para que el campo de texto tenga una sola línea horizontal en la que el usuario pueda desplazarse. (I57004, b/168187755)
Correcciones de errores
- Se agregó la acción de semántica Descartar. (I2b706)
- Se movieron las API de DrawModifier del paquete androidx.compose.ui a androidx.compose.ui.draw. Se creó el archivo DrawModifierDeprecated.kt para que incluya los métodos typealiases/helper para asistir en la migración de las APIs que dejaron de estar disponibles a las actuales. (Id6044, b/173834241)
- Se cambió el nombre de Modifier.drawLayer a Modifier.graphicsLayer y se actualizaron las clases relacionadas con GraphicsLayer según los comentarios de la API. (I0bd29, b/173834241)
- Se quitó
<T>
de la declaración de SubcomposeLayout. Ahora se puede usar sin especificar un tipo. (Ib60c8) - Se agregaron APIs de Modifier.scale/rotate como convenientes para drawLayer.
- Se cambió el nombre de
Modifier.drawOpacity
aModifier.alpha
. - Se cambió el nombre de
Modifier.drawShadow
aModifier.shadow
. (I264ca, b/173208140)
- Se cambió el nombre de
- Se cambió el nombre del parámetro de alineación de Box a contentAlignment. (I2c957)
- Se cambiaron los nombres de los modificadores de offsetPx a offset. Ahora toman parámetros lambda en lugar de State. (Ic3021, b/173594846)
- Se introdujeron las API de SweepGradientShader y SweepGradientBrush. (Ia22c1)
- Se agregó una comprobación de lint para los parámetros de modificador en funciones de componibilidad. Esta comprobación de lint verifica el nombre, el tipo de datos que se muestra, el valor predeterminado y el orden del parámetro para mantener la coherencia con los lineamientos de Compose. (If493b)
- Se actualizó la API de TextFieldValue.
- TextFieldValue.composition se hizo de solo lectura.
- Se quitó la excepción que se arrojaba para el rango de selección no válido. (I4a675, b/172239032)
- Se agregó una nueva sobrecarga de
Modifier.drawLayer()
. Toma un bloqueo de lambda en un objeto GraphicsLayerScope nuevo donde se definen los parámetros de la capa de una forma que permita omitir la recomposición y la creación de un diseño nuevo cuando se produce el cambio de estado. DrawLayerModifier ahora es un elemento interno en la preparación para migrar su lógica al métodoplaceable.placeWithLayer()
de LayoutModifier. (I15e9f, b/173030831) - Los entornos Ambient con el nombre
Ambient
como sufijo dejaron de estar disponibles, y se los reemplazó por nuevas propiedades con el prefijo Ambient, en función de otros lineamientos de la API de Compose y Ambients. (I33440) - Se agregó una comprobación de lint para revisar que las fábricas de Modifier usen
androidx.compose.ui.composed {}
internamente, en lugar de marcarse como@Composable
. (I3c4bc) - Se cambió el nombre del argumento de semántica mergeAllDescendants a mergeDescendants. (Ib6250)
- El control de tiempo en las pruebas (TestAnimationClock y sus usos) ahora es experimental. (I6ef86, b/171378521)
- Se quitó el módulo ui-tests y sus stubs. (I3a7cb)
- Se cambió el nombre de TextUnit.Inherit a TextUnit.Unspecified para mantener la coherencia con otras unidades. (Ifce19)
- Se actualizó la interfaz de Alignment y se hizo funcional. (I46a07, b/172311734)
- Se cambió el nombre de id por layoutId para LayoutIdParentData. Se cambió el nombre de Measurable.id por Measurable.layoutId. (Iadbcb, b/172449643)
Versión 1.0.0-alpha07
11 de noviembre de 2020
Lanzamiento de androidx.compose.material:material:1.0.0-alpha07
, androidx.compose.material:material-icons-core:1.0.0-alpha07
y androidx.compose.material:material-icons-extended:1.0.0-alpha07
. La versión 1.0.0-alpha07 contiene estas confirmaciones.
Cambios en la API
- Emphasis dejó de estar disponible y se reemplazó por AmbientContentAlpha. AmbientContentAlpha es una abstracción más simple que representa la versión alfa del contenido preferido para parte de la jerarquía, similar a la forma en que AmbientContentColor representa el color de contenido preferido. De manera predeterminada, Icon y Text consumen el valor actual de AmbientContentAlpha. También puedes hacerlo de forma manual:
color.copy(alpha = AmbientContentAlpha.current)
para tener el mismo efecto en tus componentes. En lugar de usar ProvidEmphasis, solo puedes proporcionar un valor de forma directa mediante AmbientContentAlpha y usar los nuevos niveles predeterminados en ContentAlpha para reemplazar a los antiguos EmphasisLevels. (Idf03e, b/159017896) - Se agregó androidx.compose.material.AmbientContentColor para reemplazar a androidx.compose.foundation.AmbientContentColor. (I84f7b, b/172067770)
- Se agregó androidx.compose.material.Text para reemplazar a androidx.compose.foundation.Text como componente de texto de alto nivel y temática. Para un componente básico de texto que no consume color ni estilo de texto del tema, utiliza BasicText. (Ie6ae0)
- Se agregó maxLines a TextFields. (Ib2a5b)
- Se actualizó TextFields para que acepte KeyboardOptions. (Ida7f3)
- Surface ahora utiliza la elevación absoluta (total) al momento de calcular las superposiciones de elevación. Por lo tanto, un objeto Surface anidado en otro Surface usará la elevación combinada para dibujar la superposición. (I7bd2b, b/171031040)
Correcciones de errores
- Se movió
captureToBitmap
acaptureToImage
. (I86385) - Las bases AmbientTextStyle, ProvideTextStyle y AmbientContentColor ya no están disponibles. En su lugar, utiliza las nuevas versiones que se proporcionan en la biblioteca de Material. En el caso de las aplicaciones que no son de Material, deberás crear tus propios ambientes de temas específicos de sistemas de diseño que se puedan consumir en tus componentes. (I74acc, b/172067770)
- foundation.Text dejó de estar disponible y se reemplazó por material.Text. Para ver una API de texto básica y sin tendencias que no consuma valores de un tema, consulta androidx.compose.foundation.BasicText. (If64cb)
- Se cambió el nombre de KeyboardOptions a ImeOptions. (I82f36)
- Se movió KeyboardType y ImeAction a KeyboardOptions. (I910ce)
- BaseTextField dejó de estar disponible. En su lugar, usa BasicTextField. (I896eb)
- Se quitó la anotación ExperimentalSubcomposeLayoutApi. Ahora es posible usar SubcomposeLayout sin agregar @OptIn. (I708ad)
- Se movieron FirstBaseline y LastBaseline al paquete androidx.compose.ui.layout. (Ied2e7)
- Se actualizó la API de íconos para que acepte Color.Unspecified como un tono posible que dibujará el elemento o Painter proporcionados sin ColorFilter. Anteriormente, cuando se intentaba ignorar el ajuste de tono con Color.Unspecified, se aplicaba un color transparente, lo que provocaba que no se renderizara nada. (I049e2, b/171624632)
- Se cambió el nombre de relativePaddingFrom a paddingFrom. Se agregó el modificador paddingFromBaseline para especificar distancias de límites de diseño a las líneas de base del texto. (I0440a, b/170633813)
- Se cambió el nombre de LaunchedTask a LaunchedEffect para conservar la coherencia con las API de SideEffect y DisposableEffect. No se permite el uso de LaunchedEffect sin parámetros de asunto para fomentar las prácticas recomendadas. (Ifd3d4)
- Se quitó MeasureResult de MeasureScope. (Ibf96d, b/171184002)
- Varios símbolos relacionados con el diseño se movieron de androidx.compose.ui a androidx.compose.layout.ui. (I0fa98, b/170475424)
Versión 1.0.0-alpha06
28 de octubre de 2020
Lanzamiento de androidx.compose.material:material:1.0.0-alpha06
, androidx.compose.material:material-icons-core:1.0.0-alpha06
y androidx.compose.material:material-icons-extended:1.0.0-alpha06
. La versión 1.0.0-alpha06 contiene estas confirmaciones.
Cambios en la API
- Se movió androidx.compose.foundation.Icon a androidx.compose.material.Icon. También puedes usar el componente de Image o Modifier.paint() con un objeto Painter si no quieres usar la biblioteca de Material. (I9f622)
- Se agregó FloatingActionButtonElevation para representar la elevación utilizada por los BAF en diferentes estados. Consulta FloatingActionButtonConstants.defaultElevation() para obtener la implementación predeterminada. (I2d4f5).
- Se agregó la interfaz SwitchColors para representar los colores que usa un Switch en diferentes estados. Consulta SwitchConstants.defaultColors para personalizar estos colores. (I93805)
- Se agregaron las interfaces ButtonElevation y ButtonColors para representar la elevación y los colores que usan los botones en diferentes estados. Consulta las funciones predeterminadas de ButtonConstants para personalizar esos parámetros. (Ic5b7b)
- Se agregó la interfaz RadioButtonColors para representar los colores utilizados por un RadioButton en diferentes estados. Consulta RadioButtonConstants.defaultColors() para personalizar los colores que se usan en diferentes estados. (I74130)
- Se agregó la interfaz CheckboxColors para representar los colores usados por una casilla de verificación en diferentes estados. Consulta CheckboxConstants.defaultColors() para personalizar los colores que se usan en diferentes estados. (I7dbdb)
Correcciones de errores
- Los componentes de Material ya no establecen la elevación como zIndex . Eso significa que, dentro del mismo elemento superior, el elemento secundario con mayor tamaño de sombra no se dibujará encima del elemento secundario con el más pequeño de forma automática. Si aún necesitas este comportamiento, configura Modifier.zIndex() de forma manual cuando sea necesario. (I70417, b/170623932)
- VectorPainter dejó de estar disponible y se reemplazó por rememberVectorPainter a fin de indicar mejor que la API de composición aprovecha internamente "remember" para conservar datos entre las composiciones. (Ifda43)
- Se habilitaron transiciones en ComposeTestRule y se quitó la opción que permitía habilitar el cursor intermitente desde ComposeTestRule. (If0de3)
- Se agregó la opción de teclado de una sola línea a CoreTextField. (I72e6d)
- Se cambió el nombre de la API de Radius por CornerRadius para expresar mejor la manera en que se usa en Compose. Se actualizó la documentación para indicar que la esquina negativa radii se fijará en cero. (I130c7, b/168762961)
- Se refactorizaron DrawScope y ContentDrawScope para que sean interfaces en lugar de clases abstractas.
- Se creó la implementación de CanvasDrawScope de DrawScope.
- Se refactorizaron implementaciones de DrawScope para usar CanvasScope.
- Se creó DrawContext para unir dependencias de DrawScope.
- Se quitaron los métodos obsoletos de DrawScope. (I56f5e)
- Se creó Box como función intercalada. (Ibce0c, b/155056091)
Versión 1.0.0-alpha05
14 de octubre de 2020
Lanzamiento de androidx.compose.material:material:1.0.0-alpha05
, androidx.compose.material:material-icons-core:1.0.0-alpha05
y androidx.compose.material:material-icons-extended:1.0.0-alpha05
. La versión 1.0.0-alpha05 contiene estas confirmaciones.
Cambios en la API
- Las ventanas emergentes y los diálogos ahora heredan FLAG_SECURE desde la ventana superior. También se agregó la opción de configurar esto explícitamente. (I64966, b/143778148, b/143778149)
- De forma predeterminada, Modif.swipeable ahora tiene umbrales de 56 dp para estados. (Iab825, b/168610267)
- Todos los estados de scaffold marcados como @Stable. drawerGesturesEnabled en ScaffoldState se movieron a Scaffold. (I36645, b/168297016)
- Se quitó el tipo anulable de los parámetros lambda de Scaffold. Puedes usar emptyContent() a fin de representar sin contenido para un parámetro determinado. (I2b318, b/157633857, b/158551084)
Se dieron de baja las API de contentColor() y currentTextStyle(), y se reemplazaron por AmbientContentColor y AmbientTextStyle, respectivamente. Puedes acceder al valor actual usando
.current
en la propiedad de los ambientes, como en cualquier otro ambiente. Este cambio se realizó para mantener la coherencia y evitar tener varias formas de lograr el mismo resultado. Además, se cambia el nombre de algunas propiedades de ambientes para describir mejor sus propósitos, de la siguiente manera:- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
Se agregó AmbientElevationOverlay, lo que permite personalizar o inhabilitar la superposición de elevación predeterminada que se aplica a los objetos Surfaces con tema oscuro. (I5b74d)
Correcciones de errores
- Como parte de la estandarización de los valores sentinela de las clases intercaladas, se cambia el nombre a Color.Unset a Color.Unspecified para mantener la coherencia con otras clases intercaladas. (I97611, b/169797763)
- Se agregó TextOverflow.None. Cuando el desbordamiento sea None, Text ya no lo controlará y notificará su tamaño real a LayoutNode. (I175c9, b/158830170)
- Se cambió el nombre de launchInComposition por LaunchedTask para que coincida con los lineamientos de la API de Compose. (I99a8e)
- Se cambió el nombre de OnPositionedModifier a OnGloballyPositionedModifier y onPositioned() a onGloballyPositioned(). (I587e8, b/169083903)
Versión 1.0.0-alpha04
1 de octubre de 2020
Lanzamiento de androidx.compose.material:material:1.0.0-alpha04
, androidx.compose.material:material-icons-core:1.0.0-alpha04
y androidx.compose.material:material-icons-extended:1.0.0-alpha04
. La versión 1.0.0-alpha04 contiene estas confirmaciones.
Cambios en la API
- Se exponen parámetros InteractionState en componentes de Material con estado para permitir elevar el estado y leerlo o controlarlo. (Iaca5f, b/168025711, b/167164434)
- Se cambian los parámetros de
*color
en RadioButton y TriStateCheckbox para personalizar por completo los colores usados en cada estado, así como el cambio de la animación de los colores entre los estados si así lo deseas. Para obtener más información, consulta las nuevas funciones de colores animateDefault* en CheckboxConstants y RadioButtonConstants. (I1c532) - Se cambió el nombre de rememberBackdropState a rememberBackdropScaffoldState y se agregó un parámetro adicional para el reloj de animación. Se cambió el nombre del parámetro backdropScaffoldState de BackdropScaffold a soldoldState. Se cambió el nombre de BackdropConstants a BackdropScaffoldConstants. (Ib644d)
- Se agregó el componente experimental BottomSheetSafold. (Ie02f0, b/148996320)
- Se agregó el componente experimental ModalBottomSheetLayout. (Ic209e, b/148996320)
- Se cambió el nombre de ButtonConstants/FloatingActionButtonConstants.defaultAnimatedElevation a defaultElevation, y ahora muestra un valor Dp en lugar de AnimatedValue. (I5f3ed)
Correcciones de errores
- Se actualizaron varias API de gráficos.
- Se actualizaron las API de transformación de escalamiento y rotación a fin de consumir un solo parámetro de compensación para representar la coordenada dinámica, en lugar de parámetros flotantes separados para las coordenadas x/y en DrawScope y DrawTransform.
- Se quitaron los métodos Rect.expandToInclude y Rect.join.
- Se actualizó la documentación de Radius para indicar el óvalo además del elíptico.
- Se agregó documentación para indicar que el constructor público para la clase de Radius intercalado no se debe llamar directamente, sino que se debe crear una instancia de los objetos Radius a través de sus constructores de funciones.
- Se quitaron las API de RoundRect para consultar topRight, bottomRight, bottomCenter, etc.
- Rect.shift dejó de estar disponible y se reemplazó por Rect.translate.
- Se quitaron las API de RoundRect.grow y Rect.shrink.
- Se cambió el nombre de RoundRect.outerRect a Rect.boundingRect.
- Se quitaron los métodos RoundRect.middleRect/tallMiddleRect/wideMiddleRect y Rect.isStadium.
- Se cambió el nombre de RoundRect.longestSide a RoundRect.maxDimension.
- Se cambió el nombre de RoundRect.shortestSide a RoundRect.minDimension.
- Se modificó RoundRect.center para que sea una propiedad en lugar de una función.
- Se actualizó el constructor RoundRect para consumir propiedades de Radius en lugar de parámetros individuales para valores de radio x/y.
- Se quitaron las API de tamaño que asumían que se trataba de un rectángulo con el origen en 0,0.
- Se agregó una API destructiva a Radius.
- Se migraron varias funciones de extensión de RoundRect para que sean propiedades.
- (I8f5c7, b/168762961)
- foundation.Box dejó de estar disponible. Usa foundation.layout.Box en su lugar. (Ie5950, b/167680279)
- Se cambió el nombre de Stack a Box. La función Box anterior dejará de estar disponible y se usará la nueva función Box en compose.foundation.layout. El comportamiento de la nueva función Box es apilar elementos secundarios uno encima de otro cuando existen varios, a diferencia de la anterior, cuyo comportamiento era similar al de una columna. (I94893, b/167680279)
- Los parámetros de decoración de Box dejaron de estar disponibles. Si deseas incluir decoraciones o relleno en tu cuadro, utiliza modificadores (Modifier.background, Modifier.border, Modifier.padding). (Ibae92, b/167680279)
- Se actualizaron varias API de gráficos.
- Se actualizaron las API de DrawScope con métodos de transformación con alcance para indicar que la transformación solo se aplica dentro de la devolución de llamada y se quita una vez invocada la devolución de llamada.
- Se actualizó la documentación de clipPath para hacer referencia a Path en lugar del rectángulo redondeado.
- Se corrigió el espaciado en la documentación del parámetro en clipPath.
- Se cambió el nombre de DrawScope.drawCanvas a drawIntoCanvas y se quitó el parámetro de tamaño.
- Se cambió el nombre de los parámetros dx/dy en el método de inserción a horizontal y vertical.
- Se agregó una sobrecarga de inserción que proporciona el mismo valor de inserción a los 4 límites.
- Se quitó la documentación del método de inserción que indicaba que la inserción se aplicaba a los 4 lados.
- Se actualizó la documentación de la clase Rect.
- Se actualizaron los comentarios en los parámetros Rect para que coincidan con el estilo de KDoc.
- Se quitaron Rect.join and Rect.expandToInclude.
- Se creó una sobrecarga para Rect.translate (desplazamiento), y Rect.shift dejó de estar disponible.
- (If086a, b/167737376)
- Evitamos las importaciones estáticas de contenido de alcances de diseño (p. ej., alignWithSiblings en RowScope). En su lugar, se debe usar la alternativa a un alcance explícito:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
. (I216be, b/166760797)
Versión 1.0.0-alpha03
16 de septiembre de 2020
Lanzamiento de androidx.compose.material:material:1.0.0-alpha03
, androidx.compose.material:material-icons-core:1.0.0-alpha03
y androidx.compose.material:material-icons-extended:1.0.0-alpha03
. La versión 1.0.0-alpha03 contiene estas confirmaciones.
Cambios en la API
- Se cambió el nombre del parámetro
onSelect
deBottomNavigationItem
aonClick
. (I91925, b/161809324) - Se agregó el parámetro InteractionState a BottomNavigationItem y Tab, lo que permite elevar este estado y ajustar la forma en que aparece el componente en diferentes estados. (Ia3e9e, b/168025711)
- Se quitaron los parámetros
disabledBackgroundColor
ydisabledContentColor
de los botones. En su lugar, debes usar las nuevas funciones de color predeterminadas dentro de ButtonConstants. Si ya configuraste contentColor/backgroundColor de forma explícita, debes usar estas funciones predeterminadas y personalizar algunos o todos los parámetros para evitar reemplazar el color para ambos estados. (If9b52) - El color de fondo de Textfield ya no aplica la transparencia alfa de manera implícita. En cambio, se aplicará directamente cualquier color proporcionado a través del parámetro backgroundColor. (Iecee9, b/167951441)
- Se cambió el nombre de InnerPadding a PaddingValues. (I195f1, b/167389171)
- Se reemplazaron los parámetros
resistanceFactorAtMin
yresistanceFactorAtMax
enModifier.swipeable
por un solo parámetro de resistencia. Se agregó un nuevo métododefaultResistanceConfig
enSwipeableConstants
. (I54238) - Se agregó compatibilidad con la elevación animada con estado para Button y FloatingActionButton. La elevación ahora anima el cambio entre los estados predeterminado y presionado. Para personalizar la elevación entre estados, en todos los casos, usa
ButtonConstants.defaultAnimatedElevation()
yFloatingActionButtonConstants.defaultAnimatedElevation()
en lugar de establecer un valor Dp plano. (I37925) - El parámetro Label ahora es opcional en TextField y OutlinedTextField. (I267f6, b/162234081)
Correcciones de errores
- Las funciones de prueba globales, como
onNode
owaitForIdle
, dejaron de estar disponibles. Migra a sus equivalentes nuevas que se definen en ComposeTestRule. (I7f45a) - DpConstraints y las API que usaban esas restricciones dejaron de estar disponibles. (I90cdb, b/167389835)
- Se cambiaron los nombres de los parámetros minWidth y maxWidth de widthIn a "min" y "max", del mismo modo que para preferredWidthIn, heightIn y preferredHeightIn. (I0e5e1, b/167389544)
- Se quitaron las acciones de semántica de desplazamiento hacia adelante y hacia atrás. Se agregaron pasos a AccessibilityRangeInfo. (Ia47b0)
- Se cambiaron de manera coherente los nombres de los usos de Gravity a Align o Alignment en las API de diseño. (I2421a, b/164077038)
- Se agregaron onNode y otros métodos globales a ComposeTestRule, ya que los actuales dejarán de estar disponibles. (Ieae36)
- Se trasladaron
createAndroidComposeRule
yAndroidInputDispatcher
deandroidx.ui.test.android
aandroidx.ui.test
. (Idef08, b/164060572)
Versión 1.0.0-alpha02
2 de septiembre de 2020
Lanzamiento de androidx.compose.material:material:1.0.0-alpha02
, androidx.compose.material:material-icons-core:1.0.0-alpha02
y androidx.compose.material:material-icons-extended:1.0.0-alpha02
. La versión 1.0.0-alpha02 contiene estas confirmaciones.
Cambios en la API
- Se agregó un componente experimental de BackdropSafold. (Iad908)
Correcciones de errores
- Se reemplazó Matrix4 con Matrix. Se quitaron todas las otras partes del paquete de vectormath. (Ibd665, b/160140398)
Versión 1.0.0-alpha01
26 de agosto de 2020
Lanzamiento de androidx.compose.material:material:1.0.0-alpha01
, androidx.compose.material:material-icons-core:1.0.0-alpha01
y androidx.compose.material:material-icons-extended:1.0.0-alpha01
. La versión 1.0.0-alpha01 contiene estas confirmaciones.
Problema conocido
= El primer carácter de un TextField
de Material no se puede quitar mediante la tecla de retroceso. (b/165956313)
Versión 0.1.0-dev
Versión 0.1.0-dev17
19 de agosto de 2020
Lanzamiento de androidx.compose.material:material:0.1.0-dev17
, androidx.compose.material:material-icons-core:0.1.0-dev17
y androidx.compose.material:material-icons-extended:0.1.0-dev17
. La versión 0.1.0-dev17 contiene estas confirmaciones.
Cambios en la API
- Se quitaron RadioGroup y RadioGroupItems, que anteriormente habían quedado obsoletos. En su lugar, usa Row y RadioBotton. (I381b7, b/163806637)
- Se quitaron las devoluciones de llamada onFocusChanged de TextField. En su lugar, usa Modifier.focusObserver. (I51089, b/161297615)
- Modifier.drawBorder dejó de estar disponible. En su lugar, usa Modifier.borde. Se reemplazó la clase de datos Border por BorderStroke. (I4257d, b/158160576)
- Se cambiaron los nombres de algunas propiedades en SwipeableState: swipeTarget -> targetValue, swipeProgress -> progress, swipeDirection -> direction. Se agregó una función rememberSwipeableState para crear SwipeableStates. (I2fc9c, b/163129614, b/163132293)
- Se agregó compatibilidad de la barra de notificaciones con el posicionamiento y las colas adecuadas. Accede mediante la función de suspensión
SnackbarHostState.showSnackbar
. Además:- Se agregaron componentes SnackbarHost. Esto aloja las barras de notificaciones en función del estado y se encarga de la transición entre esas barras.
- Se agregó SnackbarHostState a fin de permitir el control de las barras de notificaciones y sus hosts, así como para desacoplarlo de ScaffoldState. También puedes acceder a ese estado mediante
scaffoldState.snackbarHostState
. - Se agregó la sobrecarga de la barra de notificaciones para admitir una interfaz común entre snackbarHostState y las propias barras. (I79aaa)
- Se agregó el parámetro habilitado a IconButton y se reordenaron los parámetros de IconToggleButton. (I0a941, b/161809385, b/161807956)
- Se quitó la versión ListItem con la API basada en strings. En su lugar, usa la versión de ranura. (Ib8f57, b/161804681)
- Se quitó el componente obsoleto FilledTextField. En su lugar, usa TextField para obtener la implementación de Material Design del campo de texto relleno. (I5e889)
- AlertDialog ahora usa FlowRow para los botones. (I00ec1, b/161809319, b/143682374)
- Se agregaron parámetros en Modifier.swipeable para cambiar la resistencia cuando el usuario deslice el dedo más allá del límite. Se quitaron los parámetros [min/max]Value. (I93d98)
- Se agregó el parámetro backgroundColor a LinearProgressIndicator y se quitó el padding interno de CircularProgressIndicator. Se agregó el nuevo ProgressIndicatorConstants.DefaultProgressAnimationSpec, que se puede usar como AnimationSpec predeterminado en la animación del progreso entre valores. (If38b5, b/161809914, b/161804677)
- Se agregó el parámetro opcional velocityThreshold a Modifier.swipeable. (I698ba)
- bottomBarSize, fabSize y otros parámetros ya no están disponibles en ScaffoldState. En su lugar, usa Modifier.onPosition en el componente del cual te gustaría conocer el tamaño. Se agregaron los parámetros contentColor y Modifier a Scaffold. (Ic6f7b, b/161811485, b/157174382)
- Se cambió el nombre y el orden de algunos parámetros en Tab por razones de coherencia con otras API. (Ia2d12, b/161807532)
- Se dividió TabRow en TabRow y ScrollableTabRow, y se quitó isScrollable de TabRow. También se expuso edgePadding en ScrollableTabRow, que permite controlar el espacio libre antes y después de las pestañas. (I583e8, b/161809544)
- Se quitó el objeto
TabRow
y se lo reemplazó por TabConstants. Se movió TabRow.TabPosition al nivel superior (TabPosition) y se cambió el nombre de indicatorContainer aindicator
. Consulta los ejemplos y la documentación a fin de obtener información detallada para usar la API actualizada y sobre cuáles son los valores predeterminados. (I54d45, b/161809544) - Se ajustó el parámetro de límites de Modifier.swipeable. Ahora toma un par de estados (de tipo T) y muestra el límite entre ellos en forma de un ThresholdConfig. Se agregó un parámetro dismissThresholds a SwipeToDismiss, que es una lambda (DismissDirection) -> ThresholdConfig. (Ie1080)
- El control deslizante tiene más colores para lograr una personalización detallada. (I73e64, b/161810475)
- Se cambió el nombre del parámetro de color de Card por backgroundColor. (I01fc1, b/161809546)
- La barra de notificaciones ahora tiene colores personalizables de fondo y contenido. (I238f2, b/161804381)
- Se agregaron los parámetros de personalización modifier, backgroundColor, contentColor y scrimColor a Drawers. (I23655, b/161804378)
- El elemento
state { ... }
que admite composición dejó de estar disponible en favor de cualquier llamada explícita aremember { mutableStateOf(...) }
por motivos de claridad. Con esto, se reduce la superficie general de la API, así como la cantidad de conceptos para la administración de estados, y se hace coincidir el patrónby mutableStateOf()
con la delegación de propiedades de clase. (Ia5727) - Se cambió el nombre del parámetro padding de Button por contentPadding. (Id252e, b/161809394)
- Se agregó el componente experimental de material SwipeToDismiss. (I129e5)
Correcciones de errores
- Se quitaron
onChildPositioned
yOnChildPositionedModifier
. Los desarrolladores deben usaronPositioned
yOnPositionedModifier
en el diseño secundario. (I4522e, b/162109766) - Se agregó la lambda mergePolicy a SemanticsPropertyKey. Se puede usar con el fin de definir una política personalizada para la combinación de semántica de mergeAllDescendants. La política predeterminada es usar el valor del elemento superior si ya está presente; de lo contrario, se utiliza el valor secundario. (Iaf6c4, b/161979921)
- IntSize ahora es una clase intercalada. (I2bf42)
- Se cambió el nombre de
PlacementScope.placeAbsolute()
aPlacementScope.place()
, y el delPlacementScope.place()
anterior aPlacementScope.placeRelative()
. Como resultado, el métodoPlacementScope.place()
ya no duplicará automáticamente la posición en contextos de derecha a izquierda. Si quieres que eso ocurra, usaPlacementScope.placeRelative()
en su lugar. (I873ac, b/162916675) - PxBounds dejó de estar disponible y se reemplazó por Rect. Se actualizaron todos los usos de PxBounds con rect y se agregaron la baja y reemplazo adecuados, con anotaciones para ayudar con la migración. (I37038, b/162627058)
- Se cambió el nombre de RRect a RoundRect para que se adapte mejor a los patrones de nombres de Compose. Se crearon constructores de funciones similares a RRect, y los de RRect quedaron obsoletos. (I5d325)
Versión 0.1.0-dev16
5 de agosto de 2020
Lanzamiento de androidx.compose.material:material:0.1.0-dev16
, androidx.compose.material:material-icons-core:0.1.0-dev16
y androidx.compose.material:material-icons-extended:0.1.0-dev16
. La versión 0.1.0-dev16 contiene estas confirmaciones.
Cambios en la API
- Colors ahora es una clase final en vez de una interfaz. En lugar de extender y proporcionar una implementación personalizada, debes crear un ambiente nuevo para tu objeto de tema personalizado y acceder a él mediante el nuevo ambiente en tus componentes, de manera similar a cómo funciona MaterialTheme internamente. (Ibae84)
- Se cambió el nombre de ColorPalette por Colors a fin de mapear mejor el sistema de colores de Material y quitar la confusión que existía en torno a considerar ColorPalette como un objeto de temas "genérico", en lugar de considerarlo una implementación específica del sistema de colores de Material. Además, se cambió el nombre de lightColorPalette y darkColorPalette por lightColors y darkColors, respectivamente. (I9e976, b/161812111)
- Se cambió el nombre de los parámetros de BottomNavigationItem de
text
alabel
, deonSelected
aonSelect
, deactiveColor
aselectedContentColor
y deinactiveColor
aunselectedContentColor
. Además, se actualizó el orden de los parámetros de conformidad con los lineamientos. (Icb605, b/161809324) - Se rediseñó por completo
Modifier.stateDraggable
y se cambió su nombre por Modifier.swipeable. Se agregó una nueva clase SwipeableState, y se refactorizaron DrawerState y BottomDrawerState para heredar de ella. [Modal/Bottom]DrawerLayout ya no toma un parámetro onStateChange. (I72332, b/148023068) - Se acopló el paquete foundation.shape.corner a foundation.share. (I46491, b/161887429)
- Se agregó la anotación ExperimentalMaterialApi. Se marcó RippleTheme como Experimental. (Ic5fa0, b161784800)
- Se cambió el nombre de FilledTextField de Material por TextField, y el del TextField principal se cambió por BaseTextField a fin de que la API deseada resulte más fácil de encontrar y usar. (Ia6242, b/155482676)
Correcciones de errores
- OnChildPositioned dejó de estar disponible. Usa OnPositioned en el elemento secundario. (I87f95, b/162109766)
- Se abordaron correcciones amplias de API. (I077bc)
- Se quitó la interfaz OffsetBase sin usar.
- Se alinearon las clases Offset y IntOffset a fin de tener una superficie de API coherente.
- Se cambió el nombre de IntOffset.Origin por IntOffset.Zero para que sea coherente con la API de Offset.
- Se quitó de la interfaz de Canvas el método nativeCanvas con el objeto de ayudar a los consumidores a crear sus propias instancias de Canvas.
- Se creó una clase stub EmptyCanvas para refactorizar DrawScope a fin de hacerlo un parámetro no nulo en lugar de usar lateinit y de garantizar la no nulabilidad del campo.
- Se cambió el nombre de las enumeraciones ClipOp para que lleven mayúsculas en la primera letra de cada palabra.
- Se cambió el nombre de las enumeraciones FilterQuality para que lleven mayúsculas en la primera letra de cada palabra.
- Se cambió el nombre de las enumeraciones StrokeJoin para que lleven mayúsculas en la primera letra de cada palabra.
- Se cambió el nombre de las enumeraciones PointMode para que lleven mayúsculas en la primera letra de cada palabra.
- Se cambió el nombre de las enumeraciones PaintingStyle para que lleven mayúsculas en la primera letra de cada palabra.
- Se cambió el nombre de las enumeraciones PathFillType para que lleven mayúsculas en la primera letra de cada palabra.
- Se cambió el nombre de las enumeraciones StrokeCap para que lleven mayúsculas en la primera letra de cada palabra.
- Se actualizó la implementación de DrawCache para que deje de usar parámetros lateinit.
- Se actualizó DrawScope a fin de que deje de usar la delegación lazy para los parámetros internos fillPaint y strokePaint.
- Se actualizó el objeto Image que admite composición a fin de evitar el uso de Box y lograr una sobrecarga menor.
- Se actualizó la clase Outline para que tenga anotaciones @Immutable.
- Se actualizó PathNode para que tenga anotaciones @Immutable en cada instrucción de la ruta de acceso.
- Se actualizó la subcomposición de Vector a fin de quitar verificaciones condicionales redundantes de igualdad dado que compose ya las administra.
- Los métodos de construcción complementarios de Rect dejaron de estar disponibles y se los reemplazó por constructores de funciones.
- Se actualizaron las clases Brush y los constructores de funciones con las API de @Immutable y @Stable.
- Se actualizaron las enumeraciones VertexMode para que lleven mayúsculas en la primera letra de cada palabra.
- Se actualizó el método selectPaint de DrawScope a fin de reemplazar condicionalmente los parámetros de trazo en la pintura si estos cambiaron.
- Se actualizó Size para agregar la API de desestructuración, se cambió el nombre de UnspecifiedSize por Unspecified y se quitaron métodos sin usar.
- Se movió diálogo a la IU. (I47fa6)
- Se quitó
SemanticsNodeInteraction.performPartialGesture
. Se usaSemanticsNodeInteraction.performGesture
en su lugar. (Id9b62) - Se cambió el nombre de
SemanticsNodeInteraction.getBoundsInRoot()
aSemanticsNodeInteraction.getUnclippedBoundsInRoot()
. (Icafdf, b/161336532) - Se actualizaron las APIs correspondientes a la compatibilidad de orientación de derecha a izquierda. Se agregó LayoutDirectionAmbient, que puede usarse para leer y cambiar la dirección del diseño. Se quitaron Modifier.rtl y Modifier.ltr. (I080b3)
- Se cambió el nombre de Modifier.determinateProgress a Modifier.progressSemantics. (I9c0b4)
- Se actualizó material-icons-extended con los últimos íconos agregados a Material.io/icons. (I4b1d3)
- Se requiere que el tipo T se especifique de forma explícita para transitionDefinition. (I1aded)
- Modifier.plus dejó de estar disponible; en su lugar, usa Modifier.then. "Then" tiene un indicador de orden más fuerte, a la vez que prohíbe la escritura de
Modifier.padding().background() + anotherModifier
, lo que interrumpe la cadena y es más difícil de leer. (Iedd58, b/161529964) - Se cambió el nombre de AndroidComposeTestRule a createAndroidComposeRule. (I70aaf)
- Se agregaron los SemanticsMatcher isFocused() y isNotFocused(). (I0b760)
- Se quitó
BaseGestureScope.globalBounds
, que no debería usarse a partir de pruebas. Usa coordenadas locales del nodo con el que estás interactuando en su lugar. (Ie9b08) - Se corrigió la posición de la ventana emergente en las pantallas cortadas. (Idd7dd)
- Se cambió el nombre de Modifier.drawBackground a Modifier.background. (I13677)
Versión 0.1.0-dev15
22 de julio de 2020
Lanzamiento de androidx.compose.material:material:0.1.0-dev15
, androidx.compose.material:material-icons-core:0.1.0-dev15
y androidx.compose.material:material-icons-extended:0.1.0-dev15
. La versión 0.1.0-dev15 contiene estas confirmaciones.
Actualización de dependencias
- Para usar la versión
0.1.0-dev15
de Compose, deberás actualizar tus dependencias de acuerdo con los nuevos fragmentos de código que se muestran más arriba en Cómo declarar dependencias.
Cambios en la API
La anotación del objeto
@Model
quedó obsoleta. Usa state y mutableStateOf como alternativas. Se decidió darle de baja después de un debate minucioso.Justificación
Los motivos, entre otros, son los siguientes:
- Reduce la superficie de la API y los conceptos que debemos enseñar.
- Se alinea, de manera más estrecha, con otros kits de herramientas comparables (SwiftUI, React, Flutter).
- Se puede revertir la decisión. Siempre podemos recuperar el elemento
@Model
en el futuro. - Quita el uso de caso límite y la dificultad para responder preguntas sobre la configuración del elemento
@Model
como cuestiones que necesitamos controlar. - Clases de datos, equals, hashcode del objeto
@Model
, etc. - ¿Cómo se pueden "observar" algunas propiedades y otras no?
- ¿Cómo especifico la igualdad estructural frente a la igualdad referencial para usarla en la observación?
- Reduce la característica "automática" del sistema. Disminuiría la probabilidad de que alguien suponga que el sistema es más inteligente de lo que es (es decir, que sabe cómo diferenciar una lista).
- Permite que el nivel de detalle en la observación sea más intuitivo.
- Mejora la refactorización de la variable -> propiedad sobre clase.
- Es posible que ofrezca posibilidades para realizar optimizaciones manuales y específicas del objeto State.
- Se alinea, de manera más estrecha, con el resto del ecosistema y reduce la ambigüedad hacia el estado inmutable o el "estado mutable que adoptamos".
Notas de migración
Casi todos los usos existentes del objeto
@Model
se transforman, de manera bastante trivial, de una de dos maneras. A modo de ejemplo, la siguiente clase del objeto@Model
cuenta con dos propiedades y se usa en un elemento que admite composición.@Model class Position( var x: Int, var y: Int ) @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
Alternativa 1: Usa el objeto
State<OriginalClass>
y crea copias.Este enfoque es más fácil con las clases de datos de Kotlin. En esencia, convierte todas las propiedades anteriores del objeto
var
en propiedades del elementoval
de una clase de datos, luego usa el objetostate
en lugar del elementoremember
y asigna el valor state a las copias clonadas de la clase original mediante el método de conveniencia del elementocopy(...)
de la clase datos.Es importante tener en cuenta que este enfoque solo funciona cuando las únicas transformaciones de esa clase se realizan en el mismo alcance que se crea la instancia
State
. Si la clase está mutando de manera interna fuera del alcance del uso y confías en esa observación, querrás usar el siguiente enfoque.data class Position( val x: Int, val y: Int ) @Composable fun Example() { var p by state { Position(0, 0) } PositionChanger( position=p, onXChange={ p = p.copy(x=it) } onYChange={ p = p.copy(y=it) } ) }
Alternativa 2: usa mutableStateOf y los delegados de propiedad.
Este enfoque es más fácil con los delegados de propiedad de Kotlin y la API del objeto
mutableStateOf
, que te permite crear instancias MutableState fuera de la composición. En esencia, reemplaza todas las propiedades del objetovar
de la clase original con las propiedades del elementovar
con el objetomutableStateOf
como su delegado de propiedad. Esto tiene la ventaja de que el uso de la clase no cambiará en absoluto, solo su implementación interna. Sin embargo, el comportamiento no es completamente idéntico al del ejemplo original, ya que cada propiedad se observa o se suscribe de forma individual, por lo que las recomposiciones que observas después de esta refactorización pueden ser más limitadas (lo cual es bueno).class Position(x: Int, y: Int) { var x by mutableStateOf(x) var y by mutableStateOf(y) } // source of Example is identical to original @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
(I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/143263925, b/139653744)
Se cambió el nombre de la devolución de llamada onFocusChange en los campos de texto a onFocusChanged. (Ida4a1)
Se agregó el parámetro de límites en el objeto stateDraggable para especificar límites entre los anclajes. Se usó para establecer un límite de 56 dp en el panel lateral inferior. Además, el objeto BottomDrawerLayout ahora usa una enumeración BottomDrawerState separada. (I533fa)
Se quitó el objeto Modifier.ripple que dejó de estar disponible previamente. El elemento Clickable ahora usa ripple como indicación predeterminada (si tienes un objeto MaterialTheme {} configurado en tu aplicación), por lo que, en la mayoría de los casos, puedes usar los elementos clickable y get ripple de forma gratuita. Para personalizar el parámetro de color/tamaño/límites para ripple, puedes crear manualmente un RippleIndication y pasarlo a clickable como parámetro de indicación. (I663b2, b/155375067)
Se quitó la anulación obsoleta del objeto FilledTextField que admite composición. (I7f8f8)
Se cambió el nombre del objeto Button (que contiene la configuraciones predeterminadas que usa la función Button) por ButtonConstants. (I7c5f7, b/159687878)
El espacio del contenido del botón ahora se comporta como Row (es útil cuando necesitas un ícono con texto. Consulta ejemplos en Button how to write it). (I0ff10, b/158677863)
Los objetos RadioGroup y RadioGroupItem dejaron de estar disponibles. Usa el elemento Box con los objetos Modifier.selectable, Row y Column para crear un conjunto adecuado de opciones radioButton por tu diseño. (I7f5cf, b/149528535)
Se agregó Textfield con contorno de Material. (I1a518).
androidx.ui.foundation.TextFieldValue y androidx.ui.input.EditorValue quedaron obsoletos. TextField, FilledTextField y CoreTextField que admiten composición y usan dicho tipo también quedaron obsoletos. En su lugar, usa androidx.ui.input.TextFieldValue. (I4066d, b/155211005)
El objeto TabRow.TabPosition no muestra la posición en el elemento Dp, ni en IntPx. (I34a07, b/158577776)
Se reemplazó el uso del elemento IntPx con Int. Se reemplazó el objeto IntPxPosition con IntOffset. Se reemplazó el elemento IntPxSize con IntSize. (Ib7b44)
A fin de consolidar las clases utilizadas para representar la información de tamaño, se estandarizó el uso de la clase Size en lugar de PxSize. Esto habilita las ventajas de una clase intercalada que permite empaquetar 2 valores de punto flotante para representar el ancho y la altura. (Ic0191)
El objeto Modifier.ripple dejar de estar disponible. El elemento Clickable ahora usa ripple como indicación predeterminada (si tienes un objeto MaterialTheme {} configurado en tu aplicación), por lo que, en la mayoría de los casos, puedes usar los elementos clickable y get ripple de forma gratuita. Para personalizar el parámetro de color/tamaño/límites para ripple, puedes crear manualmente un RippleIndication y pasarlo a clickable como parámetro de indicación. (I101cd, b/155375067)
Se modificó la API de Scaffold: se renombraron algunos parámetros y se agregaron otros para una mejor personalización. Se agregó un método get a los tamaños de consulta de Fab, TopBar y BottomBar. (I0e7ce)
Se agregó el componente DropdownMenu en ui-material, una implementación del menú de Material Design. (I9bb3d)
Se permite mostrar/ocultar manualmente el teclado en pantalla con SoftwareKeyboardController. (Ifb9d6, b/155427736)
Se agregó el objeto Modifier.indication al paquete de base. Úsalo para mostrar la función de presionar/arrastrar/otra indicación en tus elementos interactivos personalizados. (I8425f, b/155287131)
Se consolidaron las implementaciones de CanvasScope, por lo que ahora solo quedaron los elementos DrawScope y ContentDrawScope. Se cambió el nombre del objeto CanvasScope a DrawScope. Se actualizó DrawScope a fin de implementar la interfaz de Density y proporcionar LayoutDirection. Se borró la subclase DrawScope en ContentDrawScope. Se actualizaron Painter y PainterModifier de modo que ya no mantengan una propiedad RTL, ya que DrawScope la proporciona sin hacerlo manualmente. (I1798e)
Cambia el nombre del objeto Emphasis.emphasize() por Emphasis.applyEmphasis(). (Iceebe)
Los botones inhabilitados ahora siguen visualmente la especificación de Material Design. (I47dcb, b/155076924)
El objeto RellenedTextField obtiene acción de IME, transformación visual y compatibilidad con el tipo de teclado. (I1f9cf, b/155075201)
Agrega el parámetro strokeWidth a CircularProgressIndicator para personalizar el tamaño del trazo. Para cambiar el tamaño del trazo (altura) de un LinearProgressIndicator, puedes usar Modifier.preferredHeight() u otro modificador de tamaño. (Icea16, b/154919081)
Agrega el parámetro strokeWidth a CircularProgressIndicator para personalizar el tamaño del trazo. Para cambiar el tamaño del trazo (altura) de un LinearProgressIndicator, puedes usar Modifier.preferredHeight() u otro modificador de tamaño. (Icea16, b/154919081)
Se agregó la API para los íconos iniciales y finales en el objeto FilledTextField y el manejo del estado de error. (Ic12e0)
Se cambió el color predeterminado del BAF y el BAF extendido al objeto MaterialTheme.colors.secondary. (I3b9b9, b/154118816)
Se reemplazaron todos los usos anulables de Color en la API con valores no anulables y se usa Color.Unset en lugar de valor nulo. (Iabaa7)
Se cambió el nombre del objeto EdgeInsets a InnerPadding. Se cambió el nombre del parámetro innerPadding de los botones de Material por padding. (I66165)
El control deslizante ahora no tiene estado. Los usuarios deberán pasar y actualizar el estado por su cuenta, como con cualquier otro control. (Ia00aa)
Se quitó el objeto StaticDrawer. Si lo necesitas, usa el elemento Box con el ancho especificado para el material. (I244a7)
Se agregó la implementación de Material Design del campo de texto relleno. (Ic75cd)
Se agregó el parámetro de modificador a ListItem y se reordenaron los parámetros para ubicar el cuerpo de expresiones lambda al final. (I66e21)
Se agregó el parámetro de constructor defaultFontFamily a Typography, lo que permite especificar la familia de fuentes predeterminada que se usará para cualquier elemento TextStyles proporcionado que no tenga una familia establecida. (I89d07)
Se quitaron temporalmente tablas de datos de materiales de la superficie de la API. (Iaea61)
Se cambió el nombre de los parámetros en Divider que admite composición. (Ic4373)
elementos secundarios (Ia6d19)
Quita el objeto MaterialTheme.emphasisLevels; en su lugar, usa el elemento EmphasisAmbient.current para recuperar los niveles de énfasis. (IB5e40)
El sistema de temas de formas se actualiza según la especificación de Material Design. Ahora puedes proporcionar formas pequeñas, medianas y grandes para que las use la mayoría de los componentes. (Ifb4d1)
Se modificaron las APIs de MaterialTheme, como MaterialTheme.colors() y MaterialTheme.typography(), de modo que sean propiedades en lugar de funciones. Se quitaron los paréntesis de las llamadas existentes y no se espera ningún cambio de comportamiento. (I3565a)
Se refactorizaron las API de FloatingActionButton para aceptar lambdas que admitan composición en lugar de primitivas. Consulta muestras actualizadas para obtener información de uso. (I00622)
Se agregó el parámetro
enabled
a Checkbox, Switch y Toggleable. (I41c16)Ripple ahora es un modificador. Mientras Clickable sigue sin convertirse, el uso recomendado es
Clickable(onClick = { ... }, modifier = ripple())
(Ie5200, b/151331852, b/150060763).Se trasladaron los objetos Surface y Card de androidx.ui.material.Surface a androidx.ui.material. (I88a6d, b/150863888)
Button, FloatingActionButton y Clickable ahora tienen un parámetro
enabled
separado. Se reorganizaron algunos de los parámetros de Button o se les cambió el nombre. (I54b5a)Se cambió el nombre de Image a ImageAsset para destacar mejor la diferencia entre los datos de Image y el próximo elemento componible Image, que se utiliza para participar en el diseño y dibujar contenido. Método de extensión _Body:Created en android.graphics.Bitmap, Bitmap.asImageAsset(), a fin de crear una instancia útil del objeto ImageAsset para combinar el desarrollo tradicional de aplicaciones para Android con el framework de Compose. (Id5bbd)
Se quitó la API de la barra de notificaciones con parámetros de string a fin de usar la sobrecarga que acepta funciones lambda que admiten composición. Consulta las muestras actualizadas para obtener información sobre el uso. (I55f80)
Se refactorizó la API de pestañas para aceptar lambdas de
text
yicon
. (Ia057e)Se agregó el componente BottomNavigation; consulta los documentos y las muestras para obtener información sobre el uso. (I731a0)
Se agregaron Icon, IconButton y IconToggleButton, y se quitó AppBarIcon. Puedes reemplazar directamente los usos existentes de AppBarIcon con IconButton, y tendrán el objetivo táctil correcto. Consulta las muestras para obtener información de uso y consulta Íconos para conocer los íconos de material que puedes usar directamente con estos componentes. (I96849)
Se reemplazó ButtonStyle con funciones distintas y se quitó la sobrecarga de texto (string). Consulta muestras actualizadas para obtener información de uso. (If63ab, b/146478620, b/146482131)
Se cambió el nombre del modificador
Border
aDrawBorder
. (I8ffcc)El objeto LayoutCoordinates ya no tiene una propiedad de posición. La propiedad de posición no tiene sentido cuando se tienen en cuenta los objetos LayoutModifiers, la rotación o el escalamiento. En cambio, los desarrolladores deben usar los objetos parentCoordinates y childToLocal() para calcular la transformación de un objeto LayoutCoordinate a otro.
El objeto LayoutCoordinates usa el elemento IntPxSize para la propiedad de tamaño, en lugar de PxSize. Se usan tamaños de píxeles enteros para los diseños, por lo que todos los tamaños de diseño deberían usar números enteros y no valores de punto flotante. (I9367b)
Se realizaron cambios rotundos en la API de ambients. Consulta el registro y la documentación de
Ambient<T>
para obtener más detalles. (I4c7ee, b/143769776)Se agregó el componente de material de Scaffold. Se implementó el objeto Scaffold. (I7731b)
Se reemplazó DrawBorder con el modificador Border. (Id335a)
Correcciones de errores
- El objeto FocusModifier dejó de estar disponible y se reemplazó por los elementos Modifier.focus, Modifier.focusRequester y Modifier.focusObserver. FocusState y FocusDetailedState quedaron obsoletos, y se los reemplazó por FocusState2 (I46919, b/160822875, b/160922136).
- VerticalScroller y HorizontalScroller ya no están disponibles. Usa los elementos ScrollableColumn y ScrollableRow para la experiencia incorporada con los parámetros y el comportamiento de Column/Row, o los objetos Modifier.verticalScroll y Modifier.horizontalScroll en tu propio elemento. Asimismo, ScrollerPosition quedó obsoleto y se reemplazó con ScrollState'. (I400ce, b/157225838, b/149460415, b/154105299)
- Se rediseñaron las API de Modifier.draggable y Modifier.scrollable. Se eliminó el objeto DragDirection y se reemplazó por el elemento Orientation. Se simplificó el objeto State que se requiere para el elemento scrollable. Se cambió el nombre de ScollableState a ScrollableController. (Iab63c, b/149460415)
- Se cambió el nombre de
runOnIdleCompose
arunOnIdle
. (I83607) - Las propiedades semánticas de valor único ahora usan un estilo de llamada. Por ejemplo, "semantics { hidden = true }" ahora se escribe como: "semantics { hidden() }". (Ic1afd, b/145951226, b/145955412)
- Se cambió el nombre de varias API de prueba con el fin de que sean más intuitivas. Se cambió el nombre de todas las API findXYZ por el de onNodeXYZ. Se cambió el nombre de todas las APIs doXYZ por el de performXYZ (I7f164)
- Se modificó la API de Transition para mostrar un elemento TransitionState en lugar de pasar el objeto TransitionState a los elementos secundarios. Esto hace que la API sea más coherente con las API de animate(). (I24e38)
- Se agregó una clase de unidad IntBounds, que representa los límites de píxeles enteros del diseño. Se actualizó la API de PopupPositionProvider para usarla. (I0d8d0, b/159596546)
- Se agregó una nueva marca opcional useUnmergedTree a fin de probar los buscadores. (I2ce48)
- Se quitaron las API de prueba de tamaño obsoletas. (Iba0a0)
- Se quitó la clase intercalada Shader que une la clase de espera NativeShader. Se cambió el nombre del objeto NativeShade a Shader. La clase intercalada Shader unida no agregó ningún valor a la superficie de la API y era una clase intercalada, así que usa la clase NativeShader directamente. (I25e4d)
- Los objetos Popups, Dialogs y Menus ahora heredan el elemento MaterialTheme contextual (Ia3665, b/156527485).
- El elemento Material DropdownMenu ahora es desplazable. (Ide699)
- Del bloque de medición de la función Layout(), se quitó el parámetro de dirección del diseño. Sin embargo, la dirección de diseño está disponible dentro de la devolución de llamada a través del objeto de alcance de medición. (Ic7d9d)
- Usa el objeto AnimationSpec en lugar del elemento AnimationBuilder en las API de nivel superior a fin de aclarar el concepto de especificación de animación estática. Mejora el DSL de transición mediante la eliminación del requisito lambda para crear el objeto AnimationSpecs, como tween, spring. Estas toman parámetros de constructor en forma directa. -Mejora la facilidad de uso general del elemento AnimationSpec para abrir constructores en lugar de depender de compiladores. -Cambia la duración y la demora de los objetos KeyFrames y Tween al elemento Int. De esta manera, se eliminan las conversiones de tipos y los métodos de sobrecarga innecesarios (para admitir tanto los objetos Long como Int). (Ica0b4)
- El objeto Switch ahora aparece en un estado inhabilitado cuando se configura el elemento
enabled
como falso. (If4624, b/155941869, b/159331694) - Se cambió el nombre del objeto Modifier.tag a Modifier.layoutId para evitar confusiones con el elemento Modifier.testTag. (I995f0)
- El objeto Placeable#get(AlignmentLine) ya no muestra las posiciones Int de la línea de alineación como nulas. Si falta la línea de alineación consultada, se mostrará el objeto AlignmentLine.Unspecified. (I896c5, b/158134875)
Se refactorizó la clase Radius para que sea una clase intercalada. Se quitaron los métodos de creación complementarios para que el radio a lo largo del eje "y" coincida con el parámetro obligatorio del radio del eje "x" en el constructor de funciones con el parámetro predeterminado.
Se actualizó DrawScope.drawRoundRect para que admita un solo parámetro Radius en lugar de 2 números de punto flotante para el radio en los ejes x e y (I46d1b).
A fin de consolidar las clases utilizadas para representar la información de posicionamiento, se estandarizó el uso de la clase Offset en lugar de PxPosition. Esto habilita las ventajas de una clase intercalada que permite empaquetar 2 valores de punto flotante para representar los desplazamientos x e y. (I3ad98)
Se reemplazó el uso de la clase Px en varias clases de Compose como parte de un gran esfuerzo de refactorización para depender solo de los tipos Dp y primitivos para los parámetros de píxeles. Se borró por completo la clase Px. (I3ff33)
El componente Toggleable dejó de estar disponible. En su lugar, usa Modifier.toggleable. (I35220, b/157642842)
Se reemplazó el uso de la clase Px en varias clases de Compose como parte de un gran esfuerzo de refactorización para depender solo de los tipos Dp y primitivos para los parámetros de píxeles. (I086f4)
Se reemplazó el uso de la clase Px en varias clases de Compose como parte de un gran esfuerzo de refactorización para depender solo de los tipos Dp y primitivos para los parámetros de píxeles. (Id3434)
Se reemplazó el uso de la clase Px en varias clases de Compose como parte de un gran esfuerzo de refactorización para depender solo de los tipos Dp y primitivos para los parámetros de píxeles. (I97a5a)
Se corrigió el objeto onClick que no se podía invocar para el elemento DropdonMenuItems. (I3998b, b/157673259)
El objeto MutuallyExclusiveSetItem dejó de estar disponible. En su lugar, usa Modifier.selectable. (I02b47, b/157642842)
El componente TestTag dejó de estar disponible. En su lugar, usa Modifier.testTag. (If5110, b/157173105)
El cursor TextField tiene una animación intermitente (Id10a7).
Se reemplazó el uso de la clase Px en varias clases de Compose como parte de un gran esfuerzo de refactorización para depender solo de los tipos Dp y primitivos para los parámetros de píxeles. (I19d02)
El objeto VerticalScroller ahora proporciona el elemento Column listo para usar. El objeto HorizontalScroller ahora proporciona el elemento Row listo para usar. (Ieca5d, b/157020670)
Se reemplazó el uso de la clase Px en varias clases de Compose como parte de un gran esfuerzo de refactorización para depender solo de los tipos Dp y primitivos para los parámetros de píxeles. (Iede0b)
Modifier.semantics volvió a estar disponible a fin de permitir el uso de componentes de alto nivel. (I4cfdc)
Se modificó la API de los modificadores DrawLayer: se cambió el nombre del objeto outlineShape a shape y tiene el valor predeterminado de RectangleShape, ahora sin valores anulables. Se cambió el nombre del elemento clipToOutline a clip; se quitó el objeto clipToBounds, ya que es igual que clip == true con RectangleShape. (I7ef11, b/155075735)
Se actualizaron las API de Compose de nivel superior que exponen un lienzo para mostrar el objeto CanvasScope en su lugar. Esto elimina la necesidad de que los consumidores mantengan sus propios objetos Paint. Para los usuarios que aún necesitan acceso a Canvas, pueden usar el método de extensión drawCanvas que proporciona una devolución de llamada a fin de emitir comandos de dibujo con el Canvas subyacente (I80afd)
El elemento que admite composición AlignmentLineOffset dejó de estar disponible. En su lugar, usa el modificador relativePaddingFrom(). Se quitó el elemento componible CenterAlignmentLine. (I60107)
Se modificó la API de WithConstraints con expresión lambda final. Ahora, en lugar de dos parámetros, tiene un alcance de receptor que, además de las restricciones y layoutDirection, brinda propiedades minWidth, maxWidth, minHeight y maxHeight en Dp. (I91b9a, b/149979702)
Se agregó el modificador de diseño defaultMinSizeConstraints, que establece restricciones de tamaño en el diseño unido solo cuando las restricciones entrantes correspondientes no están especificadas (0 como restricción mínima e infinito como máximas). (I311ea, b/150460257)
Se quitó el objeto FocusManagerAmbient. Usa el elemento FocusModifier.requestFocus para obtener enfoque. (Ic4826)
Se creó la API de CanvasScope que une un objeto de Canvas a fin de exponer una superficie de API de dibujo declarativa y sin estado. Las transformaciones se contienen dentro de su propio alcance de receptor, y la información de tamaño también se define en los límites de inserción correspondientes. No requiere que un consumidor mantenga su propio objeto de estado de Paint para configurar las operaciones de dibujo.
Se agregó CanvasScopeSample y se actualizó la app de demostración a fin de incluir una demostración de gráficos declarativos. (Ifd86d)
Se agregó personalización del color del cursor a TextField. (I6e33f)
El TextFieldValue usado con TextField ahora puede ser una recreación de una actividad que permanece vigente cuando se usa de la siguiente manera:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
. (I5c3ce, b/155075724)Se cambió el nombre del objeto LayoutModifier2 a LayoutModifier. (Id29f3)
Se quitó la interfaz de LayoutModifier obsoleta. (I2a9d6)
Se reemplazó el parámetro CoreTextField/TextField focusIdentifier con el objeto FocusNode a fin de integrarlo con el subsistema de enfoque. (I7ea48)
Las funciones de medición intrínseca en los objetos Layout y LayoutModifier2 ahora tienen un receptor IntrinsicMeasureScope que proporciona una API de consulta intrínseca con dirección de diseño propagada de forma implícita (Id9945)
Se agregó el elemento Modifier.zIndex() para controlar el orden de dibujo de los elementos secundarios dentro del mismo diseño de nivel superior. Se cambió el nombre de la propiedad de elevación de DrawLayerModifier por shadowElevation, y esta propiedad ya no controla el orden del dibujo. Se cambió el orden de los parámetros de DrawShadow: el primer parámetro ahora es elevation y el segundo es shape, con una configuración RectangleShape predeterminada. (I20150, b/152417501)
Se trasladó el objeto RectangleShape de androidx.ui.foundación.shape.* al elemento androidx.ui.graphics.* (Ia74d5, b/154507984)
Actualización de la API de TextField: se combinaron las devoluciones de llamada onFocus y onBlur en una sola devolución de llamada de onFocusChange con un parámetro booleano. (I66cd3)
Se agregaron los parámetros verticalGravity y horizontalGravity a los elementos Row y Column, respectivamente (I7dc5a)
Se actualizaron wrapContentWidth y wrapContentHeight para incluir Alignment vertical u horizontal en lugar de cualquier alineación. Se actualizó el modificador de gravedad para aceptar el elemento Alignment vertical u horizontal. Se actualizaron los objetos Row, Column y Stack para admitir el elementos Alignments continuos personalizados. (Ib0728)
Se creó la API de PixelMap para admitir consultas de información de píxeles desde un elemento ImageAsset. (I69ad6)
Se quitó ProvideContentColor; en su lugar, usa directamente ContentColorAmbient con
Providers
. (Iee942)Se cambió el nombre del módulo ui-text-compose a ui-text. El objeto ui-text ahora contiene los elementos CoreText y CoreTextField que admiten composición (IB7d47).
Se cambió el nombre del módulo ui-text a ui-text-core. (I57dec)
Se trasladaron los elementos componibles ui-framework/CoreText y CoreTextField al objeto ui-text-compose. Te recomendamos incluir el objeto ui-text-compose en tu proyecto. (I32042)
Mejora la API de DrawModifier:
- Se creó el alcance del receptor para el objeto draw() ContentDrawScope.
- Se quitaron todos los parámetros de draw().
- El objeto DrawScope tiene la misma interfaz que el elemento CanvasScope anterior.
- ContentDrawScope tiene el método drawContent() (Ibaced, b/152919067).
Los objetos
runOnIdleCompose
yrunOnUiThread
ahora son funciones globales en lugar de ser métodos en ComposeTestRule (Icbe8f).Los operadores delegados de la propiedad [Mutable]State se movieron a extensiones a fin de admitir optimizaciones delegadas de propiedad de Kotlin 1.4. Los llamadres deben agregar importaciones para continuar usando
by state { ... }
oby mutableStateOf(...)
. (I5312c)Se agregaron los objetos positionInParent y boundsInParent para el elemento LayoutCoordinates. (Icacdd, b/152735784)
El objeto ColoredRect dejó de estar disponible. En su lugar, usa Box(Modifier.preferredSize(width, altura).drawBackground(color)). (I499fa, b/152753731)
Se cambió el nombre del objeto LayoutResult a MeasureResult. (Id8c68)
Se agregó LayoutModifier2, una nueva API para definir modificadores de diseño; LayoutModifier quedó obsoleto (If32ac).
Se reemplazaron el modificador y el operador por funciones de extensión (I225e4)
Se movió el elemento arrastrable al modificador. (Id9b16, b/151959544)
El elemento componible ParentData dejó de estar disponible. Debes crear un modificador que implemente la interfaz ParentDataModifier o usar el modificador LayoutTag si solo necesitas etiquetar elementos secundarios de diseño para reconocerlos dentro del bloque de medición. (I51368, b/150953183)
El elemento Center que admite composición quedó obsoleto. Debe reemplazarse con el modificador LayoutSize.Fill + LayoutAlign.Center o con una de las funciones que admiten composición Box o Stack con los modificadores adecuados aplicados (Idf5e0).
Se agregó la API de VectorPainter para reemplazar la API de subcomposición existente por gráficos vectoriales. El resultado de la subcomposición es un objeto VectorPainter, en lugar de un elemento DrawModifier. El objeto DrawVector anterior que admite composición dejó de estar disponible y se reemplazó por el elemento VectorPainter.
Se cambió el nombre de la API de Image(Painter) a PaintBox(Painter) Created Vector componible y que se comporta como el elemento Image componible, pero con un parámetro VectorAsset en lugar de un objeto ImageAsset (I9af9a, b/149030271).
Se cambió el nombre de LayoutFlexible por LayoutWeight. Se cambió el nombre del parámetro estricto para rellenar. (If4738)
Se quitó RepaintBoundary y se reemplazó por DrawLayerModifier. (I00aa4)
Se cambió el comportamiento de DrawVector, que dejó de ser una función de componibilidad normal para mostrar un modificador drawVector() que dibujará el vector como fondo de un diseño (I7b8e0)
Se reemplazó la función de componibilidad Opacity por el modificador drawOpacity (I5fb62)
Reemplaza la función Clips que admite composición con el modificador drawCli (). El objeto DrawClipToBounds es un modificador conveniente para usar cuando solo necesitas recortar los límites de la capa con una forma rectangular. (If28eb)
Se reemplazó la función de componibilidad DrawShadow con el modificador drawShadow(). Las sombras ahora se dibujan como parte de LayerModifier. (I0317a)
Se agregó el objeto LayerModifier, un modificador que permite agregar un elemento RenderNode a una capa. Permite configurar el recorte, la opacidad, la rotación, el escalamiento y las sombras. Reemplazará al objeto RepaintBoundary. (I7100d, b/150774014)
Se trasladó el objeto androidx.compose.ViewComposer al elemento androidx.ui.node.UiComposer. Se quitó el parámetro androidx.compose.Emittable. Era redundante con el objeto ComponentNode. Se quitó el elemento androidx.compose.ViewAdapters. Ya no es un caso práctico admitido. Compose.composeInto quedó obsoleto. En su lugar, usa los elementos
setContent
osetViewContent
. El componente Compose.disposeComposition dejó de estar disponible. En su lugar, usa el métododispose
en elComposition
que muestrasetContent
. Se movió androidx.compose.Compose.subcomposeInto a androidx.ui.core.subcomposeInto. Se cambió el nombre de ComponentNode#emitInsertAt a ComponentNode#insertAt, el de ComponentNode#emitRemoveAt a ComponentNode#removeAt y el de ComponentNode#emitMode a ComponentNode#move. (Idef00)Se creó un elemento Image que admite composición para controlar el tamaño y el diseño, además de dibujar un ImageAsset determinado en la pantalla. Este elemento también admite el dibujo de cualquier instancia arbitraria de Painter que respete su tamaño intrínseco, así como un tamaño fijo determinado o un tamaño mínimo. (Ibcc8f)
La función Wrap que admite composición dejó de estar disponible. Se puede reemplazar con el modificador LayoutAlign o con el elemento componible Stack (Ib237f).
WithConstraints tiene el parámetro LayoutDirection (I6d6f7)
Se permitió que la dirección del diseño se propagara desde el nodo de diseño de nivel superior hasta los secundarios. Se agregó un modificador de dirección de diseño. (I3d955)
- .
El componente de pila admite la dirección de derecha a izquierda. (Ic9e00)
Se quitó el componible DrawShape. En su lugar, usa el modificador DrawBackground. (I7ceb2)
Compatibilidad con lectura de derecha a izquierda en el modificador LayoutPadding. (I9e8da)
Se agregó AdapterList, un componente de lista de desplazamiento que solo compone y presenta los elementos visibles. Según los problemas que se conocen, solo es vertical y no maneja todos los casos de cambios en sus elementos secundarios. (Ib351b)
Se actualizó la marca
ComposeFlags.COMPOSER_PARAM
para que seatrue
, lo que cambiará la estrategia de generación de código para el complemento de composición. En un nivel alto, esto provoca que las funciones @Composable se generen con un parámetro sintético adicional, que se pasa a través de llamadas @Composable posteriores para que el entorno de ejecución administre la ejecución correctamente. Este es un cambio rotundo el objeto binario; sin embargo, debería preservar la compatibilidad a nivel de la fuente en todo uso sancionado de la composición. (I7971c)Se agregó el componente Canvas. Este elemento que admite composición ocupa cierto tamaño (proporcionado por el usuario) y te permite dibujar con CanvasScope. (I0d622)
Se combinaron Density y DensityScope en una sola interfaz. En lugar de ambientDensity(), ahora puedes usar DensityAmbient.current. En lugar de withDensity(density), usa with(density). (I11cb1)
Se modificó el objeto LayoutCoordinates para que el elemento providedAlignmentLines sea un conjunto en lugar de un mapa y para que el objeto LayoutCoordinates implemente el operador get() a fin de recuperar un valor. Esto permite que los modificadores cambien con más facilidad uno o más valores del conjunto, sin que se cree una colección nueva para cada modificador. (I0245a)
Los desplazadores ahora muestran el comportamiento nativo de Android. (I922af, b/147493715)
Mejoras en la superficie de la API de Constraints (I0fd15)