Base de Compose
androidx.compose.foundation
androidx.compose.foundation.layout
androidx.compose.foundation.gestures
androidx.compose.foundation.selection
androidx.compose.foundation.lazy
androidx.compose.foundation.interaction
androidx.compose.foundation.text
(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 |
---|---|---|---|---|
2 de julio de 2025 | 1.8.3 | - | 1.9.0-beta02 | - |
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.foundation:foundation:1.8.3" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.8.3") } 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.9
Versión 1.9.0-beta02
2 de julio de 2025
Lanzamiento de androidx.compose.foundation:foundation-*:1.9.0-beta02
. La versión 1.9.0-beta02 contiene estas confirmaciones.
Nuevas funciones
- Se agregó compatibilidad con elementos inteligentes en el menú contextual y la barra de herramientas de selección.
Cambios en la API
- Se corrigió un error por el que algunos teclados de hardware o controles remotos de TV no podían mover el cursor en el nuevo
TextFields
con las teclas de dirección y, en su lugar, cambiaban el enfoque a otro elemento componible. Se agregóComposeFoundationFlag.isTextFieldDpadNavigationFixEnabled
para poder inhabilitar esta corrección por el momento si causa un comportamiento no deseado de forma irrecuperable. (Ie1922)
Correcciones de errores
- Se corrigió un problema por el que los encabezados fijos no se mantenían si había un elemento fijado. (I9198d, b/385006133)
TextObfuscationMode.RevealLastTyped
ahora sigue el parámetro de configuración del sistema “TEXT_SHOW_PASSWORD”. (I41c0c)- Se corrigió un error por el que
BasicTextField
mostraba erróneamente una advertencia de “Se pegó del portapapeles” cuando se abría la barra de herramientas de texto por primera vez. (I5fda2)
Versión 1.9.0-beta01
18 de junio de 2025
Lanzamiento de androidx.compose.foundation:foundation-*:1.9.0-beta01
. La versión 1.9.0-beta01 contiene estas confirmaciones.
Cambios rotundos
- Los nodos de modificador
background
yborder
ahora implementanSemanticsModifierNode
. Esto puede generar que se agreguen nuevosSemanticsNodes
al árbol semántico y, por lo tanto, provocar fallas en las pruebas que hacen suposiciones sobre la estructura del árbol semántico. Por ejemplo, las pruebas que usanonChild
,onParent
,onSibling
y otros métodos similares para realizar aserciones pueden fallar si se agrega un nodo nuevo entre los nodos actual y de destino. La forma preferida de corregir estos errores es agregar untestTag
directamente al nodo de destino. Otro enfoque es usar un comparador más flexible, comoonNode(hasAnyAncestor(hasText(“ancestor”)) and hasText(“target”))
. (I638b5)
Cambios en la API
- Se cambió el nombre de
Modifier.addTextContextMenuComponents
porappendTextContextMenuComponents
. (I4c43f) - Se quitó
AnnotatedOutputTransformation
y se trasladaron las funcionesaddStyle
aTextFieldBuffer
.addStyle
solo se puede llamar desdeOutputTransformation
. (I9930a, b/417991824) - Se reescribió Clickable para que no use la entrada del puntero de suspensión como optimización. Esta función se habilita con una marca (puedes inhabilitarla si encuentras un error en la nueva implementación):
ComposeFoundationFlags.isNonSuspendingPointerInputInClickableEnabled
. (I85b65) - Se introdujo
isFlingCancellationWithNestedScrollFixEnabled
para corregir un problema con la propagación de movimientos rápidos en el desplazamiento anidado. En esta CL, restablecemos el comportamiento de continuación de desplazamiento rápido que se quitó en aosp/3260391. De todos modos, cancelaremos la animación de lanzamiento en caso de que se quite el elemento secundario de la composición. (I467f4, b/405910180, b/419049142, b/416784125) WindowInsetsRulers
: Se cambiórulersIgnoringVisibility
al valor máximo. Se cambiógetDisplayCutoutBounds()
para que sea una función de extensión dePlacementScope
. Se cambióWindowInsetsAnimationProperties
porWindowInsetsAnimation
ygetAnimationProperties()
porgetAnimation()
. (I3816f)- Se cambió
InsetsRulers
para que esté en código común con el nombreWindowInsetsRulers
. Se simplificó la API para que todas las inserciones seanWindowInsetsRulers
. Se extrajeron las propiedades de animación que no son de reglas a una claseAnimationProperties
.WindowInsetsRulers.innermostOf()
se puede usar para combinar variosWindowInsetsRulers
. (I2f0c6, b/415012444)
Correcciones de errores
- Se volvió a agregar el uso de
scrollAnimationSpec
enContentInViewNode
. El comportamiento se quitó durante la baja descrollAnimationSpec
, lo que provocó que se interrumpieran los casos de uso. (I1436a, b/403301605)
Versión 1.9.0-alpha04
4 de junio de 2025
Lanzamiento de androidx.compose.foundation:foundation-*:1.9.0-alpha04
. La versión 1.9.0-alpha04 contiene estas confirmaciones.
Cambios en la API
PrefetchScheduler
y la personalización dejaron de estar disponibles en favor de la implementación interna que hace todo el trabajo automáticamente. (I3a9a6, b/420551535)- Se actualizó
Scrollable2DState
para usar un desplazamiento en el métodocanScroll
en lugar de un ángulo. (I28694, b/417268474) - Se reemplazó
addAnnotation
enAnnotatedOutputTransformation
poraddStyle
. (I91c6f, b/417991824) - Se estabilizó
LazyLayout
. (If5db4) - Se estabilizó un constructor vacío para
LazyLayoutPrefetchState
y su método de programaciónschedulePrecomposition
yschedulePrecompositionAndPremeasure
. (I4362f, b/252853717) - Se introdujo
ProcessTextKey
en Android, que se usa para los elementos del menú contextual que se agregan para las acciones de intentPROCESS_TEXT
. (If0ac4) - Se hicieron públicas las APIs del menú contextual. Se expusieron
Modifier.addTextContextMenuComponents
yModifier.filterTextContextMenuComponents
para agregar y quitar elementos en el menú contextual. También se hicieron públicas las siguientes APIs elementales para que se pueda compilar un menú contextual personalizado:TextContextMenuProvider
TextContextMenuDataProvider
TextContextMenuData
TextContextMenuComponent
LocalTextContextMenuDropdownProvider
LocalTextContextMenuToolbarProvider
(I1b7b0)
- Se hizo que
LazyLayoutItemProvider
sea estable (Icce09, b/261565751). - Se introdujeron funciones de selección inteligente de Android que se pueden habilitar o inhabilitar a través de
ComposeFoundationFlags.isSmartSelectionEnabled
. También expuso uncompositionLocal
LocalTextClassifierCoroutineContext
estático que se puede usar para especificar elCoroutineContext
en el que se inicia el trabajoTextClassification
. (I1dbaa, b/139321320)
Versión 1.9.0-alpha03
20 de mayo de 2025
Lanzamiento de androidx.compose.foundation:foundation-*:1.9.0-alpha03
. La versión 1.9.0-alpha03 contiene estas confirmaciones.
Cambios en la API
- Se agregó
AnnotatedOutputTransformation
, que proporciona una forma de agregar anotaciones aTextField
antes de la renderización. (Ibc6f0, b/389978748) - Se introduce
LazyLayoutMeasurePolicy
y se hace queLazyLayoutMeasureScope
sea estable. (I8c5df, b/252853717) - Ahora,
BasicSecureTextField
eleva el ScrollState de suBasicTextField
interno. (I6e576) - Se introdujeron los modificadores
Modifier.onFirstVisible
yModifier.onVisibilityChanged
, que son modificadores de alto nivel creados sobreModifier.onLayoutRectChanged
. Estos modificadores se compilan específicamente para controlar muchos requisitos comunes de las aplicaciones, como el registro de impresiones, la reproducción automática de videos, etcétera. Se compilaron teniendo en cuenta el rendimiento, de modo que se puedan usar en situaciones críticas basadas en listas sin riesgo de sacrificar el rendimiento del desplazamiento. Además de estas APIs de modificadores, se agregaron APIs adicionales aRelativeLayoutBounds
para admitir estos casos de uso y facilitar a los desarrolladores la creación de modificadores personalizados similares que se adapten exactamente a su caso de uso. (I759b8) - Se introdujo una sobrecarga de
detectDragGestures
que tiene control de bloqueo de orientación y holgura táctil. (Iadb0d) - Se introdujeron las APIs de
Modifier.scrollable2D
,Scrollable2DState
y complementarias para la creación de estados. También se introdujeron funciones de extensión de desplazamiento comunes. (Ic61c8, b/214410040) - Los valores de color de 64 bits de Compose no son directamente comparables con los valores
ColorLongs
de Android porque los IDs de espacio de color están desordenados para algunos espacios de color. Para convertir entre espacios de color de Android, se agregaron dos APIs nuevas:toColorLong()
yfromColorLong()
. (I36899)
Correcciones de errores
- El texto copiado de varios elementos componibles de Text en un
SelectionContainer
ahora tendrá un separador de líneas\n
agregado entre el texto proveniente de los elementos componibles de Text separados. (I25332, b/285036739)
Versión 1.9.0-alpha02
7 de mayo de 2025
Lanzamiento de androidx.compose.foundation:foundation-*:1.9.0-alpha02
. La versión 1.9.0-alpha02 contiene estas confirmaciones.
Cambios en la API
- Se corrigió la forma en que se agregan los cambios de entrada del puntero al
VelocityTracker
enDragGestureNode
, lo que se puede controlar con la nueva marcaisOffsetPositionBeforeAddingToVelocityTrackerEnabled
. (Ic7992, b/292556787, b/236451818) - Hacer público
await[Vertical/Horizontal]PointerSlopOrCancellation
(I6968b, b/298903681) - El valor predeterminado de
AbstractComposeView.consumeWindowInsets
ahora es false.WindowInsets
se ajustará automáticamente para el tamaño y la posición del elemento secundario cuando se establezca en falso, por lo que ya no es necesario establecerlo como verdadero de forma predeterminada. Se corrigió el problema por el que las Views secundarias no recibían actualizaciones deWindowInsets
de forma predeterminada. Los desarrolladores pueden inhabilitar la actualización cambiando elComposeFoundationLayout.isWindowInsetsDefaultPassThroughEnabled
experimental a verdadero o, preferentemente, estableciendoAbstractComposeView.consumeWindowInsets
como verdadero en todas las instancias de la vista de Compose. (I6fa0a, b/411868840)
Contribución externa
- Se corrigió una falla de Pager con valores extremadamente grandes de beyondViewportPageCount (Idb2db).
Versión 1.9.0-alpha01
23 de abril de 2025
Lanzamiento de androidx.compose.foundation:foundation-*:1.9.0-alpha01
. La versión 1.9.0-alpha01 contiene estas confirmaciones.
Cambios en el comportamiento
Las verificaciones de Lint que se incluyen en Compose ahora requieren una versión mínima del AGP de 8.8.2. Si no puedes actualizar el AGP, puedes actualizar Lint por separado usando
android.experimental.lint.version=8.8.2
(o una versión más reciente) en tugradle.properties
. Para ejecutar comprobaciones de lint de Compose dentro del IDE, se requiere Android Studio Ladybug o una versión posterior.Cambio rotundo: Las sobrecargas de
clickable
,combinedClickable
,selectable
,toggleable
ytriStateToggleable
sin un parámetro de Indication ahora solo admiten instancias deIndicationNodeFactory
proporcionadas conLocalIndication
. Este cambio se aplicará cuando vuelvas a compilar tus usos de estos modificadores con esta versión de Compose. Las dependencias binarias o transitivas no se ven afectadas. Si proporcionas una implementación de Indicación obsoleta aLocalIndication
y usas estas APIs, se producirá una falla durante el tiempo de ejecución. Este cambio de comportamiento es necesario para mejorar el rendimiento y permitir que las funciones de componibilidad que usan estos modificadores se omitan durante la recomposición. Puedes usarComposeFoundationFlags.isNonComposedClickableEnabled=false
para inhabilitar temporalmente este cambio de comportamiento y permitir la actualización de Compose sin que se bloquee esta migración. Esta marca se quitará después de una versión estable. Para resolver el problema, migra cualquier implementación de Indication obsoleta para que useIndicationNodeFactory
en su lugar. También puedes usar las sobrecargas con un parámetro Indication explícito. Estas sobrecargas seguirán admitiendo instancias de Indication que no seanIndicationNodeFactory
, aunque no se recomienda por motivos de rendimiento. (I6bcdc, b/316914333)
Cambios en la API
- Se introdujo una API para crear listas personalizadas con viñetas a través de
AnnotatedString
(I1d066, b/383269496, b/139326648). - Permite que la función Redactar active
ViewTreeObserver.OnScrollChanged
. Este comportamiento se introduce con la marcaisOnScrollChangedCallbackEnabled
. También presentamos una función de extensión deDelegatableNode dispatchOnScrollChanged
. (I34b9d, b/238109286) - Los proyectos lanzados con Kotlin 2.0 requieren que se consuma KGP 2.0.0 o una versión posterior (Idb6b5).
- Se agregó compatibilidad con la verificación de lint para
TextFieldState
para garantizar que se recuerde dentro de la composición. En su lugar, usarememberTextFieldState
. (I53d74) - Se agregó compatibilidad con la verificación de lint para
FocusRequester
para garantizar que se recuerde dentro de la composición (I6bf91). - Se agregó compatibilidad con la verificación de lint para
BringIntoViewRequester
para garantizar que se recuerde dentro de la composición. (Ibfba6) - Se introdujeron los parámetros de configuración para las llamadas de
schedulePrefetch
en las estrategias de cuadrículas y listas para alinearse con las capacidades deLazyListPrefetchState
de proporcionar información de tamaño y de índice. (Iad80c) - Cambio rotundo: Las sobrecargas de
clickable
,combinedClickable
,selectable
,toggleable
ytriStateToggleable
sin un parámetro de Indication ahora solo admiten instancias deIndicationNodeFactory
proporcionadas conLocalIndication
. Este cambio se aplicará cuando vuelvas a compilar tus usos de estos modificadores con esta versión de Compose. Las dependencias binarias o transitivas no se ven afectadas. Si proporcionas una implementación de Indicación obsoleta aLocalIndication
y usas estas APIs, se producirá una falla durante el tiempo de ejecución. Este cambio de comportamiento es necesario para mejorar el rendimiento y permitir que las funciones de componibilidad que usan estos modificadores se omitan durante la recomposición. Puedes usarComposeFoundationFlags.isNonComposedClickableEnabled=false
para inhabilitar temporalmente este cambio de comportamiento y permitir la actualización de Compose sin que se bloquee esta migración. Esta marca se quitará después de una versión estable. Para resolver el problema, migra cualquier implementación de Indication obsoleta para que useIndicationNodeFactory
en su lugar. También puedes usar las sobrecargas con un parámetro Indication explícito. Estas sobrecargas seguirán admitiendo instancias de Indication que no seanIndicationNodeFactory
, aunque no se recomienda por motivos de rendimiento. (I6bcdc, b/316914333) - Se introdujo una marca para controlar el comportamiento de precarga anidada automática:
isAutomaticNestedPrefetchEnabled
(I8d448) - Se introduce una sobrecarga para
LazyGridState
yrememberLazyGridState
que toma unLazyLayoutCacheWindow
. (I51151) - Se agregaron reglas para las inserciones de ventana. Agrega
DerivedRuler
para permitir que se calcule un Ruler a partir de otro Ruler. ModificaPlacmentScope
para implementar Density. (I658bc, b/359260964) - Se agregó una función de fábrica
WindowInsets()
sin argumentos para crear fácilmenteWindowInsets
vacíos. (I65f62, b/395311689) - Se agregó
PaddingValues.Zero
para unPaddingValues
vacío. (If193e, b/386255688)
Correcciones de errores
- La sobrecarga
state
deBasicTextField
mantendrá el cursor desplazado a la vista cuando cambie su tamaño. (I0eb41, b/406187741) - Se actualizaron las APIs de
onVisibleItemsUpdated
enLazyListPrefetchStrategy
yLazyGridPrefetchStrategy
para informar sobre el estado inicial. (If2cfa)
Versión 1.8
Versión 1.8.3
18 de junio de 2025
Lanzamiento de androidx.compose.foundation:foundation-*:1.8.3
. La versión 1.8.3 contiene estas confirmaciones.
Versión 1.8.2
20 de mayo de 2025
Lanzamiento de androidx.compose.foundation:foundation-*:1.8.2
. La versión 1.8.2 contiene estas confirmaciones.
Correcciones de errores
- Se introdujo una corrección que evita que el cálculo de la cantidad de elementos que se deben cargar para la búsqueda enfocada cause una división por cero. Se aplicó la verificación a todos los diseños que usan
LazyLayoutBeyondBoundsState
. (8e6dc8)
Versión 1.8.1
7 de mayo de 2025
Lanzamiento de androidx.compose.foundation:foundation-*:1.8.1
. La versión 1.8.1 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un error en
BasicText
yTextAutoSize
en el que el uso deTextOverflow.Ellipsize
generaba texto más pequeño de lo óptimo. (I1e1d8, b/396582066) - Se corrigió un error en
BasicTextField
que provocaba fallas varias cuandoTextFieldDecorator
omitía la llamada ainnerTextField
. (I2638c), b/308398612 - Se corrigió un error en
TextField
que causaba que la barra de herramientas de texto y los controladores de selección desaparecieran por completo cuando se cambiaba la instancia deTextFieldState
. (I8068a), b/390477786 - Se corrigió un error en
BasicText
en el que cambiar la restricción de ancho mínimo no actualizaba la ubicación del texto cuandotextAlign
se establecía en un valor no predeterminado. (I77a96), b/406305552
Versión 1.8.0
23 de abril de 2025
Lanzamiento de androidx.compose.foundation:foundation-*:1.8.0
. La versión 1.8.0 contiene estas confirmaciones.
Versión 1.8.0-rc03
9 de abril de 2025
Lanzamiento de androidx.compose.foundation:foundation-*:1.8.0-rc03
. La versión 1.8.0-rc03 contiene estas confirmaciones.
Versión 1.8.0-rc02
26 de marzo de 2025
Lanzamiento de androidx.compose.foundation:foundation-*:1.8.0-rc02
. La versión 1.8.0-rc02 contiene estas confirmaciones.
Versión 1.8.0-rc01
12 de marzo de 2025
Lanzamiento de androidx.compose.foundation:foundation-*:1.8.0-rc01
. La versión 1.8.0-rc01 contiene estas confirmaciones.
Versión 1.8.0-beta03
26 de febrero de 2025
Lanzamiento de androidx.compose.foundation:foundation-*:1.8.0-beta03
. La versión 1.8.0-beta03 contiene estas confirmaciones.
Correcciones de errores
- Se agregó una nueva propiedad semántica
InputText
que captura el valor de un campo de texto antes de que se aplique la transformación de salida. (Iae46a, b/395911609, b/176949051) - Se quitaron las sobrecargas de
AutoSize
obsoletas. Usa las APIs deTextAutoSize
que cumplen la misma función. (I2c90f) - Se corrigió un problema de almacenamiento en caché con
TextAutoSize
en el que un segundo paso de diseño con las mismas restricciones podía generar el uso del segundo tamaño de fuente más grande que se ajustaba en lugar del más grande. (Id367f)
Versión 1.8.0-beta02
12 de febrero de 2025
Lanzamiento de androidx.compose.foundation:foundation-*:1.8.0-beta02
. La versión 1.8.0-beta02 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un problema por el que las implementaciones de desplazamiento excesivo que usaban
LayoutModifierNode
no funcionaban correctamente dentro de los contenedores de desplazamiento.
Versión 1.8.0-beta01
29 de enero de 2025
Lanzamiento de androidx.compose.foundation:foundation-*:1.8.0-beta01
. La versión 1.8.0-beta01 contiene estas confirmaciones.
Cambios en la API
- Se quitó
SemanticsNodeInteraction.semanticsId()
. UsaSemanticsNodeInteraction.fetchSemanticsNode().id
en su lugar. (Ie397a) - Reescribe la API de
requestAutofill
para que exista fuera del administrador de autocompletar. (Id1929) ContextualFlowRow
yContextualFlowColumn
se marcaron como obsoletos. Este componente experimental se introdujo en la versión 1.7 y aún no se había estabilizado, y se consideró que la implementación no era deseable. En el futuro, es posible que se proporcione un componente que resuelva los casos de uso para los que se diseñó este componente.FlowRow
yFlowColumn
tienen sobrecargas experimentales que se introdujeron en la versión 1.7 y que incluyen un parámetrooverflow
. El uso de este parámetro dejó de estar disponible, y se pueden usar las sobrecargas sin este parámetro en su lugar. El comportamiento predeterminado de "overflow" para estas sobrecargas será "Clip", como lo fue desde su introducción.- Muchos casos de uso de
ContextualFlowRow
se pueden lograr conFlowRow
, pero reconocemos que no es cierto en toda su generalidad.ContextualFlowRow
se puede implementar por completo en el espacio del usuario, y se puede intentar copiar su implementación y adaptarla si se desea. En el futuro, esperamos resolver estos casos de uso de otra manera. (Ibafec)
Correcciones de errores
- Se corrigió el diseño de texto con puntos suspensivos que, a veces, se traducía de forma incorrecta durante las animaciones. Consulta b/389707025 para obtener más información (Ie55b1, b/389707025).
- Se corrigió un error en
BasicText
conTextAutoSize
ymaxLines
establecidos en 1. (Ic0450, b/376834366) - Ahora, la altura intrínseca mínima del texto tiene en cuenta el parámetro
minLines
. Esto significa que la altura mínima intrínseca informada no será menor que la altura requerida para satisfacer el parámetrominLines
(I225f9, b/388299762).
Versión 1.8.0-alpha08
15 de enero de 2025
Lanzamiento de androidx.compose.foundation:foundation-*:1.8.0-alpha08
. La versión 1.8.0-alpha08 contiene estas confirmaciones.
Cambios en la API
- AutoSize: Se cambió el nombre de
AutoSize
aTextAutoSize
y se publicaron APIs que permiten crear implementaciones deTextAutoSize
personalizadas. ConsultaTextAutoSizeSample
para ver un ejemplo de implementación personalizada del tamaño automático del texto. (I85756) - Se trasladó la marca de función
DetectTapGesturesEnableNewDispatchingBehavior
aComposeFoundationFlags
y se cambió su nombre aisDetectTapGesturesImmediateCoroutineDispatchEnabled
. La marca anterior dejó de estar disponible y ahora se delegará aComposeFoundationFlags.isDetectTapGesturesImmediateCoroutineDispatchEnabled
. (I62932)
Correcciones de errores
DetectTapGesturesEnableNewDispatchingBehavior
habilitado de forma predeterminada. Las APIs deTapGestureDetector
ahora usan el nuevo comportamiento de envío (envío inmediato) de forma predeterminada. (I9f2bc, b/369648479)- Se corrigieron los modificadores
requiredWidth/Height/Size
para controlar correctamente los tamaños intrínsecos. (Ie3d7d, b/368113212)
Contribución externa
- Se estandarizó
BasicTooltip
en foundation yBasicTooltip/Tooltip
en material3. (Ifc2e6) - Se agregó una nueva interfaz de Clipboard y un elemento local de composición para ella. (I80809)
Versión 1.8.0-alpha07
11 de diciembre de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.8.0-alpha07
. La versión 1.8.0-alpha07 contiene estas confirmaciones.
Cambios en la API
- Se borró la marca
ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled
que ayudaba a revertir la eliminación degraphicsLayer
interno deBasicText
. Si usabas esta marca, infórmanos los motivos presentando un error. También puedes pasarModifier.graphicsLayer()
a tus llamadasBasicText
para lograr el mismo comportamiento que antes. (Id9f90) - Se agregó la implementación predeterminada para el nuevo DSL de
stickyHeader
. (I68986) - Hace que la composición local
LocalAutofillHighlightColor
use un tipo Color. (I0e05b) - Se cambió el nombre de
OverscrollEffect#withoutDrawing
aOverscrollEffect#withoutVisualEffect
. (I1a154)
Correcciones de errores
- Se corrigió un problema en el cálculo del objetivo de
AnchoredDraggable
, en el que podía detenerse en el anclaje incorrecto para ciertos deslizamientos. (I23b87, b/367660226)
Contribución externa
- Se agregó
BringIntoViewResponderModifierNode
a la IU, lo que proporciona una nueva forma de implementar la funcionalidad de Bring Into View y permite la implementación a nivel de la plataforma (Ia6dd8). - Estamos cambiando ligeramente la forma en que se dibuja el cursor. Puedes usar
LocalCursorBlinkEnabled
para inhabilitar el dibujo del cursor en las pruebas. (I4c697)
Versión 1.8.0-alpha06
13 de noviembre de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.8.0-alpha06
. La versión 1.8.0-alpha06 contiene estas confirmaciones.
Cambios en la API
- Se agregó el modificador
stylusHoverIcon
. (Iff20a, b/331289114) confirmValueChange
deAnchoredDraggableState
quedó obsoleto. En lugar de vetar los cambios de estado, las anclas no permitidas no deben estar en el conjunto de anclas activas, y se debe usar unOverscrollEffect
para indicar la no disponibilidad de la acción solicitada. (Ia717f)- Se cambia el administrador de Autocompletar para que sea una interfaz. (I84914, b/376080755)
- Se agregaron las APIs de
OverscrollEffect#withoutDrawing
yOverscrollEffect#withoutEventHandling
. Estas APIs crean una instancia ajustada del efecto de sobredesplazamiento proporcionado que no dibuja ni controla eventos, respectivamente, lo que permite renderizar el sobredesplazamiento en un componente separado del componente que envía eventos. Por ejemplo, inhabilitar el dibujo del desplazamiento excesivo dentro de una lista diferida y, luego, dibujar el desplazamiento excesivo por separado en la parte superior o en otro lugar. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244) - Se agregó compatibilidad con Autocompletar en la barra de herramientas de texto. (Ie6a4c)
- Se dejaron de usar
OverscrollConfiguration
yLocalOverscrollConfiguration
, y se agregórememberPlatformOverscrollFactory
para crear una instancia o personalizar parámetros de la implementación predeterminada de desplazamiento excesivo. Para inhabilitar el desplazamiento excesivo, en lugar deLocalOverscrollConfiguration provides null
, usaLocalOverscrollFactory provides null
. Para cambiar el color o el padding del resplandor, usaLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
en lugar deLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
. (Ie71f9, b/255554340, b/234451516) - Se cambió la propiedad
effectModifier
enOverscrollEffect
anode: DelegatableNode
, de acuerdo con otras APIs. (Ic0b46, b/255554340) - Se quitó la API experimental de
GlobalAssertions
. Su uso previsto era ejecutar verificaciones de accesibilidad. En su lugar, consultaenableAccessibilityChecks()
. (I59322)
Versión 1.8.0-alpha05
30 de octubre de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.8.0-alpha05
. La versión 1.8.0-alpha05 contiene estas confirmaciones.
Nuevas funciones
- Se agregó compatibilidad con el ajuste automático del tamaño del texto. Pasa una instancia de
AutoSize
(p. ej.,AutoSize.StepBased
) a tu elemento componible de texto favorito (comoBasicText
) y observa cómo el tamaño del texto se adapta al espacio disponible. (Ice7e0, b/139320827) - Se agregaron las APIs de
OverscrollFactory
yLocalOverscrollFactory
para permitir la configuración del sobredesplazamiento dentro de una jerarquía. El valor proporcionado a través deLocalOverscrollFactory
se usará de forma predeterminada para crear unOverscrollEffect
. Para crear y recordar un efecto de la fábrica proporcionada actual, usarememberOverscrollEffect()
. (I51ca4, b/255554340)
Cambios en la API
- Se introduce
CompositionLocal
, que se puede usar para modificar el tono del resaltado de relleno exitoso de Autocompletar. (I32092) - Se quitó
ScrollableDefaults.overscrollEffect
. En su lugar, debes usarrememberOverscrollEffect
. Esto creará una instancia de la implementación actual de desplazamiento excesivo proporcionada conLocalOverscrollFactory
. (I1651a, b/255554340),(b/234451516) - Se presenta una nueva interfaz
AutofillManager
que se puede usar para ajustar el recorrido de Autocompletar de los usuarios y una marcaisSemanticAutofillEnabled
para activar esta nueva versión de Autocompletar. (I9d484) - Quita
CombinedClickableNode
. Esta API experimental se expuso de forma temporal para desbloquear el trabajo de rendimiento, pero ya no es necesaria. En su lugar, debes usarModifier.combinedClickable
directamente, como con otras APIs de modificadores. (I4b658) - Se agregaron sobrecargas a
horizontalScroll
,verticalScroll
,LazyColumn
,LazyRow
,LazyHorizontalGrid
,LazyVerticalGrid
,LazyHorizontalStaggeredGrid
,LazyVerticalStaggeredGrid
,HorizontalPager
yVerticalPager
con compatibilidad para especificar unOverscrollEffect
personalizado. ElOverscrollEffect
proporcionado recibirá eventos y se renderizará dentro de los límites de estos componentes. Ten en cuenta que no se admite dibujar el mismoOverscrollEffect
dos veces, por lo que no puedes dibujar el mismoOverscrollEffect
proporcionado a uno de estos componentes por separado conModifier.overscroll
. El caso de uso de dibujar el desplazamiento excesivo fuera de los límites de estos componentes se abordará por separado en el futuro. (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)
Versión 1.8.0-alpha04
16 de octubre de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.8.0-alpha04
. La versión 1.8.0-alpha04 contiene estas confirmaciones.
Cambios en la API
- Se agregaron devoluciones de llamada
DelegatableNode#onDensityChange
yDelegatableNode#onLayoutDirectionChange
para permitir la actualización del estado del nodo cuando estos cambian. (I04f3e, b/340662451) - Paragraph y
ParagraphIntrinsics
ahora toman una lista de todas las anotaciones aplicadas alAnnotatedString
. Antes, solo tenían una lista deSpanStyles
. (I12f80) - Se introdujo
PointerInputModifierNode#touchBoundsExpansion
, que se puede usar para agrandar los límites táctiles de un solo modificador de entrada de puntero. (Iccf02, b/335339283)
Correcciones de errores
- Se corrigió un error por el que los umbrales posicionales que se pasaban a
AnchoredDraggableDefaults.flingBehavior
no se consideraban correctamente en algunos casos. (Ifdf0d, b/367660226) - Se introdujo una corrección para los elementos desplazables anidados que se quitan del árbol de nodos durante un desplazamiento rápido en curso. Ahora, estos nodos cancelarán el movimiento de deslizamiento y enviarán correctamente el evento
onPostFling
con la velocidad restante. También presentamos la marcaNewNestedScrollFlingDispatchingEnabled
para controlar el comportamiento en caso de regresiones. La marca se quitará antes de la versión beta. (I05c37, b/371168883) - Se corrigió un error por el cual
OverscrollEffects
pasado aModifier.anchoredDraggable
recibía deltas 2D en lugar de 1D. (Ie52c0)
Versión 1.8.0-alpha03
2 de octubre de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.8.0-alpha03
. La versión 1.8.0-alpha03 contiene estas confirmaciones.
Cambios en la API
- Se actualizó la versión de Kotlin a la 1.9 (I1a14c).
- Se introdujo la marca
DraggableAddDownEventFixEnabled
(I848d5). - Se introdujo un nuevo rol semántico llamado Carousel para emular el comportamiento de la lista en Pagers para los servicios de accesibilidad. (Id354b, b/354109776, b/239672673)
- Se quitó el modificador
graphicsLayer
implícito del elementoBasicText
componible. Se agregó la marca experimentalComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled
para poder volver al comportamiento anterior. (Ie478d) - Se agregó
Modifier.recalculateWindowInsets()
para permitir que los elementos secundarios de la jerarquía useninsetsPadding
incluso cuando los elementos principales los alinearon sinconsumeWindowInsets()
. (I7f9e4)
Correcciones de errores
- Implementa la selección de gestos en
detectDragGestures
, elementos arrastrables y desplazables. Ahora, si un elemento secundario arrastrable abandona un gesto, el elemento principal tiene la oportunidad de retomarlo. Esto permite un manejo de gestos más continuo e integrado. (Ic88fe) - Se actualizó el comportamiento de cancelación de lanzamiento en elementos desplazables. Ahora, si un elemento desplazable se lanza y alcanza los límites, pasará correctamente la velocidad de lanzamiento al siguiente elemento desplazable de la cadena en lugar de seguir impulsando el lanzamiento. (I9326a)
Versión 1.8.0-alpha02
18 de septiembre de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.8.0-alpha02
. La versión 1.8.0-alpha02 contiene estas confirmaciones.
Cambios en la API
- Ahora están disponibles
TextOverflow.StartEllipsis
yTextOverflow.MiddleEllipsis
, que permiten colocar puntos suspensivos al principio o en el medio de la línea del texto de una sola línea (I38913, b/185418980).
Versión 1.8.0-alpha01
4 de septiembre de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.8.0-alpha01
. La versión 1.8.0-alpha01 contiene estas confirmaciones.
Versión 1.7
Versión 1.7.8
12 de febrero de 2025
Lanzamiento de androidx.compose.foundation:foundation-*:1.7.8
. La versión 1.7.8 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió una falla en
BasicTextField
con la transformación de entrada cuando se reemplazaba parte del texto pegado. (I73702)
Versión 1.7.7
29 de enero de 2025
Lanzamiento de androidx.compose.foundation:foundation-*:1.7.7
. La versión 1.7.7 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió la falla de
IndexOutOfBound
con la anotación de vínculo. (Ic96d2) - Se corrigió la recomposición infinita en algunos casos extremos con vínculos. (I04a03)
Errores conocidos
- Se identificó un error que puede hacer que el texto se ajuste de forma inesperada en situaciones poco frecuentes en el nivel de API 35 de Android. No se puede corregir en la versión 1.7, por lo que se corregirá en la versión 1.8. (b/391378120)
Versión 1.7.6
11 de diciembre de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.7.6
. La versión 1.7.6 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió el problema por el que el contenido intercalado de texto fijo no era visible para los servicios de accesibilidad.
- Se solucionó un problema por el que
AndroidEmbeddedExternalSurface
no se restablecía correctamente y se bloqueaba cuando se reutilizaba en una lista diferida.
Versión 1.7.5
30 de octubre de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.7.5
. La versión 1.7.5 contiene estas confirmaciones.
Correcciones de errores
- Asegúrate de que los elementos fijados no se subcompongan dos veces en el área de padding del contenido. (Ic6224)
Versión 1.7.4
16 de octubre de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.7.4
. La versión 1.7.4 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un error que causaba una falla inusual en los campos de texto. (I475c6, b/313010266)
- Se quitó
ReusableContentHost
de la raíz de los elementos de diseño diferido. Esta era una posible causa raíz de las fallas de "medida llamada en un nodo desactivado". (Id6e60)
Versión 1.7.3
2 de octubre de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.7.3
. La versión 1.7.3 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió una fuga de memoria con
BasicText
cuando minLines se establece en un valor no predeterminado.
Versión 1.7.2
18 de septiembre de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.7.2
. La versión 1.7.2 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un problema con el elemento arrastrable al que le faltaban eventos de presión, lo que provocaba que los movimientos rápidos se vieran más lentos de lo normal.
Versión 1.7.1
10 de septiembre de 2024
- No se realizaron cambios en los artefactos de Android. Se quitaron los artefactos
-desktop
y se agregaron los artefactos-jvmStubs
y-linuxx64Stubs
. Ninguno de estos destinos está diseñado para usarse, sino que son marcadores de posición para ayudar con los esfuerzos de Jetbrains Compose.
Versión 1.7.0
4 de septiembre de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.7.0
. La versión 1.7.0 contiene estas confirmaciones.
Cambios importantes desde la versión 1.6.0
- Se mejoró significativamente el rendimiento de
Modifier.clickable
,Modifier.focusable
,Modifier.indication
,Modifier.scrollable
yModifier.draggable
. Como parte de este esfuerzo, se realizaron los siguientes cambios en la API, además de los cambios internos:- Se agregó una nueva API de Indication,
IndicationNodeFactory
. Esto genera implementaciones de Indicación más eficaces en comparación con la API derememberUpdatedInstance
anterior (ahora en desuso). Para obtener información sobre la migración, consulta developer.android.com. clickable
,combinedClickable
,selectable
ytoggleable
ahora aceptan un parámetroMutableInteractionSource
anulable. Si es nulo y la indicación proporcionada es unIndicationNodeFactory
, la indicación se puede crear de forma diferida solo cuando sea necesario, lo que mejora el rendimiento. Si no realizas el hoisting y usasMutableInteractionSource
, se recomienda pasar null en lugar deremember { MutableInteractionSource() }
.Indication#rememberUpdatedInstance
quedó obsoleto. Tiene una alta penalización de rendimiento inevitable y evita otras optimizaciones. En su lugar, debes usar la nueva API deIndicationNodeFactory
.
- Se agregó una nueva API de Indication,
BasicTextField
con unTextFieldState
ahora es estable, y recomendamos que todos los sitios de llamadas comiencen la migración deBasicTextField(value, onValueChange)
aBasicTextField(TextFieldState)
.- El objeto
ClickableText
quedó obsoleto. Para agregar vínculos en los que se pueda hacer clic a tu texto, usaBasicText
con la nueva anotaciónLinkAnnotation
en tuAnnotatedString
.LinkAnnotation
permite aplicar un diseño personalizado según el estado del vínculo (p.ej., enfocado, sobre el que se coloca el cursor). - Presentamos
ContextualFlowRow
yEnhanced FlowRow/Column
conMaxLines
yOverflow
. Nos complace anunciar mejoras en los elementos experimentalesFlowRow
yFlowColumn
, que ahora incluyenmaxLines
y compatibilidad con desbordamiento, además del lanzamiento deContextualFlowRow
yContextualFlowColumn
. Esta actualización está diseñada para proporcionar componentes con un rendimiento óptimo, en los queContextualFlow*
es perfecto para una gran cantidad de elementos que usan una pequeña configuración de maxLines y botones dinámicos de +N ver más, yFlowRow
yFlowColumn
son perfectos para una pequeña cantidad de elementos, menos de 100. Importante: Para mantener el comportamiento existente enFlowRow
oFlowColumn
, en el que todos los elementos se componen independientemente de si se ajustan al máximo del eje transversal, establece el desbordamiento enFlowRowOverflow.Visible
oFlowColumnOverflow.Visible
durante la inicialización. ExploraContextualFlowRowSample
yFlowRowSample
para ver ejemplos de estas nuevas funciones en acción. (Ib9135, b/293577082) - Se agregó compatibilidad con la animación de aparición y desaparición de elementos en
LazyColumn
yLazyRow
. Anteriormente, era posible agregar el modificadorModifier.animateItemPlacement()
para admitir animaciones de posición (reordenamiento). Obsoletamos este modificador y presentamos uno nuevo no experimental llamadoModifier.animateItem()
que te permite admitir los tres tipos de animación: aparición (fundido de entrada), desaparición (fundido de salida) y reordenamiento. (I2d7f7, b/150812265) - Se implementó la compatibilidad experimental con capturas de pantalla largas en contenedores de desplazamiento de Compose con la API oficial de Android (
ScrollCaptureCallback
). - Las fuentes
NestedScroll
Drag y Fling se reemplazan porUserInput
ySideEffect
para adaptarse a la definición extendida de estas fuentes que ahora incluyen animaciones (efecto secundario) y rueda del mouse y teclado (UserInput
). - Las solicitudes de
LazyLayout
prefetch ahora se pueden marcar como urgentes, lo que significa que esperamos que este elemento sea necesario en el próximo fotograma y queremos ignorar el presupuesto de fotogramas para asegurarnos de hacer más trabajo por adelantado (Id513f). - Admite la función de escritura a mano con lápiz en dispositivos posteriores a Android U. (I002e4)
- Varias APIs se promovieron a estables.
- Paginadores, ajuste y ventanas insertadas
Versión 1.7.0-rc01
21 de agosto de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.7.0-rc01
. La versión 1.7.0-rc01 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió una regresión en la que se producía una falla cuando se enfocaba cualquier elemento dentro de un elemento principal que se podía enfocar (o en el que se podía hacer clic) y estaba inhabilitado. (b/317561689)
Versión 1.7.0-beta07
7 de agosto de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.7.0-beta07
. La versión 1.7.0-beta07 contiene estas confirmaciones.
Correcciones de errores
- Las funciones
SemanticsNodeInteraction
relacionadas con la entrada de textoperformTextReplacement
,performTextInput
yperformTextClearance
ahora arrojarán errores de aserción cuando se las llame enTextFields
de solo lectura. (I4ae8f) - Se corrigió una falla visual en los hipervínculos. (I23311)
- Se corrigió el problema por el que el modificador
contentReceiver
no funcionaba con algunos IME. - Generación de velocidad: Se evita la propagación de valores NaN en Compose UI y Foundation.
Versión 1.7.0-beta06
24 de julio de 2024
Lanzamiento de androidx.compose.foundation:foundation-*: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.foundation:foundation-*:1.7.0-beta05
. La versión 1.7.0-beta05 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió el tratamiento de los valores NaN en
SnapFlingBehavior
y Pager.
Versión 1.7.0-beta04
26 de junio de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.7.0-beta04
. La versión 1.7.0-beta04 contiene estas confirmaciones.
Correcciones de errores
- Se evitan fallas cuando se miden líneas de texto muy grandes (p. ej., de 10,000 caracteres) (8157ab).
- Se corrigió la medición de texto muy grande que provocaba fallas en el nuevo
BasicTextField
(6b7575). - Se revierte un cambio de comportamiento en la medición de filas y columnas que interrumpe el uso de texto en ciertas situaciones (69e8ba).
Versión 1.7.0-beta03
12 de junio de 2024
Lanzamiento de androidx.compose.foundation:foundation-*: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.foundation:foundation-*:1.7.0-beta02
. La versión 1.7.0-beta02 contiene estas confirmaciones.
Cambios en la API
- Se agregó una API experimental para configurar el comportamiento de recuperación previa de
LazyGrids
de manera similar a la API experimental existente paraLazyLists
. Esto incluye la compatibilidad con la recuperación previa de elementos en objetosLazyGrids
anidados. Al igual que conLazyListPrefetchStrategy
, la implementación predeterminada es obtener previamente los primeros 2 elementos anidados de cada cuadrícula, pero esto se puede configurar con las nuevas APIs deLazyGridPrefetchStrategy(nestedPrefetchItemCount)
yLazyListPrefetchStrategy#onNestedPrefetch
. (I591c4) - Se cambió el nombre de
SemanticsProperties.Editable
porIsEditable
y se cambióSemanticsPropertyReceiver.editable
por un valorisEditable
. La propiedad ahora es booleana y siempre se especifica con campos de texto. (I8acd8) - Se movieron los valores predeterminados de
basicMarquee
al objetoMarqueeDefaults
. (I12ff6) - Se cambió el nombre del parámetro
basicMarquee
delayMillis
arepeatDelayMillis
. (I12ff6) - Se actualizó la API para aplicar diseño a los vínculos: Se movió
TextLinkStyles
aTextStyle
y se quitóTextDefaults
de Material (I5477b).
Correcciones de errores
- Se cambió el nombre de
LayoutCoordinates.introducesFrameOfReference
porLayoutCoordinates.introducesMotionFrameOfReference
para reflejar mejor su propósito. Se cambió el nombre de la función relacionada para calcular las coordenadas según esa marca. (I3a330) - Se quitó "Predeterminado" de las propiedades de
MarqueeDefaults
. (I1d8a0) - Se quitó "Marquee" de las propiedades de
MarqueeDefaults
. (Iad4f4) - Se quitó
TextLinkStyles
de la claseTextStyle
. En su lugar,TextLinkStyles
forma parte del constructorLinkAnntation
y del métodoAnnotatedString.fromHtml
(I90b2b). - Se corrigió un error por el que Pager se ajustaba cuando se desplazaba hacia un límite mientras ya estaba establecido en ese límite. (I9f373, b/339171222)
- BTF2 ahora tiene gestos de selección del mouse correctos. (Ibe8c6)
Contribución externa
- Vuelve a enviar "Make compose/measure time calculation content-type based in prefetch to improve accuracy" (Iea622).
- Hacer que el cálculo del tiempo de composición/medición se base en el tipo de contenido en la recuperación previa para mejorar la precisión (Ibccb1)
- Haz que los modificadores de
WindowInsetsPadding
estén disponibles desde el conjunto de orígenes común (I070b2)
Versión 1.7.0-beta01
14 de mayo de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.7.0-beta01
. La versión 1.7.0-beta01 contiene estas confirmaciones.
Cambios en la API
- Se volvió a agregar la propiedad
KeyboardOptions.shouldShowKeyboardOnFocus
como oculta obsoleta para la compatibilidad con objetos binarios. (I15cfe) - Ahora,
Modifier.anchoredDraggable
invierte los deltas de arrastre de forma predeterminada para los componentes con orientación horizontal cuando se usan en un diseño de RTL. (I3c6d9) AnnotatedString.hasEqualsAnnotations
ahora eshasEqualAnnotations
(I685c0)- Se actualizó la API para obtener vínculos con temas de Material en el texto. Específicamente, se quitaron los métodos de
TextDefaults
para construirLinkAnnotations
con temas y analizar HTML con vínculos con temas. En su lugar, se agregó una claseTextLinkStyles
que permite diseñar los vínculos como un parámetro para el elemento componible Text. (I31b93) - Se reemplazaron
onDragStarted
yonDragStopped
por devoluciones de llamada que no suspenden. (I59de8)
Correcciones de errores
- Se corrigió un error por el que Pager fallaba cuando
contentPadding
era más grande que las restricciones entrantes. Ahora, Pager fuerza los valores negativos que se muestran desdePageSize
a 0. (Iba5d8, b/314008560)
Versión 1.7.0-alpha08
1 de mayo de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.7.0-alpha08
. La versión 1.7.0-alpha08 contiene estas confirmaciones.
Nuevas funciones
- Se agregó un menú contextual al hacer clic con el botón derecho en
BasicTextField
ySelectionContainer
con elementos para las acciones de cortar, copiar, pegar y seleccionar todo. (If8c93, Ia2b49, I6f268)
Cambios en la API
- Las solicitudes de
LazyLayout
prefetch ahora se pueden marcar como urgentes, lo que significa que esperamos que este elemento sea necesario en el próximo fotograma y queremos ignorar el presupuesto de fotogramas para asegurarnos de hacer más trabajo por adelantado (Id513f). - Se cambió el nombre de
isPositionedByParentWithDirectManipulation
aintroducesFrameOfReference
. Ten en cuenta que ahora tiene el efecto contrario, lo que significa que, de forma predeterminada, la mayoría de losLayoutCoordinates
introducen un marco de referencia y, solo cuando se colocan bajo manipulación directa, la propiedad será falsa. Para consultar la posición solo con aquellos que introducen un marco de referencia, usapositionInLocalFrameOfReference(...)
. O bienpositionInLocalLookaheadFrameOfReference
de unLookaheadScope
. (Ifc5f7) - Se cambió el nombre de
onClicked
aonClick
dentro deLinkInteractionListener
(Iaa35c). - Se cambió la expresión lambda de acción para
getScrollViewportLength
según los comentarios del Consejo de la API. (Ibc74a) - Se cambió el nombre de las APIs de delegación de escritura a mano con pluma stylus. (Ica45f, b/327271923)
- Se cambió el nombre de
TextInclusionStrategy.isInside
porisIncluded
. Haz que el tipo de datos que se muestra deParagraph/MultiParagraph#getRangeForRect()
no sea anulable. (I51f26)
Correcciones de errores
- Se agregó la opción "Seleccionar todo" a todos los menús contextuales de texto en
SelectionContainer
. (Ib750e, b/240143283) - Se corrigió la captura de capturas de pantalla largas para contenedores de desplazamiento con
reverseScrolling=true
. (I7c59c) - Se corrigió un problema por el que el
currentValue
deAnchoredDraggableState
cambiaba cuando se acercaba a los límites del estado. (Iea30b, b/333846848)
Contribución externa
- Se cambió el nombre de
PrefetchExecutor
aPrefetchScheduler
para reflejar mejor sus responsabilidades. (Ib9154) - Se agregó compatibilidad con la precarga de elementos en
LazyLists
anidados (p.ej., unLazyColumn
que renderizaLazyRows
anidados). Se espera que este cambio reduzca las pérdidas de fotogramas durante el desplazamiento para estosLazyLists
. La implementación predeterminada es obtener previamente los primeros 2 elementos anidados, pero este comportamiento se puede controlar con las nuevas APIs deLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
yLazyListPrefetchStrategy#onNestedPrefetch
. (I51952)
Versión 1.7.0-alpha07
17 de abril de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.7.0-alpha07
. La versión 1.7.0-alpha07 contiene estas confirmaciones.
Nuevas funciones
- Se agregó un objeto
TextDefaults
que contiene métodos para construir unLinkAnnotation
y analizar una cadena etiquetada con HTML que aplicaMaterialTheme
a los vínculos. (I98532, b/139312671) - Se agregó compatibilidad con la animación de aparición y desaparición de elementos en
LazyVerticalGrid
yLazyHorizontalGrid
. Anteriormente, era posible agregar el modificadorModifier.animateItemPlacement()
para admitir animaciones de posición (reordenamiento). Obsoletamos este modificador y presentamos uno nuevo no experimental llamadoModifier.animateItem()
que te permite admitir los tres tipos de animación: aparición (fundido de entrada), desaparición (fundido de salida) y reordenamiento. (Ib7d12, b/330510929) - Se agregó compatibilidad con la animación de aparición y desaparición de elementos en
LazyVerticalStaggeredGrid
yLazyHorizontalStaggeredGrid
. Anteriormente, era posible agregar el modificadorModifier.animateItemPlacement()
para admitir animaciones de posición (reordenamiento). Obsoletamos este modificador y presentamos uno nuevo no experimental llamadoModifier.animateItem()
que te permite admitir los tres tipos de animación: aparición (fundido de entrada), desaparición (fundido de salida) y reordenamiento. (I69bc9, b/330511290)
Cambios en la API
- Agrega
ContextMenuColors
y elLocalContextMenuTheme
ProvidableCompositionLocal
asociado. Los colores del menú contextual en los campos de texto y el texto seleccionable se pueden modificar proporcionando el objeto de composición local. (Ifa154) - Los vínculos de texto tienen una opción de diseño de estado presionado, además del diseño normal, el diseño de enfoque y el diseño de desplazamiento. (I5f864, b/139312671)
- Se introdujo
ViewConfiguration.HandwritingGestureLineMargin
para los gestos de escritura a mano. Se agregó compatibilidad con el gesto de escritura a mano paraBasicTextField
. (Ie6e13, b/325660505) - Se quitó
DelegatableNode.scrollIntoView
para la versión 1.7, ya que no tuvimos tiempo de terminar de estabilizar el resto de la superficie de la API relacionada. Esta función se volverá a introducir en la versión 1.8 (I6cf61, b/333421581, b/332900232). - Cuando consultes las coordenadas de diseño, ahora puedes usar el argumento
excludeDirectManipulationOffset
para excluir el desplazamiento establecido por los diseños principales que colocaron sus elementos secundarios conPlaceable.PlacementScope.withDirectManipulationPlacement
. Del mismo modo, un diseño que cambia la posición de sus elementos secundarios con frecuencia ahora puede colocarlos conwithDirectManipulationPlacement
(como Scroll, implementado de forma predeterminada). Esto ayuda a que las animaciones basadas enapproachLayout
sean más intuitivas, ya que ahora se puede diferenciar qué desplazamiento animar y qué aplicar directamente cuando se decide animar el enfoque. (I60ec7) - Se introdujo
requestScrollToItem
paraLazyStaggeredGrid
. Para cada pase de medición, el cliente ahora puede inhabilitar el mantenimiento del índice según la clave llamando arequestScrollToItem
. Esto no cambia el comportamiento existente de ninguna manera, a menos que se llame arequestScrollToItem
. (I63983) - Se introdujo
requestScrollToPage
en Pager. Para cada pase de medición, el cliente ahora puede inhabilitar el mantenimiento del índice según la clave llamando arequestScrollToPage
. Esto no cambia el comportamiento existente de ninguna manera, a menos que se llame arequestScrollToPage
. (Ic4213) - Se introdujo
requestScrollToItem
paraLazyGrids
. Para cada pase de medición, el cliente ahora puede inhabilitar el mantenimiento del índice según la clave llamando arequestScrollToItem
. Esto no cambia el comportamiento existente de ninguna manera, a menos que se llame arequestScrollToItem
. (I0a7a0) ClickableText
se marcó como obsoleto. Para agregar vínculos al texto, crea unAnnotatedString
con unLinkAnnotation
correspondiente a tu vínculo y pasa esteAnnotatedString
al elementoText
componible (I34d4b, b/323346994).UrlAnnotation
está obsoleto. En su lugar, usaLinkAnnotation.Url
. Si usas temas de Material, usa el objetoTextDefaults
para crear la anotación con el tema de Material aplicado (I8d180, b/323346545).- Se cambió el nombre de
String.parseAsHtml
porAnnotatedString.Companion.fromHtml
. (I43dcd) - Se agregaron argumentos de diseño (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) y un objeto de escucha de interacción de vínculos al métodoparseAsHtml
. Cuando se analiza la cadena etiquetada con HTML con etiquetas<a>
, el método construye un objetoLinkAnnotation.Url
para cada etiqueta de ese tipo y pasa los objetos de diseño y el objeto de escucha de interacción de vínculos a cada anotación. (I7c977) LinkAnnotation
ahora toma los argumentos de diseño basados en el estado y unLinkInteractionListener
. Agrega esta anotación aAnnotatedString
para obtener un hipervínculo. Si pasasfocusedState
ohoveredState
, puedes definir la configuración visual de los vínculos cuando se enfocan o cuando se colocan sobre ellos. (I81ce4, b/139312671)- Se quitó la marca de función para las capturas de pantalla largas. (I28648, b/329128246)
LazyColumn
ahora renderizará correctamente los encabezados fijos en capturas de pantalla largas. (I8d239, b/329296635)- Se estabilizó la mayoría de las APIs experimentales restantes que se introdujeron con el nuevo
BasicTextField
. (I714e2) - Se agregó el parámetro
textObfuscationCharacter
aBasicSecureTextField
, que controla qué carácter se usa cuando se ofusca el contenido. (I0588b) - Las fuentes
NestedScroll
Drag y Fling se reemplazan porUserInput
ySideEffect
para adaptarse a la definición extendida de estas fuentes que ahora incluyen animaciones (efecto secundario) y rueda del mouse y teclado (UserInput
). (I40579) - Se introdujo
LocalBringIntoViewSpec
, un comportamiento de desplazamiento de enfoque dependiente de la plataforma que se aplica en la capa del modificador Scrollable. (I27aa5, b/317453911) - Se quitó
TextFieldCharSequence
.TextFieldBuffer.originalValues
se reemplaza porTextFieldBuffer.originalText
yTextFieldBuffer.originalSelection
. (I2c7d6) ImeOptions.hintLocales
ya no admite valores nulos. Si deseas pasar una lista de configuración regional vacía, usaLocaleList.Empty
. (Ic5bc4)- Se cambió el nombre de
getOffsetFractionForPage
agetOffsetDistanceInPages
. (Ia05e2)
Correcciones de errores
- Cuando los
InputTransformations
se unen con losnext
, susKeyboardOptions
ahora se combinan correctamente por opciones individuales con el nuevo métodoKeyboardOptions.merge
. (Ie5304, b/295951492) - El
targetValue
deAnchoredDraggableState
ya no considera los umbrales posicionales. Ahora tiene un umbral implícito del 50%, lo que significa que eltargetValue
cambia en el punto medio entre dos anclajes. (I82c2c)
Contribución externa
- Se cambiaron los nombres de 2 APIs de desplazamiento (I56a75).
Versión 1.7.0-alpha06
3 de abril de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.7.0-alpha06
. La versión 1.7.0-alpha06 contiene estas confirmaciones.
Nuevas funciones
- Se agregó compatibilidad con la animación de aparición y desaparición de elementos en
LazyColumn
yLazyRow
. Anteriormente, era posible agregar el modificadorModifier.animateItemPlacement()
para admitir animaciones de posición (reordenamiento). Obsoletamos este modificador y presentamos uno nuevo no experimental llamadoModifier.animateItem()
que te permite admitir los tres tipos de animación: aparición (fundido de entrada), desaparición (fundido de salida) y reordenamiento. (I2d7f7, b/150812265) - Los clientes de
LazyColumn/LazyRow
ahora pueden inhabilitar el mantenimiento de un índice basado en la clave para el próximo pase de medición llamando a unLazyListState.requestToScroll
que no sea de suspensión. (I98036, b/209652366) - Se agregó el método
parseAsHtml
para cadenas con estilo: permite convertir una cadena marcada con etiquetas HTML enAnnotatedString
. Ten en cuenta que no se admiten todas las etiquetas. Por ejemplo, aún no podrás mostrar listas con viñetas. (I84d3d) - Se implementó la compatibilidad experimental con capturas de pantalla largas en contenedores de desplazamiento de Compose con la API oficial de Android (
ScrollCaptureCallback
). Esta función es experimental y es posible que no controle todos los casos correctamente en este momento. Por ese motivo, actualmente está inhabilitado de forma predeterminada. Para habilitar la opción, establece la marcaComposeFeatureFlag_LongScreenshotsEnabled
como verdadera. Esta marca se quitará antes de la versión beta 1.7. (I2b055, b/329296471) - Se introdujo una nueva API de
GraphicsLayer
para brindar más flexibilidad en la colocación y la renderización de instancias deGraphicsLayer
, y admitir funciones de renderización intrínsecas sin necesidad de coordinar con implementaciones de elementos componibles para especificar instancias de modificadores deGraphicsLayer
.
Cambios en la API
- Todos los parámetros
KeyboardOptions
ahora tienen un valor no especificado de forma predeterminada. Se agregó el métodoKeyboardOptions.merge
. - Se cambió el nombre de
KeyboardOptions.autoCorrect
aautoCorrectEnabled
y se hizo nulo, donde nulo indica que no se especificó ningún valor. (Ia8ba0, b/295951492) - Se cambió el nombre de
outOfBoundsPageCount
abeyondViewportPageCount
. (I129c6) fun ClipEntry.getMetadata()
cambió aval ClipEntry.clipMetadata
. (I50155)- Se quitó
TextFieldState.valueAsFlow()
. Se prefiere usarsnapshotFlow { state.text }
osnapshotFlow { TextFieldCharSequence(state.text, state.selection) }
(I7d629). - Se reorganizaron los parámetros de
InputTransformation.transformInput
. Se quitóoriginalValue: TextFieldCharSequence
. En cambio,TextFieldBuffer
ahora incluye este valor con el mismo nombre. También se quitó el parámetrovalueWithChanges: TextFieldBuffer
.TextFieldBuffer
ahora es el alcance del receptor en la función. (I919cc) - Las variantes
BasicTextField(state)
yBasicSecureTextField
ahora usanKeyboardActionHandler
en lugar deKeyboardActions
para procesar las acciones que realiza el teclado en pantalla. (I58dda) - APIs de delegación de escritura a mano con pluma stylus para admitir la escritura a mano con pluma stylus en campos de entrada de texto "falsos". (I9c09c, b/327271923)
- Se cambió el nombre de
KeyboardOptions.shouldShowKeyboardOnFocus
ashowKeyboardOnFocus
. (Ib4b7a, b/295951492) - Se quitó el parámetro
hintMediaTypes
deModifier.contentReceiver
. Ya se había recomendado a los desarrolladores que verificaran el tipo de medio delTransferableContent
recibido, ya que podría ser incompatible con elhintMediaTypes
configurado. (I82f99) - Se reorganizaron los parámetros de
BasicSecureTextField
. Se quitaron los parámetroskeyboardType
yimeAction
en favor de la claseKeyboardOptions
completa, y se mantuvieron los mismos valores predeterminados adecuados paraBasicSecureTextField
. También se quitó el parámetroscrollState
. (Ibbfa9) - El tipo de
TextFieldState.text
cambió deTextFieldCharSequence
a soloCharSequence
. Por lo tanto, se agregaronTextFieldState.selection: TextRange
yTextFieldState.composition: TextRange?
para leer los valores de selección y composición actuales directamente desde el objeto de estado. - Se quitó
TextFieldState.forEachTextValue
. (Idb2a2) - Se quitaron las funciones
ClipboardManager.getClipMetadata
yClipboardManager.hasClip
. UsaclipEntry.getMetadata()
para leer los metadatos de la entrada de clip actual. También verifica el resultado deClipboardManager.getClip
para saber si es nulo o no y comprender si el portapapeles tiene un clip actual. (I50498) ClipboardManager.setClip
ahora acepta valores nulos para poder borrar el portapapeles. (I7d2e9)ReceiveContentListener
se convierte en una interfaz de función. También se quitó la sobrecarga deModifier.receiveContent
que toma una lambda, ya queReceiveContentListener
ahora es una interfaz de función.- El nombre de
Modifier.receiveContent
cambió porModifier.contentReceiver
. (I1e6af) - Se cambió el nombre de
TransferableContent.consumeEach
aTransferableContent.consume
. (I1e462) rememberTextFieldState
pasó a ser una API estable. (I37999)
Correcciones de errores
- Se corrigió un error por el que la variante
BasicTextField(state)
no funcionaba con teclados CJK(basados en composición). (I54425) - Se corrigió un error por el que
Modifier.dragAndDropTarget()
podía hacer referencia a datos obsoletos en ciertas situaciones con la reutilización deModifier.Node
. (I05bb1) - Se revirtió un cambio reciente en el contrato en el que las llamadas a
AnchoredDraggableState#anchoredDrag
se ajustaban al final de una operación deanchoredDrag
. (I95715)
Versión 1.7.0-alpha05
20 de marzo de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.7.0-alpha05
. La versión 1.7.0-alpha05 contiene estas confirmaciones.
Cambios en la API
- Se quitó el elemento
LocalTextLinkStyle
experimental de composición local para diseñar hipervínculos. (Iebfa7) - Se quitó la anulación experimental de
BasicText
con el argumentoonLinkClicked
. En el futuro, se lanzará una API de reemplazo para la compatibilidad con hipervínculos. (I107d5) - Se quitaron los métodos y las propiedades relacionados con los puntos de código en
TextFieldState
yTextFieldBuffer
. También se quitaron los sufijosinChars
de las APIs restantes relacionadas con la selección y la composición. (Ief7ce) - La propiedad
currentValue
deAnchoredDraggable
ahora se actualizará cuando se pase por un punto de anclaje. UsasettledValue
para recibir la semántica decurrentValue
anterior, y solo se actualizará cuando se detenga en un ancla. El progreso ahora se expone como una función (que requiere un punto de inicio y un punto final) en lugar de una propiedad. (Ibe6e8, b/318707189, b/298271489, b/294991954) BasicTextField(state)
,TextFieldState
,InputTransformation
,OutputTransformation
,TextFieldLineLimits
yTextFieldDecorator
se graduaron a estables. (I9582b)- Se introdujo
InterceptPlatformTextInput
para ayudar a escribir pruebas de bajo nivel relacionadas con el IME y otros casos de uso de IME de bajo nivel.PlatformTextInputTestOverride
quedó obsoleto. (I862ed, b/322680547) - Se dividió
restrictedConstraints()
en dos métodos:fitPrioritizingWidth()
yfitPrioritizingHeight()
(I6d7fd)
Contribución externa
- Se agregaron 2 nuevas APIs
isLastScrollForward
/isLastScrollBackward
para verificar la dirección de desplazamiento de la acción de desplazamiento más reciente. Devuelve falso si aún no hay ninguna acción de desplazamiento. (I63a0e)
Versión 1.7.0-alpha04
6 de marzo de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.7.0-alpha04
. La versión 1.7.0-alpha04 contiene estas confirmaciones.
Cambios en la API
- Admite la función de escritura a mano con lápiz en dispositivos posteriores a Android U. (I002e4)
- Se agregó
hintLocales
aKeyboardOptions
para proporcionar aTextFields
la capacidad de sugerir IME con configuraciones regionales específicas para preestablecer un idioma preferido. (Id18c2) - Se quitaron las sobrecargas experimentales de
BasicTextField2
yBasicSecureTextField
que tomaban parámetrosvalue: String
yonValueChange: () -> String
. (I568b4) - Agrega una función
applySemantics
opcional aInputTransformation
para influir en la semántica delBasicTextField2
al que se aplica. (I74a2f, b/170648072) - En este CL, agregamos la acción semántica
GetScrollViewportLength
para que podamos canalizar información sobre los componentes que se desplazan en Compose al sistema de accesibilidad. Este CL también aplica el uso de dicha propiedad en las listas desplazables de Foundation. (Ic5fa2) - El nombre de
BasicTextField2
cambió porBasicTextField
. (Ie5713) FocusRequester.createRefs
ahora es estable (I4d92c, b/261436820).- Se introdujo
DelegatableNode.scrollIntoView()
para permitir que los nodos modificadores realicen solicitudesscrollIntoView
directamente. (I2b3b7, b/299939840) - Se introdujo
DelegatableNode.requireView()
para permitir que los nodos de modificador obtengan elView
actual de Android sin leer un elemento local de composición. (I40768) - Se introdujo información de diseño contextual en Contextual Flow Row Scope y Contextual Flow Column Scope, que incluye el índice de línea, la posición y las restricciones sobre el ancho y la altura máximos para permanecer en la posición especificada. Los elementos que superen el ancho o la altura máximos pueden pasar a la siguiente línea o bien omitirse según la configuración de desbordamiento. (Id13f8, b/292114798)
Correcciones de errores
- Se corrigió un error por el que, en ciertas condiciones, activar o desactivar los atributos
enabled
oreadOnly
deTextField
provocaba una falla. (Iae17b)
Versión 1.7.0-alpha03
21 de febrero de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.7.0-alpha03
. La versión 1.7.0-alpha03 contiene estas confirmaciones.
Cambios en la API
- Se introdujo
DelegatableNode.requireLayoutCoordinates()
como una forma de obtener elLayoutCoordinates
actual de unModifier.Node
sin necesidad de anularonPlaced
y almacenar las coordenadas en una propiedad por tu cuenta. (Ia8657) - Se introdujo
DelegatableNode.currentLayoutCoordinates
como una forma de obtener elLayoutCoordinates
actual de unModifier.Node
sin necesidad de anularonPlaced
y almacenar las coordenadas en una propiedad por tu cuenta. (Iaebaa) - Optimizaciones de rendimiento en
DraggableAnchors
que usaAnchoredDraggable
. (I89cff) BasicTextField2
y las APIs relacionadas en el paqueteandroidx.compose.foundation.text2
se movieron aandroidx.compose.foundation.text
. (I9f635)BasicTextField2
ya no acepta un parámetroCodepointTransformation
. UsaBasicSecureTextField
oOutputTransformation
. (Id34ff)- Se agregó un método para comparar solo las anotaciones de dos
AnnotatedStrings
. (I32659) - Presentamos
ContextualFlowRow
yFlowRow
/Column
mejorados conMaxLines
yOverflow
. Nos complace anunciar mejoras en los elementos experimentalesFlowRow
yFlowColumn
, que ahora incluyenmaxLines
y compatibilidad con desbordamiento, además del lanzamiento deContextualFlowRow
yContextualFlowColumn
. Esta actualización está diseñada para proporcionar componentes con un rendimiento óptimo, en los queContextualFlow*
es perfecto para una gran cantidad de elementos que usan una pequeña configuración demaxLines
y botones dinámicos de +N para ver más, yFlowRow
yFlowColumn
son perfectos para una pequeña cantidad de elementos, menos de 100. Importante: Para mantener el comportamiento existente enFlowRow
oFlowColumn
, en el que todos los elementos se componen independientemente de si se ajustan al máximo del eje transversal, estableceoverflow
enFlowRowOverflow.Visible
oFlowColumnOverflow.Visible
durante la inicialización. ExploraContextualFlowRowSample
yFlowRowSample
para ver ejemplos de estas nuevas funciones en acción. (Ib9135, b/293577082)
Correcciones de errores
- La animación del cursor ya no solicita fotogramas entre los estados de encendido y apagado. (Ia2253)
- Los constructores de copia obsoletos de
KeyboardOptions
ahora copiarán correctamente todas las propiedades. (If12de)
Versión 1.7.0-alpha02
7 de febrero de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.7.0-alpha02
. La versión 1.7.0-alpha02 contiene estas confirmaciones.
Cambios en la API
HorizontalPager
,VerticalPager
yPagerState
se promocionaron a estables. (I67660, b/316966909)- Se agregó el elemento local de composición
LocalTextLinkStyle
que permite cambiar el estilo de los vínculos en Text en toda la app. Si usas tu propio tema en la app, debes configurar este elemento local de composición según tu tema. Cuando se usa el tema de Material, el color del vínculo se establece de forma predeterminada en el color principal de Material. (I7eb10) - Se introdujo el modificador
receiveContent
, que proporciona a los desarrolladores una forma de recibir contenido enriquecido en Jetpack Compose. receiveContent
se integra conBasicTextField2
para aceptar contenido enriquecido proporcionado por el teclado de software o a través de la acción de pegar del portapapeles. (I81b72)- En este cambio, reemplazamos
SnapFlingBehavior
porTargetedFlingBehavior
en el paginador para habilitar otros casos de uso y brindar mayor flexibilidad. (I762ea) - Con este cambio, las APIs de ajuste se vuelven estables. También estamos limpiando parte del código de prueba y agregando más muestras a Snapping. (Id8da9)
- Se presenta
TargetedFlingBehavior
, unFlingBehavior
que permite propagar información sobre el estado de la animación en curso y su desplazamiento objetivo. (I6a207)
Correcciones de errores
- Ahora,
BasicTextField2
mantiene el cursor a la vista mientras escribes cuando se desplazó fuera de la vista o se movería fuera de la vista debido a la entrada. (Ieb856, b/237190748)
Contribución externa
- Se agregó una API experimental para configurar el comportamiento de recuperación previa de LazyLists. (I022a4)
Versión 1.7.0-alpha01
24 de enero de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.7.0-alpha01
. La versión 1.7.0-alpha01 contiene estas confirmaciones.
Nuevas funciones
- Se agregó un nuevo
Indication API
,IndicationNodeFactory
. Esto genera implementaciones deIndication
con mejor rendimiento en comparación con la API derememberUpdatedInstance
anterior (ahora en desuso). Para obtener información sobre la migración, consulta developer.android.com. clickable / combinedClickable / selectable / toggleable
ahora acepta un parámetroMutableInteractionSource
anulable. Si es nulo y elIndication
proporcionado es unIndicationNodeFactory
, elIndication
se puede crear de forma diferida solo cuando sea necesario, lo que mejora el rendimiento. Si no estás elevando y usandoMutableInteractionSource
, se recomienda pasar nulo.
Cambios en la API
- Se introdujo
DecayAnimation
enAnchoredDraggable
. Este cambio agrega un parámetrodecayAnimationSpec
aAnchoredDraggable
que permite usar la animación de decaimiento cuando se detiene en uno de los anclajes. El cambio también incluye el cambio de nombre delanimationSpec
existente asnapAnimationSpec
para ayudar a comprender el caso de uso de cada especificación. BasicTextField2
está disponible para uso experimental. Debe tener una paridad de funciones aproximada conBasicTextField
y un comportamiento listo para la producción. Sin embargo, por el momento, la API sigue siendo experimental. Antes de estabilizarse, se cambiará su nombre aBasicTextField
y se moverá al mismo paquete.- Se introdujo el primer borrador de la API de
OutputTransformation
paraBasicTextField2
. Esta API reemplaza la mayoría de los casos de uso deVisualTransformation
en la antiguaBasicTextField
. Sin embargo, aún no está completa y algunas cosas no funcionarán correctamente, pero agradeceríamos cualquier comentario sobre la usabilidad de la API para tus casos de uso. (aosp/2708848) - Se agregó
LinkAnnotation
, que permite agregar vínculos y elementos en los que se puede hacer clic al texto. La función de vínculos aún no está completa y se realizarán más cambios en la API. - Se introdujo el modificador
receiveContent
, que proporciona a los desarrolladores una forma de recibir contenido enriquecido en Jetpack Compose. receiveContent
se integra conBasicTextField2
para aceptar contenido enriquecido proporcionado por el teclado de software o a través de la función de pegar desde el portapapeles.KeyboardOptions.shouldShowKeyboardOnFocus
te permite inhabilitar el comportamiento predeterminado deBasicTextField
de solicitar un teclado de software cuando se enfoca.TextInputService
yLocalTextInputService
dejaron de estar disponibles. En su lugar, usaPlatformTextInputModifierNode
para realizar la integración directamente con las APIs del IME de la plataforma. (aosp/2862698)Indication#rememberUpdatedInstance
quedó obsoleto. Tiene una alta penalización de rendimiento inevitable y evita otras optimizaciones. En su lugar, debes usar la nueva API deIndicationNodeFactory
.
Correcciones de errores
- Ahora,
BasicTextField
validará previamente una pequeña selección de asignaciones de desplazamiento cuando se paseVisualTransformation
. Esto ayuda a detectar errores de programación comunes que generan excepciones irrecuperables en pases posteriores de medición o extracción. Si se arroja durante la composición, es más probable que los desarrolladores vean estos errores durante el desarrollo, lo que ayuda a evitar fallas en la producción. (I0fd42) VisualTransformation
no arrojará una excepción si devuelves un índice no válido para un índice no válido (b/316401857 ).
Versión 1.6
Versión 1.6.8
12 de junio de 2024
Lanzamiento de androidx.compose.foundation:foundation-*: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.foundation:foundation-*: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.foundation:foundation-*:1.6.6
. La versión 1.6.6 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un error por el que, en ciertas condiciones, activar o desactivar los atributos
enabled
oreadOnly
deTextField
provocaba una falla. (Iae17b)
Versión 1.6.5
3 de abril de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.6.5
. La versión 1.6.5 contiene estas confirmaciones.
Correcciones de errores
- Se agregaron registros de depuración a errores difíciles de reproducir en Row/Column: (b/300280216 y b/297974033)
Versión 1.6.4
20 de marzo de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.6.4
. La versión 1.6.4 contiene estas confirmaciones.
Correcciones de errores
- Ya no falla el gesto de selección de mantener presionado y, luego, arrastrar que se mueve fuera de los límites de diseño del texto en el primer fotograma del arrastre. (Icdf90, b/325307463)
Versión 1.6.3
6 de marzo de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.6.3
. La versión 1.6.3 contiene estas confirmaciones.
Versión 1.6.2
21 de febrero de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.6.2
. La versión 1.6.2 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió el problema por el que
AnimateContentSize
no se restablecía correctamente. (I07051) - Se solucionó el problema por el que
intrinsicHeight
del texto se almacenaba en caché en exceso en algunas circunstancias. (3cd398, b/217910352)
Versión 1.6.1
7 de febrero de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.6.1
. La versión 1.6.1 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió la medida de la cuadrícula escalonada cuando se desplaza más allá del límite. (bffc39)
- Se agregó una verificación para el diseño con dimensiones grandes. (e74af5)
- Se corrigió la ubicación de los elementos de tamaño 0 al inicio de la cuadrícula escalonada. (785f94)
- Llama a la devolución de llamada onRelease en el mismo orden que onForgotten. (31ce3b)
Versión 1.6.0
24 de enero de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.6.0
. La versión 1.6.0 contiene estas confirmaciones.
Cambios importantes desde la versión 1.5.0
- Nuevo modificador
Modifier.anchoredDraggable
que desbloquea la capacidad de arrastrar y animar entre un conjunto predefinido de anclajes. Este modificador está diseñado para reemplazar aModifier.swipeable
. Obtén información para usarlo y migrar desdeModifier.swipeable
en la guía de migración. - Se agregó la funcionalidad de arrastrar y soltar entre apps y componentes. Consulta
DragAndDropTarget
,Modifier.dragAndDropSource
y otras APIs para comenzar. Modifier.draggable2D
es el nuevo modificador que permite una compatibilidad sencilla con el arrastre en 2D. Consulta Muestra.- Se agregaron
AndroidExternalSurface
yAndroidEmbeddedExternalSurface
para facilitar la adición de componentes controlados por la superficie en Compose. - Varios cambios y mejoras en las APIs de
Pager
ysnapFlingBehaviour
- Se promovieron varias APIs de enfoque, texto y elementos insertados a APIs estables.
Versión 1.6.0-rc01
10 de enero de 2024
Lanzamiento de androidx.compose.foundation:foundation-*:1.6.0-rc01
. La versión 1.6.0-rc01 contiene estas confirmaciones.
Cambios en la API
- Se quitó el constructor de la extensión
DragAndDropTarget()
. Crea una instancia nueva conobject: DragAndDropTarget {}
. (I32318)
Versión 1.6.0-beta03
13 de diciembre de 2023
Lanzamiento de androidx.compose.foundation:foundation-*:1.6.0-beta03
. La versión 1.6.0-beta03 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió la falla que afectaba el texto muy grande medido con restricciones infinitas. (I1a7df, b/312294386)
PlatformImeOptions
ahora es una clase concreta en lugar de una interfaz. (If40a4)
Versión 1.6.0-beta02
29 de noviembre de 2023
Lanzamiento de androidx.compose.foundation:foundation-*:1.6.0-beta02
. La versión 1.6.0-beta02 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió el problema por el que
canScroll
no se actualizaba después de un desplazamiento solo de nuevo diseño. (I60a86) - Se corrigieron los problemas de
Modifier.animateItemPlacement()
yLookaheadScope
después de pequeños desplazamientos. (I3a2b7)
Versión 1.6.0-beta01
15 de noviembre de 2023
Lanzamiento de androidx.compose.foundation:foundation-*:1.6.0-beta01
. La versión 1.6.0-beta01 contiene estas confirmaciones.
Cambios en la API
- El modificador
DragAndDropTarget
ahora toma elDragAndDropTarget
receptor de forma explícita y tiene una lambda para habilitar una sesión de arrastrar y soltar. Ahora hay dos funciones de fábrica para unDragAndDropModifierNode
. Una para recibir transferencias y otra para transferir datos (I69481) - Se actualizó
maximumFlingVelocity
para que se represente como Float. Se actualizó la documentación para aclarar la unidadmaximumFlingVelocity
. (I8adc7) Se cambió el nombre de
onDragAndDropStart
en la fábricaDragAndDropModifierNode
poracceptDragAndDropTransfer
.Se agregó
acceptsDragAndDropTransfer
aldragAndDropTarget
Modifier
para aceptar desde una sesión de arrastrar y soltar. Esta lambda devuelve unDragAndDropTarget
viable si le interesa una sesión de arrastrar y soltar. Se reemplazaron otras lambdas para procesar eventos de arrastre.Se agregó una función de fábrica
DragAndDropTarget
para recibir desde sesiones de arrastrar y soltar (Iebf3a).Exponer
startDragImmediately
enAnchoredDraggable
permite controlar la detección de gestos de arrastre cuando se usa. Es útil configurarlo cuando el widget se anima hacia un anclaje objetivo. Consulta Muestra. (Ie6d13, b/285139987)Las APIs de Foundation Tooltip ahora son
@ExperimentalFoundationApi
(I30b0b).Se quitó
DragAndDropInfo
como un tipo.DragAndDropModifierNode.drag
ahora toma parámetros para la lambdatransferData
, el tamaño de la decoración y la decoración de arrastreDrawScope
.DragAndDropTarget
tiene métodos para eventos particulares de arrastrar y soltar en lugar de ser un solo método abstracto.Se cambió el nombre de
onDragAndDropEvent
en la función de fábrica para unDragAndDropModifierNode
aonDragAndDropStart
para comunicar mejor que elDragAndDropTarget
proporcionado solo es válido para una sesión de arrastrar y soltar determinada.Se quitó
DragAndDropEventType
(I645b1).Se cambió el nombre de
PlatformTextInputModifierNode.runTextInputSession
aestablishTextInputSession
. (I03cd0)Reemplaza
OriginalText
porTextSubstitution
. (Ifa5a8)Se cambió el nombre de
PlatformTextInputModifierNode.textInputSession
arunTextInputSession
. (Ie9c6b)Los elementos secundarios de
SubcomposeLayout
(y los diseños comoLazyColumn
basados en él) que se conservan para reutilizarse en el futuro se consideran desactivados. Se introdujo una nueva API de prueba deassertIsDeactivated()
para probar esos nodos. El resto de las APIs de prueba filtrarán los nodos desactivados de forma predeterminada. (I2ef84, b/187188981)Se cambió el nombre del parámetro
clippingEnabled
deModifier.magnifier
aclip
.El parámetro
magnifierCenter
deModifier.magnifier
se puede anular y conserva el mismo comportamiento predeterminado. (I6aa66)Las APIs de Material
SwipeToReveal
(para Cards y Chips) ahora dependen de una API basada en ranuras (como recomienda Compose) en lugar de instancias basadas en clases de datos para crear esas ranuras. Este es un cambio rotundo. Consulta la demostración y el código de muestra para ver ejemplos de cómo usar la nueva API. (Ia8943)
Correcciones de errores
- Implementa equals y hashcode para
PageSize.Fixed
. (Ie3ede, b/300134276) - Se corrigió un error que provocaba que el diseño de
BasicText
no se contrajera cuando cambiabaminWidth
yminWidth
era menor que las restricciones de medición inicialesmaxWidth
(Idb19c). - Se agregó compatibilidad con el renderizador para el gradiente de barrido en
ArcLine
. (I4d5bb) - Se corrigió un problema de compatibilidad binaria con el cambio de inserción de ventana (Iee695).
- Se quitó la capa central de material para el botón o chip de Material 3, ya que las comparativas de rendimiento muestran un mejor rendimiento sin ella. (I55555)
Versión 1.6.0-alpha08
18 de octubre de 2023
Lanzamiento de androidx.compose.foundation:foundation-*:1.6.0-alpha08
. La versión 1.6.0-alpha08 contiene estas confirmaciones.
Nuevas funciones
Modifier.draggable2D
es el nuevo modificador que permite una compatibilidad sencilla con el arrastre en 2D. Consulta Sample (Id95f5, b/214412658).
Cambios en la API
- Se cambió el nombre de la lambda
onDrawDragShadow
deModifier.dragAndDrawSource
pordrawDragDecoration
y el del parámetro de tamaño deDragAndDropInfo
pordragDecorationSize
. (Id0e30, b/303904810) - Se cambió el nombre del parámetro
decorationBox
deBasicTextField2
adecorator
. Su tipo también se cambia a una interfaz funcional equivalenteTextFieldDecorator
. (I23c1c)
Correcciones de errores
- Se mejoró la documentación sobre
BasicTextField
en relación con los requisitos deonValueChange
. (I90fc9, b/160257648)
Versión 1.6.0-alpha07
4 de octubre de 2023
Lanzamiento de androidx.compose.foundation:foundation-*:1.6.0-alpha07
. La versión 1.6.0-alpha07 contiene estas confirmaciones.
Cambios en la API
- Se introdujo
PlatformTextInputMethodTestOverride
para escribir pruebas para editores de texto personalizados. (Id159b) - Se cambió el nombre de
GraphicsSurface
aAndroidExternalSurface
(I11680). - Se agregó la marca temporal
DisableNonLinearFontScalingInCompose
para inhabilitar el escalamiento de fuente no lineal. EstableceDisableNonLinearFontScalingInCompose = true
en tus pruebas si necesitas tiempo para limpiarlas. Esta marca se quitará en Compose 1.6.0-beta01. (Ic9486) - Se agregaron colecciones de
ColorList
yColorSet
que evitan las asignaciones. (I744bd) - Este cambio quita
shortSnapVelocityThreshold
, que se convirtió en un detalle de implementación de las implementaciones deSnapLayoutInfoProvider
. (I65f6d) - Se agregaron los modificadores
dragAndDropSource
para iniciar sesiones de arrastrar y soltar, ydragAndDropTarget
para recibir elementos de sesiones de arrastrar y soltar (Ib7828, b/286038936). - Se actualizó la documentación de
SnapPositionInLayout
y el método de posición. Se introdujeron padding de contenido en el método de posición enSnapPositionInLayout
. (Id7938, b/300116110) - Se agregó
UndoState
aTextFieldState
, lo que permite deshacer o rehacer los cambios realizados por el usuario. (Icc024)
Correcciones de errores
- Se corrigió
basicMarquee
que no se animaba después de un cambio de velocidad. (Id2e77, b/297974036)
Versión 1.6.0-alpha06
20 de septiembre de 2023
Lanzamiento de androidx.compose.foundation:foundation-*:1.6.0-alpha06
. La versión 1.6.0-alpha06 contiene estas confirmaciones.
Nuevas funciones
- Nuevos wrappers de elementos componibles para
SurfaceView
,TextureView: GraphicsSurface()
yEmbeddedGraphicsSurface()
. Es una API experimental y está sujeta a cambios y modificaciones. (I9ddb2) Modifier.magnifier()
ahora es una API estable. Esto incluye la eliminación deMagnifierStyle
en favor de los parámetros intercalados en el propio modificador. (I83bec, b/298381260, b/262367109, b/261438887)
Cambios en la API
- Se introdujeron
updateCurrentPage
yupdateTargetPage
enScrollScope
, que son las últimas piezas necesarias para permitir la personalización del desplazamiento animado a través dePagerState.scroll
. (I9cad5, b/267744105, b/243786897) - Quita la densidad de
SnapFlingBehavior
. Todas las implementaciones deSnapLayoutInfoProvider
ya tienen una forma de acceder a la densidad, por lo que se podría quitar el alcance del receptor, lo que generaría una implementación menos compleja deSnapFlingBehavior
ySnapLayoutInfoProviders
. (I153c3) - Se marcaron más modificadores como estables. (I56af1, b/298046462)
- Se quitó
SnapStepSize
deSnapLayoutInfoProvider
El cálculo se debe realizar con la información de diseño y proporcionarse a través de los desplazamientos de acercamiento o ajuste. (If320c)
Cambios en el comportamiento
- Compose ahora usa un escalamiento de fuente no lineal para mejorar la legibilidad y la accesibilidad. Cuando el factor de escala de la fuente es superior al 100% en la configuración del sistema, el texto pequeño aumentará de tamaño normalmente, pero el texto que ya es grande solo aumentará un poco. Además, las alturas de línea definidas en SP se ajustarán automáticamente para mantener la proporción con la altura prevista de la escala del 100%. Consulta las prácticas recomendadas para el ajuste de la escala de fuentes para obtener más información. (I11518)
Correcciones de errores
- Se quitó el uso de
rememberSaveable
para las sugerencias. (Icc131, b/299500338)
Versión 1.6.0-alpha05
6 de septiembre de 2023
Lanzamiento de androidx.compose.foundation:foundation-*:1.6.0-alpha05
. La versión 1.6.0-alpha05 contiene estas confirmaciones.
Cambios en la API
- Agrega sobrecargas para
BasicSecureTextField
que acepten un valor inmutable y una devolución de llamada para cambiar ese valor, al igual que la API deBasicTextField
actual. (Ia4882) - Agrega
Modifier.preferKeepClear()
para marcar como componible y preferir no usar ventanas flotantes en el nivel de API 33 y versiones posteriores. (Ib51d5, b/297260115) - Las velocidades de desplazamiento rápido en los componentes de View, como
ScrollView
yRecyclerView
, se limitan aViewConfiguration.ScaledMaximumFlingVelocity
. Compose ahora contiene su propia versión demaximumFlingVelocity
, que ahora se aplica aDraggable
. (Ibf974) - Se quitaron las sobrecargas obsoletas de
Pager
yPagerState
. (Iea07e) - Se agregó
BasicTooltipBox
acompose.foundation
y se actualizaronPlainTooltipBox
yRichTooltipBox
para usarTooltipBox
con los nuevos elementosPlainTooltip
yRichTooltip
componibles. (I79e1d)
Versión 1.6.0-alpha04
23 de agosto de 2023
Lanzamiento de androidx.compose.foundation:foundation-*:1.6.0-alpha04
. La versión 1.6.0-alpha04 contiene estas confirmaciones.
Cambios en la API
- Se agregó la interfaz
ReusableComposition
para administrar el ciclo de vida y la reutilización de subcomposiciones. (I812d1, b/252846775) Modifier.focusGroup
se promovió a APIs estables. (I7ffa3)- Agrega sobrecargas para
BasicTextField2
que acepten un valor inmutable y una devolución de llamada para cambiar ese valor, al igual que la API deBasicTextField
actual. (I3f2b8) GridItemSpan::currentLineSpan
ahora es una API estable. (Icc29c)- El lienzo que acepta
contentDescription
ahora es una API estable. (Ib3d29) - Se introdujo
viewportSize
enScrollState
, una forma de conocer el tamaño deviewPort
del componente que usaScrollState
después de que se realiza la medición. (I8b85a, b/283102682) - Se corrigió un problema por el que la recuperación previa en Pager no coincidía con el comportamiento en Views. (I93352, b/289088847)
Modifier.consumeWindowInsets(PaddingValues)
ahora es estable.- Se quitó la API de
Deprecated Modifier.consumedWindowInsets
. UsaModifier.consumeWindowInsets
en su lugar. (Id72bb)
- Se quitó la API de
Versión 1.6.0-alpha03
9 de agosto de 2023
Lanzamiento de androidx.compose.foundation:foundation-*:1.6.0-alpha03
. La versión 1.6.0-alpha03 contiene estas confirmaciones.
Cambios en la API
- Se agregó la sobrecarga de
LazyLayout
, que acepta una expresión lambda deLazyLayoutItemProvider
, no un objeto simple como antes. La sobrecarga anterior dejó de estar disponible. (I42a5a) - Se agregó compatibilidad para configurar
privateImeOptions
(Idb772).
Correcciones de errores
- Se corrigió el problema por el que los campos de texto mostraban el teclado y se podían editar cuando
readOnly
era verdadero. También se corrigió el problema por el que no se mostraba el teclado cuandoreadOnly
cambiaba de verdadero a falso mientras se enfocaba. (I34a19, b/246909589)
Versión 1.6.0-alpha02
26 de julio de 2023
Lanzamiento de androidx.compose.foundation:foundation-*:1.6.0-alpha02
. La versión 1.6.0-alpha02 contiene estas confirmaciones.
Cambios en la API
- Se introdujo
PagerLayoutInfo
con información recopilada después de que se aprobó una medida enPager
. También se introdujoPageInfo
, la información sobre una sola página medida enPager
. (Iad003, b/283098900) - Se agregaron anotaciones adicionales para especificar las entradas permitidas en los elementos componibles (I51109).
- Se agregó
SemanticsNodeInteraction.requestFocus
como una forma más conveniente y detectable de solicitar el enfoque en las pruebas. (Ie8722) - Se rediseñó por completo la API de
PlatformTextInput*
. (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardController
yLocalSoftwareKeyboardController
dejaron de ser experimentales.LocalSoftwareKeyboardController
ahora también es unCompositionLocal
adecuado. (I4c364)Modifier.transformable
ahora proporciona el delta de panoramización en el parámetrocanPan
para ayudar a determinar la dirección de la panoramización y permitirla o rechazarla. (I692aa, b/266829800)- Se actualizó el modificador
consumeWindowInsets
para extender la superclaseAbstractComposeView
(Iacd74, b/269479941).
Versión 1.6.0-alpha01
21 de junio de 2023
Lanzamiento de androidx.compose.foundation:foundation-*:1.6.0-alpha01
. La versión 1.6.0-alpha01 contiene estas confirmaciones.
Nuevas funciones
- Se introdujo una nueva API de
AnchoredDraggable
en Foundation. Se puede usar para compilar componentes que se pueden arrastrar entre estados discretos, como las hojas inferiores modales. Esta API reemplaza la API deSwipeable
de Material. (I4a2ed)
Cambios en la API
- Se agregó compatibilidad con
InputConnection#requestCursorUpdates
(I0c69b). - Se agregó
scrollAnimationSpec
para permitir especificaciones de animación personalizadas. Se actualizóBringIntoViewCalculator
aBringIntoViewScroller
. (Idb741) - Se agregó el tipo
ResourceResolutionException
para encapsular los objetos Throwable que se arrojan cuando se intenta cargar recursos de mapa de bits con una descripción de la ruta de acceso del recurso que no se pudo cargar. (I19f44, b/230166331, b/278424788) - Se agregaron propiedades y acciones semánticas para admitir la traducción de texto. (I4a6bc)
- Se introdujo una API de
BringIntoViewCalculator
que se puede usar para personalizar la forma en que los componentes comoScrollable
responden a las solicitudes debringIntoView
. Se cambió la sobrecarga de desplazable para que, de manera opcional, acepte una instancia deBringIntoViewCalculator
. (Iaf5af)
Correcciones de errores
- Se agregó una verificación de lint para advertir si creas un
MutableInteractionSource
en la composición sin recordarlo, de manera similar a las verificaciones de lint para crear un estado mutable oAnimatable
. (I5daae) - Se agregó compatibilidad para la selección con el mouse. La selección basada en el tacto se expandirá por palabra y se reducirá por carácter. (Ic0c6c, b/180639271)
- Se agregó la interfaz
FocusTargetModifierNode
que se puede usar para crear unFocusTarget
personalizado. (I9790e)
Versión 1.5
Versión 1.5.4
18 de octubre de 2023
Lanzamiento de androidx.compose.foundation:foundation-*: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.foundation:foundation-*:1.5.3
. Esta versión no tiene cambios.
Versión 1.5.2
27 de septiembre de 2023
Lanzamiento de androidx.compose.foundation:foundation-*:1.5.2
. La versión 1.5.2 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un error en el texto que provocaba fallas en ciertas circunstancias cuando se invalidaba la semántica.
Versión 1.5.1
6 de septiembre de 2023
Lanzamiento de androidx.compose.foundation:foundation-*:1.5.1
. La versión 1.5.1 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió el problema por el que los campos de texto mostraban el teclado y se podían editar cuando
readOnly
era verdadero. También se corrigió el problema por el que no se mostraba el teclado cuandoreadOnly
cambiaba de verdadero a falso mientras se enfocaba. (I34a19, b/246909589)
Versión 1.5.0
9 de agosto de 2023
Lanzamiento de androidx.compose.foundation:foundation-*:1.5.0
. La versión 1.5.0 contiene estas confirmaciones.
Cambios importantes desde la versión 1.4.0
- Muchos modificadores fundamentales, incluidos
Modifier.clickable
,Modifier.draggable
,Modifier.scrollable
, el modificador de diseño y muchos más, se migraron a la API deModifier.Node
, lo que reduce la sobrecarga en la composición inicial. - Se realizaron mejoras en la estabilidad de los paginadores. Se corrigieron muchos errores.
- Los parámetros de
pageCount
ahora se encuentran enPagerState
en lugar del Pager en sí.
Versión 1.5.0-rc01
26 de julio de 2023
Lanzamiento de androidx.compose.foundation:foundation-*:1.5.0-rc01
. La versión 1.5.0-rc01 contiene estas confirmaciones.
Correcciones de errores
Se encuentra disponible una inspección opcional para recomendar la migración de llamadas de
mutableStateOf()
a sus tipos especializados correspondientes para los tipos primitivos. Su ID de lint esAutoboxingStateCreation
. Anteriormente, esta inspección estaba habilitada de forma predeterminada para todos los proyectos. Para ver esta advertencia en el editor de Android Studio y en los resultados de lint de tu proyecto, cambia su gravedad de informativa a advertencia (o superior) declarandowarning "AutoboxingStateCreation"
dentro de la configuración debuild.gradle
obuild.gradle.kts
de tu módulo, como se muestra (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
Versión 1.5.0-beta03
28 de junio de 2023
Lanzamiento de androidx.compose.foundation:foundation-*:1.5.0-beta03
. La versión 1.5.0-beta03 contiene estas confirmaciones.
Versión 1.5.0-beta02
7 de junio de 2023
Lanzamiento de androidx.compose.foundation:foundation-*: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.foundation:foundation-*:1.5.0-beta01
. La versión 1.5.0-beta01 contiene estas confirmaciones.
Cambios en la API
- Implementa
PlatformDataProvider
para proporcionar la frecuencia cardíaca y los pasos diarios. Se quitó la interfazSensorGateway
de la API pública. (I55b84)
Correcciones de errores
- Se reducen las asignaciones durante las mediciones de listas, cuadrículas, etcétera, con carga diferida (Iaf9e2).
- Se redujeron las asignaciones cuando se aplican instantáneas (I65c09)
- Se quitaron las asignaciones de las animaciones de resorte (Ie9431).
- Se quitó la asignación de
TextLayout
(I0fd11). - Se quitaron varias asignaciones en el seguimiento de la velocidad del puntero (I26bae).
Versión 1.5.0-alpha04
10 de mayo de 2023
Lanzamiento de androidx.compose.foundation:foundation:1.5.0-alpha04
y androidx.compose.foundation:foundation-layout:1.5.0-alpha04
. La versión 1.5.0-alpha04 contiene estas confirmaciones.
Cambios en la API
- Se agregó
TextStyle.merge(...)
optimizado con la lista completa de parámetros. (Iad234, b/246961787) - Se introdujo un
SnapLayoutInfoProvider
que se puede usar conLazyGridState
. (I92134, b/269237141, b/260914964) - Se agregó
Modifier.animateItemPlacement()
experimental para el alcance de elementos de cuadrículas escalonadas diferidas. Puedes aplicarlo a los elementos para lograr las animaciones de cambio o reordenamiento de posición de automatización. (I4b62d, b/257034719) - Se asciende
GridCells.FixedSize
a estable.FixedSize
define unLazyGrid
en el que cada celda toma un tamaño exacto en el eje transversal, y el espacio restante se distribuye según la disposición del eje transversal. (I8542f) - Se introdujo el alcance del receptor
PagerScope
para Pager y una función de utilidad para calcular un desplazamiento de página determinado. (If2577) - Se introduce
snapPositionalThreshold
cuando se crea un comportamiento de navegación de ajuste. Usa este parámetro para especificar un umbral de posición para el ajuste corto en Pager. (If8f7f) - Se reemplazó
SnapLayoutInfoProvider.calculateSnappingOffsetBounds
concalculateSnappingOffset
. En este nuevo método, simplemente solicitamos el siguiente desplazamiento al que se ajustará. El cálculo de los límites se debe realizar a nivel de la implementación, ya que puede diferir según cómo se necesite que se produzca el ajuste. (I923a4) - Las APIs de
LazyStaggeredGrid
se promovieron a estables. (I633a5) - Se quita
pageCount
deHorizontal/VerticalPager
. Se debe proporcionar en la creación del estado. Se actualizaronPagerState
yrememberPagerState
para aceptarpageCount
. (Ieb52d, b/266965072) - Se quita
pageCount
deHorizontal/VerticalPager
. Se debe proporcionar en la creación del estado. Se actualizaronPagerState
yrememberPagerState
para aceptarpageCount
. (Ifa3cb, b/266965072) - Introduce
shortSnapVelocityThreshold
en elSnapFlingBehavior
de Pager. (I7379e, b/275579012) - Agrega un
FlowRowScope
y unFlowColumnScope
. (I54fe2)
Correcciones de errores
- Ya no fallan las llamadas para obtener la semántica del texto cuando las restricciones tienen
minWidth
yminHeight
. (Ibd072) - Se corrigió la regresión por la que no se mostraba el teclado para los campos de texto dentro de los diálogos que no se creaban con el elemento
Dialog
componible. (I82551, b/262140644)
Versión 1.5.0-alpha03
19 de abril de 2023
Lanzamiento de androidx.compose.foundation:foundation:1.5.0-alpha03
y androidx.compose.foundation:foundation-layout:1.5.0-alpha03
. La versión 1.5.0-alpha03 contiene estas confirmaciones.
Esta versión habilita la nueva pila de renderización de texto para Compose. La nueva pila está optimizada para el rendimiento, y no deberías ver ningún cambio visible.
Si ves cambios en el texto renderizado, puedes depurar configurando NewTextRendering1_5 = false
para confirmar la diferencia de comportamiento. Establecer este parámetro forzará la recomposición. Informa cualquier diferencia de comportamiento como errores.
Se quitará la marca de depuración antes del lanzamiento de la versión beta01 de 1.5.(Iada23, b/246960758)
Cambios en la API
- Haz que
FlowColumn/FlowRow
sea intercalado. (Idab37)
Versión 1.5.0-alpha02
5 de abril de 2023
Lanzamiento de androidx.compose.foundation:foundation:1.5.0-alpha02
y androidx.compose.foundation:foundation-layout:1.5.0-alpha02
. La versión 1.5.0-alpha02 contiene estas confirmaciones.
Cambios en la API
- Se agregó compatibilidad con celdas de tamaño fijo en
LazyGrid
y su organización con la disposición del eje transversal. (I83ed9, b/235121277, b/267942510) - Se agregó compatibilidad con carriles de tamaño fijo en
LazyStaggeredGrid
y se organizaron con una disposición del eje transversal. (I7d519) - Ahora se pueden abrir los objetos
UrlAnnotation
en los objetosAnnotatedString
a través de servicios de accesibilidad, comoTalkBack
. (If4d82, b/253292081) - Se agregó la acción de semántica
InsertTextAtCursor
para los campos de texto. (I11ed5) - Las acciones de prueba relacionadas con el texto (p.ej.,
performTextInput
) ahora solicitarán el enfoque directamente, usando la acción semántica, en lugar de hacer clic en el campo. (I6ed05) - Se agregó compatibilidad con el espaciado y la disposición del eje transversal con
verticalArrangement
enFlowRow
yhorizontalArrangement
enFlowColumn
. También quitamos los elementosverticalAlignment
yhorizontalAlignment
de nivel superior enFlowRow/FlowColumn
. Los desarrolladores pueden usarModifier.align
en su lugar. Esto reduce la confusión entre las convenciones de nomenclatura deverticalAlignment
yverticalArrangement
. (I87b60, b/268365538)
Versión 1.5.0-alpha01
22 de marzo de 2023
Lanzamiento de androidx.compose.foundation:foundation:1.5.0-alpha01
y androidx.compose.foundation:foundation-layout:1.5.0-alpha01
. La versión 1.5.0-alpha01 contiene estas confirmaciones.
Cambios en la API
- Se refactorizan el texto y
BasicText
para usar el nuevo sistema de modificadores. Esto genera mejoras significativas en el rendimiento en muchos casos. No se debería ver ningún cambio. (If1d17, b/246961435) - Se agregó la acción semántica
PerformImeAction
para invocar la acción del IME en los nodos del editor de texto. (Ic606f, b/269633506)
Correcciones de errores
- Se actualizaron los elementos internos de
Modifier.hoverable
. El modificadorhoverable
solo se mostrará en el inspector si está habilitado. (I82103)
Versión 1.4
Versión 1.4.3
3 de mayo de 2023
Lanzamiento de androidx.compose.foundation:foundation:1.4.3
y androidx.compose.foundation:foundation-layout:1.4.3
sin cambios (solo se incrementó la versión).
Versión 1.4.2
19 de abril de 2023
Lanzamiento de androidx.compose.foundation:foundation:1.4.2
y androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.4.1
y androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.4.0
y androidx.compose.foundation:foundation-layout:1.4.0
. La versión 1.4.0 contiene estas confirmaciones.
Cambios importantes desde la versión 1.3.0
- Se agregó la integración de compatibilidad de emojis a
Text
yTextField
, así como el párrafo de nivel inferior. Esta opción se habilita de forma predeterminada cuando se configura emojicompat. EmojiCompat
se puede configurar en un texto específico mediantePlatformParagraphStyle
.- Se agregó compatibilidad con el intervalo de línea completa a
LazyStaggeredGrid
(I28252). - Se agregó
onHover
experimental aClickableText
(I6938f). - Se introdujeron nuevas sobrecargas experimentales para la función
runComposeUiTest
y las funcionescreate*ComposeRule
que aceptan parámetrosCoroutineContext
. El contexto se usará para la composición de prueba y cualquier llamadaLaunchedEffect
yrememberCoroutineScope()
en la composición (I10614, b/265177763). FlowRow
yFlowColumn
ahora están disponibles como@ExperimentalFoundationApi
, que permiten un diseño más flexible basado en filas y columnas de componentes que se dividirán en una nueva línea si no hay suficiente espacio en el eje principal (I3a7b2).Modifier.basicMarquee()
está disponible como función experimental para mostrar contenido con un efecto de marquesina desplazable. (I2df44, b/139321650).
Versión 1.4.0-rc01
8 de marzo de 2023
Lanzamiento de androidx.compose.foundation:foundation:1.4.0-rc01
y androidx.compose.foundation:foundation-layout:1.4.0-rc01
. La versión 1.4.0-rc01 contiene estas confirmaciones.
Cambios en la API
- Se introdujo una nueva API de
PlatformTextInputAdapter
de bajo nivel para compilar implementaciones de entrada de texto personalizadas que se comunican directamente con las APIs de la plataforma. (I58df4) - Se agregó compatibilidad con el diseño inverso a
LazyStaggeredGrid
. (I3ef4a)
Correcciones de errores
- La acción semántica
SetText
deBasicTextField
ahora actualizará el búfer de texto con la misma ruta de código que las actualizaciones del IME y las funciones de prueba (p.ej.,performTextReplacement
). - Las funciones de prueba de texto
performTextClearance
,performTextReplacement
yperformTextSelection
ahora usanSemanticsActions
. (I0807d, b/269633168, b/269624358)
Versión 1.4.0-beta02
22 de febrero de 2023
Se lanzaron androidx.compose.foundation:foundation:1.4.0-beta02
y androidx.compose.foundation:foundation-layout:1.4.0-beta02
. La versión 1.4.0-beta02 contiene estas confirmaciones.
Cambios en la API
- Se agregó una nueva devolución de llamada
Modifier.Node.onReset()
, que permite restablecer un estado local para controlar correctamente el caso cuandoLayout
se vuelva a usar (por ejemplo, como un elemento deLazyColumn
). Se corrigióFocusTargetModifierNode
para restablecer correctamente el estado enfocado (I65495, b/265201972). - Se agregó el parámetro
BlendMode
a los métodosDrawScope.drawText
,Paragraph.paint
yMultiParagraph.paint
para admitir diferentes algoritmos de combinación cuando se dibuja texto en Canvas (I57508). - Se quitó la API de
modifierElementOf()
. En su lugar, extiende desdeModifierNodeElement
directamente. (Ie6d21).
Correcciones de errores
- Los controladores de selección ajustables ya no se puede usar para seleccionar un carácter parcial (Idedd1).
- Se corrigió la falla que ocurría cuando se presionaba Ctrl + retroceso en un
TextField
vacío (I0427f, b/244185537).
Versión 1.4.0-beta01
8 de febrero de 2023
Se lanzaron androidx.compose.foundation:foundation:1.4.0-beta01
y androidx.compose.foundation:foundation-layout:1.4.0-beta01
. La versión 1.4.0-beta01 contiene estas confirmaciones.
Nuevas funciones
- A partir de la versión 1.3, se agregó la integración de compatibilidad de emojis a
Text
yTextField
, así como el párrafo de nivel inferior. Esta opción se habilita de forma predeterminada cuando se configura emojicompat. EmojiCompat
se puede configurar en un texto específico mediantePlatformParagraphStyle
.
Cambios en la API
- Se agregó la implementación común de la API de
PinnableContainer
que se usa en todos losLazyLayouts
para retener los elementos que salen de la composición, pero que aún deben estar activos (If45a4). - Se cambió el nombre de
PinnableContainer.PinnedHandle.unpin()
porrelease()
(I4667a).
Contribución externa
- Se agregó la propiedad
mainAxisItemSpacing
aLazyListLayoutInfo
,LazyGridLayoutInfo
yLazyStaggeredGridItemInfo
(I52fad).
Versión 1.4.0-alpha05
25 de enero de 2023
Se lanzaron androidx.compose.foundation:foundation:1.4.0-alpha05
y androidx.compose.foundation:foundation-layout:1.4.0-alpha05
. La versión 1.4.0-alpha05 contiene estas confirmaciones.
Nuevas funciones
- Se agregó compatibilidad con el intervalo de línea completa a
LazyStaggeredGrid
(I28252). - Se agregó
onHover
experimental aClickableText
(I6938f). - Se introdujeron nuevas sobrecargas experimentales para la función
runComposeUiTest
y las funcionescreate*ComposeRule
que aceptan parámetrosCoroutineContext
. El contexto se usará para la composición de prueba y cualquier llamadaLaunchedEffect
yrememberCoroutineScope()
en la composición (I10614, b/265177763).
Cambios en la API
- Combina las APIs previas y posteriores de
OverscrollEffect
en las funciones combinadas "decorador"applyToScroll
yapplyToFling
. Consulta los ejemplos actualizados en la documentación para ver ejemplos de cómo implementar un efecto de sobredesplazamiento con la nueva forma de API. (I8a9c4, b/255554340). - Se agregaron más funciones de tipo/nulabilidad de funciones ocultas intercaladas y obsoletas (I24f91).
- Las APIs de
LineBreak
yHyphens
enTextStyle
pasaron a ser estables. (Ic1e1d).
Correcciones de errores
- El cursor de los campos de texto seguirá parpadeando, incluso cuando las animaciones estén inhabilitadas. (I95e70, b/265177763).
- Ahora, se anima
Modifier.basicMarquee
, incluso cuando las animaciones están inhabilitadas en la configuración del sistema (I23389, b/262298306, b/265177763).
Contribución externa
- Los métodos
notifyFocusedRect
deTextInputSession
yTextInputService
ya no son obsoletos (I23a04, b/262648050).
Versión 1.4.0-alpha04
11 de enero de 2023
Lanzamiento de androidx.compose.foundation:foundation:1.4.0-alpha04
y androidx.compose.foundation:foundation-layout:1.4.0-alpha04
. La versión 1.4.0-alpha04 contiene estas confirmaciones.
Nuevas funciones
FlowRow
yFlowColumn
ahora están disponibles como@ExperimentalFoundationApi
, que permiten un diseño más flexible basado en filas y columnas de componentes que se dividirán en una nueva línea si no hay suficiente espacio en el eje principal (I3a7b2).Modifier.basicMarquee()
está disponible como función experimental para mostrar contenido con un efecto de marquesina desplazable (I2df44, b/139321650).
Cambios en la API
FocusRequesterModifier
dejó de estar disponible y se reemplazó porFocusRequesterNode
(I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589).- El constructor de
AndroidFont
convariationSettings
ahora es una API estable y se puede usar para crear nuevos tipos de descriptores de fuente (I5adcc, b/261565807). - Se introdujo la API de
PinnableContainer
propagada por listas diferidas a través de un elemento local de composición que permite fijar el elemento actual. Esto significa que el elemento no se desechará cuando se aleje de la vista. Por ejemplo,Modifier.focusable()
fijará el elemento destacado actual con este mecanismo (Ib8881, b/259274257, b/195049010). - Se reescribió la forma en que los elementos desplazables responden a
bringIntoViewRequesters
. Además, se reescribieron los elementos enfocables para modelar mejor la complejidad de esas operaciones y manejar más casos extremos (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114). - Se agregó más nulabilidad del tipo de datos que se muestra de las funciones obsoletas y ocultas (Ibf7b0).
- Se agregó
TextMotion
experimental aTextStyle
para definir Text comoStatic(default)
o Animated. UsaTextMotion.Animated
si el texto se va a ajustar, traducir o rotar a través de la animación (I24dd7). - Se agregó
TextFieldFocusModifier
para corregir el comportamiento de navegación de enfoque en la plataforma de Android (I00303). - Se reemplazó el argumento
maxSize: IntSize
endrawText
consize: Size
para intercalarlo con otras funcionesDrawScope
.size
se establece enSize.Unspecified
de forma predeterminada, lo que no debería cambiar el comportamiento predeterminado anterior (Icd27d).
Correcciones de errores
- Se realizaron cambios en la física de ajuste en
SnapFlingBehaviour
para lograr mayor naturalidad.
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
Lanzamiento de androidx.compose.foundation:foundation:1.4.0-alpha03
y androidx.compose.foundation:foundation-layout:1.4.0-alpha03
. La versión 1.4.0-alpha03 contiene estas confirmaciones.
Cambios en la API
- En las pruebas de IU que usan una regla de Compose, no se despacharán las continuaciones reanudadas durante las devoluciones de llamada de
withFrameNanos
hasta que todas las devoluciones de llamada de marco terminen de ejecutarse. Esto coincide con el comportamiento de Compose cuando se ejecuta normalmente. Sin embargo, las pruebas que dependen del comportamiento anterior pueden fallar. Esto solo debería afectar al código que llama awithFrameNanos
owithFrameMillis
de forma directa, y cuenta con una lógica fuera de la devolución de llamada que pasa a las funciones que pueden necesitar moverse dentro de las devoluciones de llamada. Consulta los cambios de la prueba de animación en esta CL para ver ejemplos. - Se agregó el parámetro opcional
onPerformTraversals: (Long) -> Unit
al constructorTestMonotonicFrameClock
y la función de fábrica para ejecutar el código después de las devoluciones de llamada dewithFrameNanos
, pero antes de reanudar las corrutinas de los emisores. (Idb413, b/254115946, b/222093277, b/255802670). - Se introdujeron las acciones de accesibilidad de la página:
PageUp
,PageDown
,PageLeft
,PageRight
. Ten en cuenta que solo están disponibles a partir de la API 29 (Ida4ab). - Se introdujeron
HorizontalPager
yVerticalPager
como formas de mostrar elementos componibles como paginadores. Se introdujoPagerState
para controlar los paginadores y la información de consulta sobre el estado actual del paginador. Se introdujoPageSize
, una forma de controlar el tamaño de la página de un paginador, que se puede usar para crear un carrusel como paginadores. Se introdujoPagerSnapDistance
, una forma de controlar cómo funcionan los ajustes en el comportamiento de deslizamiento de los paginadores (I01120). - Se introdujo una sobrecarga en
SnapFlingBehavior.performFling
para ayudar a comprender dónde se estabilizará el deslizamiento (I569f6). - Se quitó
OverscrollEffect#isEnabled
. En lugar de tener que recordar y establecer esta marca, no despaches eventos al efecto de sobredesplazamiento en los casos en que no desees que se muestre el desplazamiento (por ejemplo, siScrollableState#canScrollForward/backward
muestran falso) (I1a4b0, b/255554340, b/255557085). - Se agregaron
ScrollableState#canScrollForward
yScrollableState#canScrollBackward
para consultar si unScrollableState
tiene espacio para desplazarse en cualquier dirección (si está dentro de los valores mínimo o máximo de su rango). El valor predeterminado es verdadero para retrocompatibilidad con implementaciones existentes deScrollableState
. Los consumidores pueden usar esto para mostrar al usuario que aún hay espacio para desplazarse. También se puede usar para evitar el envío del delta aScrollableStates
, que no tiene espacio para desplazarse en una dirección determinada, para reducir el trabajo innecesario (Idf1a0, b/255557085). - 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 correctamente las presiones en caso de que los gestos se conviertan en eventos de desplazamiento.
- Se actualizó el nombre de
snapStepSize
para que sea coherente con otros métodos deSnapLayoutInfoProvider
(Ife67c). - Se agregó
EmojiCompat
aCompose
(Ibf6f9, b/139326806). - Se cambió el nombre de
consumedWindowInsets()
aconsumeWindowInsets()
, y el dewithConsumedWindowInsets()
aonConsumedWindowInsetsChanged()
, y se cambiaron los modificadores para que sean públicos (Ie44e1).
Correcciones de errores
- Se corrigió la falla de
Modifier.animateItemPlacement()
y cuadrículas diferidas. Sucedía en algunas condiciones en las que el recuento de elementos nuevos era menor que en el anterior (I0bcac, b/253195989).
Versión 1.4.0-alpha02
9 de noviembre de 2022
Se lanzaron androidx.compose.foundation:foundation:1.4.0-alpha02
y androidx.compose.foundation:foundation-layout: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 revirtió la API de
beyondBoundCount
de las APIs Lazy* (I12197). - Se introdujo un parámetro en las APIs diferidas para componer y posicionar elementos de viewport (I69e89, b/172029355).
- 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-alpha01
24 de octubre de 2022
Lanzamiento de androidx.compose.foundation:foundation:1.4.0-alpha01
y androidx.compose.foundation:foundation-layout: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).- Se agregaron
WindowInsets.imeAnimationSourc
e yWindowInsets.imeAnimationTarget
para determinar el progreso de la animación y saber dónde estará el IME después de que se complete la animación (I356f1, b/217770337).
Versión 1.3
Versión 1.3.1
9 de noviembre de 2022
Se lanzaron androidx.compose.foundation:foundation:1.3.1
y androidx.compose.foundation:foundation-layout:1.3.1
. La versión 1.3.1 contiene estas confirmaciones.
Correcciones de errores
- Se solucionó el problema de rendimiento en
BeyondBoundsLayout
(aosp/2255266). ContentInViewModifier
no leerá coordenadas de diseño a menos que se adjunten (aosp/2241316).
Versión 1.3.0
24 de octubre de 2022
Se lanzaron androidx.compose.foundation:foundation:1.3.0
y androidx.compose.foundation:foundation-layout:1.3.0
. La versión 1.3.0 contiene estas confirmaciones.
Cambios importantes desde la versión 1.2.0
- Se introdujeron versiones experimentales de
LazyVerticalStaggeredGrid
yLazyHorizontalStaggeredGrid
. - Se agregaron
SnapFlingBehavior
,rememberSnapFlingBehavior
y otras APIs correspondientes como experimentales. Modifier.clickable
,Modifier.toggleable
yModifier.selectable
ahora muestran ondas si se hace clic con el teclado o el pad direccional en un control remoto.
Versión 1.3.0-rc01
5 de octubre de 2022
Lanzamiento de androidx.compose.foundation:foundation:1.3.0-rc01
y androidx.compose.foundation:foundation-layout:1.3.0-rc01
. La versión 1.3.0-rc01 contiene estas confirmaciones.
Cambios en la API
- Se introdujo
lowVelocityAnimationSpec
, que se usa en el paso de enfoque cuando no hay suficiente velocidad de deslizamiento para decaer (Iaeb27). - Se agregaron nuevos guiones experimentales de API para admitir la separación silábica automática en Text (Iaa869).
Versión 1.3.0-beta03
21 de septiembre de 2022
Se lanzaron androidx.compose.foundation:foundation:1.3.0-beta03
y androidx.compose.foundation:foundation-layout:1.3.0-beta03
. La versión 1.3.0-beta03 contiene estas confirmaciones.
Cambios en la API
- Se agregaron opciones para personalizar el salto de línea en el texto (I86907).
- Los elementos
BringIntoViewResponder
ahora pueden obtener los límites más actualizados de una solicitud mientras la procesan (If86a5, b/241591211). - Se agregó compatibilidad con espaciado entre elementos a
Staggered Grid
experimental (I10b82). - Se introdujo el padding del contenido a
Staggered Grid
experimental (I342ea). - Se cambió el argumento
size:IntSize
conconstraints: Constraints
en el métodoTextMeasurer.measure
para admitir restricciones de ancho mínimo (I37530, b/242707525). - Se agregó
Modifier.withConsumedWindowInsets()
a fin de consumirWindowInsets
para usarlo fuera dewindowInsetsPadding
. - Se agregó
MutableWindowInsets
para permitir un cambio fácil deWindowInsets
sin recomposición (I7fd28, b/237019262, b/243119659).
Versión 1.3.0-beta02
7 de septiembre de 2022
Lanzamiento de androidx.compose.foundation:foundation:1.3.0-beta02
y androidx.compose.foundation:foundation-layout:1.3.0-beta02
. La versión 1.3.0-beta02 contiene estas confirmaciones.
Cambios en la API
- Versión inicial de
StaggeredGrid
experimental (Ia48be). - Se cambió el nombre de
FocusDirection.In
yFocusDirection.Out
porFocusDirection.Enter
yFocusDirection.Exit
(Ia4262, b/183746982). - Se introdujo una sobrecarga de
rememberSnapFlingBehavior
que proporciona una forma rápida de habilitar el ajuste enLazyLists
(Ifb48a). - Se reemplazó la fábrica
snapFlingBehavior
por una claseSnapFlingBehavior
concreta. Los métodosSnapLayoutInfoProvider
se limitaron a Density para facilitar las conversiones de Dp<->Px a los usuarios de la API (I54a11). - Actualiza
LazyLayoutMeasureScope.measure
para mostrar una lista de objetos que se puedan ubicar, donde se destaque la inmutabilidad deseada del valor que se muestra (I48b7c). - Se introdujo
SnapLayoutInfoProvider
, que toma unLazyListState
a fin de crear una instancia deSnapLayoutInfoProvider
que se puede usar a fin de habilitar unFlingBehavior
de ajuste paraLazyLists
(I2dd10).
Correcciones de errores
- Se refactoriza
AwaitPointerEventScope#awaitLongPressOrCancellation
para que coincida con otras funciones en espera (I646e6).
Versión 1.3.0-beta01
24 de agosto de 2022
Lanzamiento de androidx.compose.foundation:foundation:1.3.0-beta01
y androidx.compose.foundation:foundation-layout:1.3.0-beta01
. La versión 1.3.0-beta01 contiene estas confirmaciones.
Cambios en la API
- Se quitó
pointerPosition
deOverscrollEffect
. Los efectos que se preocupan por la posición del puntero pueden usarModifier.pointerInput { }
eneffectModifier
para obtener la posición actual (I9f606, b/241239306). - Se expuso
AwaitPointerEventScope#awaitLongPressOrCancellation
como un bloque de compilación adicional para la detección de gestos más compleja (I04374, b/181577176). - Se agregó
lazyListSnapLayoutInfoProvider
para habilitar el ajuste en listas diferidas (I3ecdf). - Se introdujo
SnapFlingBehavior
, un comportamiento de navegación que permite ajustar listas. Proporciona una instancia deSnapLayoutInfoProvider
con información sobre tu diseño de ajuste (Ie754c).
Versión 1.3.0-alpha03
10 de agosto de 2022
Lanzamiento de androidx.compose.foundation:foundation:1.3.0-alpha03
y androidx.compose.foundation:foundation-layout:1.3.0-alpha03
. La versión 1.3.0-alpha03 contiene estas confirmaciones.
Cambios en la API
- Las fuentes de recursos ahora admiten la configuración de variaciones de fuentes (nivel de API 26 o versiones posteriores). (I900dd, b/143703328).
- Agegamos compatibilidad con fuentes variables en
DeviceFontFamilyNameFont
(Ic1279, b/143703328). - Se quitó la anotación experimental de
PlatformTextStyle
yLineHeightStyle
(I64bef). - Los campos de texto ahora arrojarán excepciones más detalladas cuando el elemento
OffsetMapping
proporcionado por unVisualTransformation
muestre índices no válidos (Ie73f9, b/229378536). - Presentamos APIs experimentales para compartir la lógica del proveedor de elementos entre diseños diferidos (Ic891c).
ScrollableDefaults.reverseDirection()
ya no es experimental (Iba646).SemanticsModifier.id
dejó de estar disponible y, en su lugar, se movió el ID de semántica aLayoutInfo.semanticsId
(Iac808, b/203559524).checkScrollableContainerConstraints()
ya no es experimental (I2c290).Modifier.clipScrollableContainer()
ya no es experimental (Ia2b44).TextInputService.show|hideSoftwareKeyboard
dejó de estar disponible. En su lugar, usaSoftwareKeyboardController
en el código de la app yTextInputSession
en el código de administración del IME. (I14e4c, b/183448615).
Versión 1.3.0-alpha02
27 de julio de 2022
Lanzamiento de androidx.compose.foundation:foundation:1.3.0-alpha02
y androidx.compose.foundation:foundation-layout:1.3.0-alpha02
. La versión 1.3.0-alpha02 contiene estas confirmaciones.
Cambios en la API
- Se agregó la función de extensión
drawText
enDrawScope
para proporcionar una forma de dibujar texto multiestilo en elementos componibles y modificadores que funcionan enDrawScope
, comoCanvas
ydrawBehind
(I16a62, b/190787898).
Correcciones de errores
- El teclado en pantalla ahora estará oculto cuando un campo de texto esté inhabilitado mientras esté enfocado (I6e3e4, b/237308379).
- Cuando se agreguen eventos
InputEventChange
a Velocity Tracker, consideraremos los deltas en lugar de las posiciones, lo que garantizará que la velocidad se calcule correctamente en todos los casos, incluso si se mueve el elemento objetivo (Icea9d, b/216582726, b/223440806, b/227709803). - Cuando un elemento con desplazamiento tiene un elemento secundario enfocado, ahora se desplaza correctamente para mantenerlo visible cuando se reduce su tamaño, incluso cuando el tamaño es animado (I80867, b/230756508, b/220119990).
- Se corrigió una falla en la que se borraba y se rellenaba
TextField
mientras la selección estaba activa (I1235b, b/208655565, b/214253689).
Versión 1.3.0-alpha01
29 de junio de 2022
Lanzamiento de androidx.compose.foundation:foundation:1.3.0-alpha01
y androidx.compose.foundation:foundation-layout:1.3.0-alpha01
. La versión 1.3.0-alpha01 contiene estas confirmaciones.
Cambios en la API
- Se introdujo el tipo de anotación
UrlAnnotation
y los métodos asociados para admitir la compatibilidad con vínculosTalkBack
enAnnotatedString
(I1c754, b/231495122).
Correcciones de errores
- Ahora se puede animar
BasicTextField
cursorBrush
sin reiniciar el temporizador del cursor (I812e6, b/236383522).
Versión 1.2
Versión 1.2.1
10 de agosto de 2022
Lanzamiento de androidx.compose.foundation:foundation:1.2.1
y androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.2.0
y androidx.compose.foundation:foundation-layout:1.2.0
. La versión 1.2.0 contiene estas confirmaciones.
Cambios importantes desde la versión 1.1.0
LazyVerticalGrid
yLazyHorizontalGrid
ahora son estables.- Ahora puedes especificar un tipo de contenido para los elementos de listas y cuadrículas diferidas. Esto permitirá que los componentes reutilicen los elementos de manera más eficiente.
- Las listas y cuadrículas diferidas ahora tienen el parámetro
userScrollEnabled
, que permite inhabilitar el desplazamiento mediante los gestos del usuario. - Se agregó una nueva API experimental llamada
LazyLayout
. Es la API que usamos internamente para potenciar cuadrículas y listas diferidas. - Se introdujo la API de
OverscrollEffect
como experimental. Puedes definir efectos personalizados de sobredesplazamiento y agregar una plataforma estándar a contenedores personalizados con desplazamiento. - Se introdujeron las APIs de interoperabilidad de desplazamiento anidado para permitir la interoperabilidad entre vistas y actores de desplazamiento de Compose.
- El desplazamiento del mouse y el panel táctil se agregó a todos los contenedores de desplazamiento.
Versión 1.2.0-rc03
29 de junio de 2022
Se lanzaron androidx.compose.foundation:foundation:1.2.0-rc03
y androidx.compose.foundation:foundation-layout: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 lanzaron androidx.compose.foundation:foundation:1.2.0-rc02
y androidx.compose.foundation:foundation-layout: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
Lanzamiento de androidx.compose.foundation:foundation:1.2.0-rc01
y androidx.compose.foundation:foundation-layout:1.2.0-rc01
. La versión 1.2.0-rc01 contiene estas confirmaciones.
Cambios en la API
- Se agregó un elemento
OverscrollEffect
experimental que permite efectos de desplazamiento personalizados, junto con las sobrecargas deModifier.scrollable
que lo aceptan. - Se movió el elemento experimental
LocalOverScrollConfiguration
defoundation.gesture
al paquete de base y se cambió su nombre porLocalOverscrollConfiguration
(If19fb, b/204650733). - Las interfaces en las bibliotecas de Compose ahora se compilan con métodos de interfaz predeterminados de jdk8 (I5bcf1).
- Se introdujo una API experimental
checkScrollableContainerConstraints()
, que permite verificar que no se aniden contenedores desplazables. Puedes usarla cuando creas tus propios diseños diferidos con desplazamiento a través deLazyLayout
(Id6fab, b/233352497). - Se quitó el objeto
LazyVerticalGrid
obsoleto del paqueteandroidx.compose.foundation.lazy
. La nueva API estable se encuentra enandroidx.compose.foundation.lazy.grid
(I73c76, b/225192009).
Versión 1.2.0-beta03
1 de junio de 2022
Lanzamiento de androidx.compose.foundation:foundation:1.2.0-beta03
y androidx.compose.foundation:foundation-layout:1.2.0-beta03
. La versión 1.2.0-beta03 contiene estas confirmaciones.
Cambios en la API
- Se agregaron nuevos
IntervalList
yMutableIntervalList
experimentales. Permite representar una lista de valores mediante intervalos múltiples. Resulta útil cuando quieres definir tu propio DSL similar al que usaLazyColumn
, en el que los elementos de lista se pueden definir mediante varias llamadas de elementos o elementos (I2d05e, b/228580728).
Correcciones de errores
- Se aclaró la documentación de
WindowInsets.ime
para indicar que las inserciones deime
se informan desde el nivel de API 23, pero solo animadas en 30 o más (Ia7fc0, b/230756508). - Si presionas la tecla de borrar hacia adelante cuando el cursor se encuentra al final de un campo de texto, ya no fallará.
DeleteSurroundingTextCommand
yDeleteSurroundingTextInCodePointsCommand
ahora requieren que sus argumentos de constructor sean no negativos. (Ica8e6, b/199919707).
Versión 1.2.0-beta02
18 de mayo de 2022
Lanzamiento de androidx.compose.foundation:foundation:1.2.0-beta02
y androidx.compose.foundation:foundation-layout:1.2.0-beta02
. La versión 1.2.0-beta02 contiene estas confirmaciones.
- La resolución de la fuente descargable no cambia el tamaño del diseño de texto o
TextField
anteriormente no se volvía a dibujar, lo que provocaba que la fuente se volviera inactiva. Esta corrección de errores garantiza que el diseño de texto siempre active el rediseño (b/229727404). (l1d49e), b/229727404)
Versión 1.2.0-beta01
11 de mayo de 2022
Lanzamiento de androidx.compose.foundation:foundation:1.2.0-beta01
y androidx.compose.foundation:foundation-layout: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 agregó el objeto
BeyondBoundsInterval
experimental que pueden usar las implementaciones personalizadas deLazyList
cuando diseñan elementos más allá de los límites visibles. (Ifabfb, b/184670295) - Se cambió el nombre de
LineHeightBehavior
porLineHeightStyle
. - Se cambió el nombre de
LineVerticalAlignment
porLineHeightStyle.Alignment
. LineHeightTrim
cambia de nombre aLineHeightStyle.Trim
.- Se quitaron los valores de constructor predeterminados de
LineHeightStyle
. (I582bf, b/181155707) - Se agregaron valores predeterminados para los miembros opcionales de la interfaz de
LazyLayoutItemProvider
. (Iba8a0) - En la API de
LazyLayoutItemProvider
, en lugar de que una fábrica muestre la lambda componible por índice, ahora tenemos una función de componibilidad más simple que acepta el índice. (Id2196) - Se cambió el nombre de LazyLayoutItemsProvider a LazyLayoutItemProvider. (I0638c)
- Se cambió el nombre de
LazyLayoutItemsProvider.itemsCount
poritemCount
. (Id409c) - Se agregó el pincel a los objetos
TextStyle
ySpanStyle
para proporcionar un modo de dibujar texto con colores con gradientes. (I53869, b/187839528) - Los atributos
trimFirstLineTop
,trimLastLineBottom
deLineHeightBehavior
se cambiaron a una sola enumeración:LineHeightTrim
.LineHeightTrim
tiene valores de 4 estados definidos por dos booleanos:FirstLineTop
,LastLineBottom
, Ambos y Ninguno. (Ifc6a5, b/181155707) ). Se agregó
LineHeightBehavior
aTextStyle
, yParagraphStyle. LineHeightBehavior
controla si la altura de la línea se aplica a la parte superior de la primera línea y a la parte inferior de la última línea. También define la alineación de la línea en el espacio proporcionado porTextStyle
(lineHeight
).Por ejemplo, es posible obtener un comportamiento similar al que define CSS a través de
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.Las configuraciones
trimFirstLineTop
ytrimLastLineBottom
funcionan correctamente solo cuandoincludeFontPadding
es falso. (I97332, b/181155707)Se agregó el modificador experimental
imeNestedScroll()
para que los desarrolladores puedan controlar el IME a través del desplazamiento. (I60759)
Correcciones de errores
- Se corrigió la regresión por la que los campos de texto no ocultaban el teclado cuando se quitaba de la composición mientras se enfocaba. (I7a410, b/230536793, b/225541817)
- Se admite elipsis cuando la altura es limitada y no cabe en todas las líneas de texto. (Ie528c, b/168720622)
- Ahora,
BringIntoViewRequester.bringIntoView
siempre se suspenderá hasta que se complete la solicitud o se interrumpa por una solicitud más reciente y no superpuesta. Las solicitudes superpuestas se pondrán en fila. (I43e7f, b/216790855) - Las llamadas simultáneas de
BringIntoViewRequester.bringIntoView
para los rectángulos que se superponen completamente ahora solo cumplirán con la solicitud del rectángulo más grande. (I34be7, b/216790855, b/184760918) includeFontPadding
está activado de manera predeterminada. Es posible desactivarincludeFontPadding
con el atributoTextStyle.platformTextStyle
. Sin embargo, en un futuro cercano, cambiaremos el comportamiento predeterminado hasta ese momento, lo que nos permitirá integrar mejor las mejoras de altura de línea (aosp/2058653) y solucionar problemas de recorteTextField
. (I01423, b/171394808)Modifier.bringIntoViewRequester
ya no usaonGloballyPositioned
. (I630f5)
Contribución externa
MouseInjectionScope.scroll(delta = someDelta)
ahora se invierte en Android si nos desplazamos verticalmente (si someDelta es positivo, se desplazará hacia abajo) (Ifb697, b/224992993).
Versión 1.2.0-alpha08
20 de abril de 2022
Lanzamiento de androidx.compose.foundation:foundation:1.2.0-alpha08
y androidx.compose.foundation:foundation-layout:1.2.0-alpha08
. La versión 1.2.0-alpha08 contiene estas confirmaciones.
Cambios en la API
- Se muestran todos los grosores disponibles para las fuentes del sistema en Android cuando se use
FontFamily.SansSerif
. Para ello, se usarán nombres de fuentes de resguardo como sans-serif-medium internamente en los niveles de API 21 a 28. Este es un cambio de comportamiento, ya que anteriormente solo se admitían los grosores 400 y 700 en los niveles de API 21 a 28 (I380fe, b/156048036, b/226441992). - Paragraph y MultiParagraph ahora aceptan parámetros Constraints. Pasar
Constraints.maxHeight
es una no-ops en este momento, pero te permitirá realizar algunos cálculos en el futuro, como aplicar elipsis en función de la altura (I6afee, b/168720622). SubcomposeSlotReusePolicy.getSlotsToRetain()
ahora acepta una clase personalizada similar a MutableSet que no permite agregar elementos nuevos en ella (Icd314).- 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).- Se agregó la nueva API experimental de
LazyLayout
, lo que te permite compilar tus propios componentes, comoLazyColumn
deLazyVerticalGrid
. Ten en cuenta que la API se encuentra en una etapa inicial y se puede cambiar en versiones futuras (Iba2bc, b/166591700). AndroidFont
ahora tomatypefaceLoader
como parámetro de constructor (I2c971).- El elemento complementario
WindowInsets
ahora expone la visibilidad (si están en pantalla, independientemente de si se intersectan con la ventana) y el tamaño que podrían tener si estuvieran disponibles en el dispositivo, pero no están activos actualmente (I65182, b/217770337).
Versión 1.2.0-alpha07
6 de abril de 2022
Lanzamiento de androidx.compose.foundation:foundation:1.2.0-alpha07
y androidx.compose.foundation:foundation-layout:1.2.0-alpha07
. La versión 1.2.0-alpha07 contiene estas confirmaciones.
Cambios en la API
- Se agregó una API de
PinnableParent
que permite elementos secundarios de diseños diferidos para evitar que se borren los elementos compuestos actualmente (Ibbdd0, b/184670295). LazyListLayoutInfo
yLazyGridLayoutInfo
ahora tienen camposbeforeContentPadding
yafterContentPadding
(I3b628, b/200920410).- Se agregó
KeyboardType.Decimal
como alternativa aKeyboard.Number
para incluir específicamente un separador decimal en IME (Iec4c8, b/209835363). - Se agregó un nuevo descriptor de fuente (DeviceFontFamilyName) para buscar fuentes instaladas en el sistema de forma opcional durante las cadenas de resguardo de fuentes (I30468, b/219754572).
PointerEventType.Scroll
yPointerEvent.scrollDelta
ahora son API estables (I574c5, b/225669674).- Se agregó una configuración de compatibilidad temporal para
includeFontPadding
enTextStyle/ParagraphStyle. includeFontPadding
a través deTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. Esta es una opción de configuración temporal para habilitar la migración y se quitará (If47be, b/171394808). - Se actualizó
FontFamily.Resolver
para integrar la configuración de accesibilidad del texto en negrita en todo el sistema (I6c1e7) - La propiedad de extensión
consumeWindowInsets
deComposeView
permite a los desarrolladores inhabilitar el consumo de Android WindowInsets. Esto admite queComposeViews
independientes en la jerarquía apliquenWindowInsets
sin interferir entre sí (I0ef08, b/220943142).
Versión 1.2.0-alpha06
23 de marzo de 2022
Lanzamiento de androidx.compose.foundation:foundation:1.2.0-alpha06
y androidx.compose.foundation:foundation-layout:1.2.0-alpha06
. La versión 1.2.0-alpha06 contiene estas confirmaciones.
Cambios en la API
- Se agregó la acción semántica de
RequestFocus
para solicitar el enfoque en el objetivo enfocable (I17b71). FocusOrder
se combinó conFocusProperties
, yfocusProperties()
ahora tiene todas las capacidades defocusOrder()
.FocusOrder
yfocusOrder()
ya no están disponibles. ElfocusOrder()
que acepta unafocusRequester
se debe reemplazar por un modificadorfocusRequester()
en combinación confocusProperties()
. Esto permite que los modificadores tengan una separación más profunda de problemas (I601b7).- Se agregó
WindowInsets.asPaddingValues(Density)
para permitir que los desarrolladores realicen la conversión sin necesidad de estar en composición (I94c35). - Se actualizó el análisis de elementos de diseño vectoriales para admitir la duplicación automática a fin de girar el contenido de un
VectorPainter
si la dirección de diseño actual es RTL (I79cd9, b/185760237).
Correcciones de errores
- Los modificadores de desplazamiento (
Modifier.verticalScroll()
,Modifier.horizontalScroll()
yModifier.scrollable()
) ahora se desplazarán para que el elemento enfocado que admite composición sea visible si el área de desplazamiento cambia de tamaño y el elemento enfocado anteriormente era visible. - TextFields ahora se mantendrá arriba del teclado cuando este se enfoque y se muestre, cuando esté dentro de un elemento desplazable no definido y el modo de entrada de software sea
ADJUST_RESIZE
(I4a485, b/190539358, b/192043120, b/216842427).
Versión 1.2.0-alpha05
9 de marzo de 2022
Lanzamiento de androidx.compose.foundation:foundation:1.2.0-alpha05
y androidx.compose.foundation:foundation-layout:1.2.0-alpha05
. La versión 1.2.0-alpha05 contiene estas confirmaciones.
Cambios en la API
LazyVerticalGrid
yLazyHorizontalGrid
ahora son estables (I307c0).- Se reemplazó
LazyGridItemInfo.Unknown
conLazyGridItemInfo.UnknownRow
yLazyGridItemInfo.UnknownColumn
por separado (I56d51). LazyVerticalGrid
,LazyHorizontalGrid
y todas las API relacionadas se migraron al subpaquete.grid
. Actualiza las importaciones deandroidx.compose.foundation.lazy
aandroidx.compose.foundation.lazy.grid
(I2d446, b/219942574).- Texto:
includeFontPadding
ahora está desactivada 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). - La interfaz de Measured ahora expone la propiedad parentData (I3313f).
- Se introdujo el elemento experimental
Modifier.onFocusedBoundsChanged
para permitir la observación de los límites de los elementos enfocables secundarios (I14283, b/220030968, b/190539358, b/192043120, b/216842427). - Se agregó LazyHorizontalGrid (I61ae7, b/191238807).
- Se agregó una nueva API de
LazyVerticalGrid
para definir tamaños de ejes cruzados (I17723). - Se agregó el modificador FocusGroup (I64bc0, b/213508274, b/184670295).
Correcciones de errores
WindowInsets.toString()
ahora mostrará los valores correctos (I1585d).
Contribución externa
- Se actualizó para usar corrutinas de Kotlinx 1.6.0 (I3366d).
Versión 1.2.0-alpha04
23 de febrero de 2022
Lanzamiento de androidx.compose.foundation:foundation:1.2.0-alpha04
y androidx.compose.foundation:foundation-layout:1.2.0-alpha04
. La versión 1.2.0-alpha04 contiene estas confirmaciones.
Cambios en la API
- Ya no es necesario que los elementos
BringIntoViewResponders
pasen manualmente las solicitudes a los elementos de respuesta principales, sino que deben devolver de inmediato el rectángulo que quieren que su elemento principal muestre. (I8e66a). - Compatibilidad con la carga de fuentes asíncrona en Text (I77057, b/214587005).
LazyVerticalGrid
ahora admiteline breaking
antes de los elementos con intervalo que no caben dentro de la línea actual (I05c40, b/207462103).- Se cambió el nombre de
excludeFromSystemGestures
asystemGesturesExclusion
(I19526). LazyVerticalGrid
ahora admite reverseLayout (I6d7d7, b/215572963, b/211753558).- Se agregó el método
WindowInsets.only()
para permitir que los desarrolladores incluyan solo dimensiones de WindowInsets (I14c94, b/217768486). Se agregaron
ComposableTarget
,ComposableTargetMarker
yComposableOpenTarget
, que permiten generar informes sobre el tiempo de compilación cuando se llama a una función de componibilidad 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).
Correcciones de errores
- Ahora está permitido pasar desplazamientos negativos a
LazyGridState.scrollToItem()
yLazyGridState.animateScrollToItem()
(I025c6, b/211753558). - Se agregó compatibilidad con la carga de fuentes asíncronas para TextField (Icc4bf, b/214587005).
Versión 1.2.0-alpha03
9 de febrero de 2022
Lanzamiento de androidx.compose.foundation:foundation:1.2.0-alpha03
y androidx.compose.foundation:foundation-layout:1.2.0-alpha03
. La versión 1.2.0-alpha03 contiene estas confirmaciones.
Cambios en la API
- Los métodos
notifyFocusedRect
deTextInputSession
yTextInputService
dejaron de estar disponibles y no se los llamará. En su lugar, usaBringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874). - Se habilitaron las animaciones para los elementos de cuadrículas diferidas con Modifier.animateItemPlacement() (Ib6621, b/211753218).
BringIntoViewRequester
ahora propaga las solicitudes al hosting de la vista de Android (Ia7a51).FontFamilyResolver
ahora está disponible a través deLocalFontFamilyResolver.current
.- Se agregaron
createFontFamilyResolver(context)
ycreateFontFamilyResolver(context, coroutineScope)
para crear nuevos agentes de resolución de FontFamily fuera del uso de Compose. - Ahora Paragraph y MultiParagraph, incluyen
FontFamily.Resolver
. TextLayoutResult.layoutInput.fontFamilyResolver
ahora contiene el agente de resolución que se usa para este diseño, y se dio de bajaTextLayoutResult.layoutInput.resourceLoader
, debido a que ya no se usa (Id5a45, b/174162090).
- Se agregaron
- Se agregó
AndroidFont
, una nueva API de bajo nivel que proporciona nuevos tipos de descriptores de recursos de fuentes en Android. Por ejemplo, cargar fuentes de un backend específico de la app, ubicar de forma opcional fuentes preinstaladas en el dispositivo o cargar una fuente de un recurso que no proporcionan las fábricas de fuentes actuales.- Se amplió la API de
Font.ResourceLoaded
para admitir la carga de fuentes opcional y asíncrona. No se recomienda que los desarrolladores de aplicaciones usen esta API directamente. Para agregar nuevos tipos de fuentes, consulta AndroidFont. - La función de extensión
Font.AndroidResourceLoader
permite construir unaFont.ResourceLoader
cuando se encuentra fuera de la composición. - Se agregó el parámetro
loadingStrategy
a fuentes basadas en recursos, para permitir la carga asíncrona cuando la fuente de recursos hace referencia a fuentes descargables XML (Ie5aea, b/174162090).
- Se amplió la API de
- El constructor
Typeface(FontFamily)
dejó de estar disponible. Anteriormente, se usaba a fin de precargar fuentes, lo que podía demorar hasta 10 segundos en el caso de las fuentes descargables. Con las fuentes descargables, esta llamada se puede bloquear durante 10 segundos. En su lugar, usaFontFamilyResolver.preload
.fontResource(FontFamily): Typeface
ya no está disponible. Anteriormente, se usaba a fin de precargar fuentes, lo que podía demorar hasta 10 segundos en el caso de las fuentes descargables. En su lugar, usaFontFamilyResolver.preload
(If8e7c, b/174162090).
- Ahora puedes especificar el tipo de contenido para los elementos de
LazyVerticalGrid
. Las funciones item/items enLazyGridScope
ahora aceptan ese parámetro. Proporcionar esta información ayuda a reutilizar la composición del elemento para que sea más eficiente y solo se reutilice el contenido entre elementos de tipo similar (I7b355, b/215372836). LazyListLayoutInfo
yLazyGridLayoutInfo
ahora tienen propiedades nuevas:viewportSize
,orientation
,reverseLayout
(Ifc8ed, b/200920410).- Ahora puedes especificar el tipo de contenido para los elementos de LazyColumn/LazyRow. Las funciones de item/items en LazyListScope aceptan ese parámetro. Proporcionar esta información ayuda a reutilizar la composición del elemento para que sea más eficiente y solo se reutilice el contenido entre elementos de tipo similar (I26506).
- El constructor
SubcomposeLayoutState
que aceptamaxSlotsToRetainForReuse
dejó de estar disponible. En su lugar, hay un nuevo constructor que aceptaSubcomposeSlotReusePolicy
, una nueva interfaz que permite un control más detallado sobre qué ranuras se deben conservar para su reutilización en el futuro. (I52c4d). - Agrega modificadores para WindowInsets, tanto para el relleno como para el tamaño. Esto permite que parte del contenido se extienda al área de inserción y que el contenido principal permanezca fuera de esta. Por ejemplo, se puede usar windowInsetsPadding para rellenar el área del contenido a fin de evitar áreas que puedan estar cubiertas total o parcialmente (Id0395, b/213942085).
Correcciones de errores
- TextFields ahora se mantendrá arriba del teclado cuando este se enfoque y se muestre, y cuando el modo de entrada de software sea
ADJUST_PAN
(I8eaeb, b/190539358, b/192043120). - En computadoras, se usa la composición local para
FontFamily.Resolver
.- La versión de escritorio de
FontLoader
dejó de estar disponible. - Nueva fábrica de
createFontFamilyResolver
para computadoras (I6bbbb, b/174162090).
- La versión de escritorio de
- El tipo de entrada de teclado en pantalla ya no gira cuando se cambia el enfoque entre los campos de texto (I1bf50, b/187746439).
- Los campos de texto ya no requieren presionar de nuevo cuando se muestra el controlador del cursor (Ideb4b, b/205726883).
- Se mejoró el comportamiento de la lupa de selección de texto para que coincida con la lupa de la plataforma. (Idd918, b/206833278)
Versión 1.2.0-alpha02
26 de enero de 2022
Lanzamiento de androidx.compose.foundation:foundation:1.2.0-alpha02
y androidx.compose.foundation:foundation-layout: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 agregaron modificadores de
excludeFromSystemGesture
para facilitar el acceso asetSystemGestureExclusionRects
de Android. (I46f07)
Correcciones de errores
- Se mejoró el comportamiento de la lupa de selección de texto para que coincida con la lupa de la plataforma. (Idd918, b/206833278)
LazyColumn
,LazyRow
,Modifier.verticalScroll
y otros contenedores que usanModifier.scrollable
ahora admiten el desplazamiento de la rueda del mouse. (I2b5e1, b/198214718)
Versión 1.2.0-alpha01
12 de enero de 2022
Lanzamiento de androidx.compose.foundation:foundation:1.2.0-alpha01
y androidx.compose.foundation:foundation-layout:1.2.0-alpha01
. La versión 1.2.0-alpha01 contiene estas confirmaciones.
Cambios en la API
- Se agregó el nuevo parámetro
userScrollEnabled
aLazyColumn
,LazyRow
yLazyVerticalGrid
para permitir que los usuarios puedan inhabilitar de manera temporal o permanente el desplazamiento que inicia el usuario mediante gestos táctiles o acciones de accesibilidad. Aún se permitirá el desplazamiento programático mediante los métodos del estado (I7eae9, b/201150093). - Se agregó la devolución de llamada
onSizeChanged
a la tecla modificadora de la lupa (I6879f). - El widget de la lupa ahora se muestra cuando se arrastran los controladores de selección en un
SelectionContainer
(I30b38, b/139320979).
Correcciones de errores
- Se corrigió el controlador del cursor
TextField
que no se ocultaba cuando el usuario se desplazaba fuera de la vista (I14552, b/208883748).
Actualizaciones de dependencias
- Ahora depende de Kotlin versión
1.6.10
.
Versión 1.1
Versión 1.1.1
23 de febrero de 2022
Lanzamiento de androidx.compose.foundation:foundation:1.1.1
y androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.1.0
y androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.1.0-rc03
y androidx.compose.foundation:foundation-layout:1.1.0-rc03
. La versión 1.1.0-rc03 contiene estas confirmaciones.
Correcciones de errores
- Se actualizó para admitir Compose Material 1.1.0-rc03.
Versión 1.1.0-rc01
15 de diciembre de 2021
Lanzamiento de androidx.compose.foundation:foundation:1.1.0-rc01
y androidx.compose.foundation:foundation-layout:1.1.0-rc01
. La versión 1.1.0-rc01 contiene estas confirmaciones.
Correcciones de errores
- Ahora está permitido pasar desplazamientos negativos a
LazyListState.scrollToItem()
yLazyListState.animateScrollToItem()
(Iceb90, b/184252837). - Se corrigió un error que causaba acciones de desplazamiento de accesibilidad faltantes (I7cbfb).
Versión 1.1.0-beta04
1 de diciembre de 2021
Lanzamiento de androidx.compose.foundation:foundation:1.1.0-beta04
y androidx.compose.foundation:foundation-layout: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
.
Cambios en la API
- Se corrigió la nulabilidad en
androidx.core.view
(I7078a, b/204917439). - Se agregaron API experimentales que permiten utilizar PointerInputchange en su totalidad o verificar si se consumió o no (I2e59d).
- Se muestra un widget de lupa cuando se arrastra el cursor o los controladores de selección dentro de los campos de texto (I5391e, b/203781358).
Correcciones de errores
- Se corrigieron los controladores de texto que no se movían cuando se cambiaba la visibilidad del IME (I25f2e).
Versión 1.1.0-beta03
17 de noviembre de 2021
Se lanzaron androidx.compose.foundation:foundation:1.1.0-beta03
y androidx.compose.foundation:foundation-layout:1.1.0-beta03
. La versión 1.1.0-beta03 contiene estas confirmaciones.
Cambios en la API
- Se agregó compatibilidad con los intervalos horizontales a LazyVerticalGrid (I7e2fa, b/176758183).
Se agregó la capacidad experimental para animar listas diferidas de posiciones de artículos. Dentro de LazyItemScope, hay un nuevo modificador disponible llamado
Modifier.animateItemPlacement()
. Ejemplo de uso:var list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }
- Cuando proporciones una clave mediante
LazyListScope.item
oLazyListScope.items
, este modificador habilitará las animaciones de reordenamiento de elementos. Además de reordenar los elementos, también se animarán todos los demás cambios de posición causados por eventos, como la organización o los cambios de alineación (I59e7b, b/150812265).
- Cuando proporciones una clave mediante
Versión 1.1.0-beta02
3 de noviembre de 2021
Lanzamiento de androidx.compose.foundation:foundation:1.1.0-beta02
y androidx.compose.foundation:foundation-layout:1.1.0-beta02
. La versión 1.1.0-beta02 contiene estas confirmaciones.
Correcciones de errores
- Las ondas y otros indicadores 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) - Se agregó la API experimental de BringIntoView que permite enviar una solicitud a los elementos superiores de modo que se desplacen para mostrar un elemento (Ib918d, b/195353459).
Contribución externa
- Se agregó
Modifier.pointerHoverIcon
(I95f01).
Versión 1.1.0-beta01
27 de octubre de 2021
Lanzamiento de androidx.compose.foundation:foundation:1.1.0-beta01
y androidx.compose.foundation:foundation-layout:1.1.0-beta01
. La versión 1.1.0-beta01 contiene estas confirmaciones.
Correcciones de errores
- Se agregó la API experimental de BringIntoView que permite enviar una solicitud a los elementos superiores de modo que se desplacen para mostrar un elemento (Ib918d, b/195353459).
Versión 1.1.0-alpha06
13 de octubre de 2021
Se lanzaron androidx.compose.foundation:foundation:1.1.0-alpha06
y androidx.compose.foundation:foundation-layout: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)
SemanticsNodeInteraction.performSemanticsAction
ahora muestra laSemanticsNodeInteraction
en la que se llamó a la función. (I9e5db)- Se agregó
performScrollToNode(matcher: SemanticsMatcher)
, que desplaza un contenedor desplazable hasta el contenido que coincide con el comparador dado. (Ic1cb8)
Versión 1.1.0-alpha05
29 de septiembre de 2021
Lanzamiento de androidx.compose.foundation:foundation:1.1.0-alpha05
y androidx.compose.foundation:foundation-layout:1.1.0-alpha05
. La versión 1.1.0-alpha05 contiene estas confirmaciones.
Cambios en la API
- Se agregaron punteros históricos experimentales a PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
Correcciones de errores
- Se corrigió la compatibilidad de la accesibilidad para elementos desplazables (diferidos y no diferidos) con respecto al desplazamiento (I6cdb0)
Versión 1.1.0-alpha04
15 de septiembre de 2021
Lanzamiento de androidx.compose.foundation:foundation:1.1.0-alpha04
y androidx.compose.foundation:foundation-layout: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
- Se agregó compatibilidad con el sobredesplazamiento expandido en dispositivos con Android 12. (Iccf3c, b/171682480)
Versión 1.1.0-alpha03
1 de septiembre de 2021
Lanzamiento de androidx.compose.foundation:foundation:1.1.0-alpha03
y androidx.compose.foundation:foundation-layout: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ó el efecto de resplandor para el desplazamiento. Se agregó la nueva API experimental de OverScrollConfiguration para permitir la configuración del efecto visual de sobredesplazamiento. Se brindó un valor nulo para desactivar el efecto de sobredesplazamiento. (I0c304, b/171682480)
- Ahora, AwaitPointerEventScope tiene withTimeout() y withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- 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.foundation:foundation:1.1.0-alpha02
y androidx.compose.foundation:foundation-layout:1.1.0-alpha02
. La versión 1.1.0-alpha02 contiene estas confirmaciones.
Cambios en la API
- Se agregaron versiones de DpSize para
Modifier.size
yrequiredSize
. (I3fc7e, b/194219828)
Versión 1.1.0-alpha01
4 de agosto de 2021
Lanzamiento de androidx.compose.foundation:foundation:1.1.0-alpha01
y androidx.compose.foundation:foundation-layout: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) - TextField ahora borra la selección cuando se presiona el botón Atrás, lo que coincide con el comportamiento de EditText de Android. (I3ca16, b/174173645)
- Se agregó el controlador del cursor. (I07a82, b/173016579)
Correcciones de errores
- El desplazamiento a través de acciones semánticas para listas diferidas y componentes de desplazamiento normales ahora tiene animación. (Id9066, b/190742024)
Contribución externa
LazyVerticalGrid
ahora acepta parámetros de disposición horizontales y verticales. (If9c92)
Versión 1.0
Versión 1.0.5
3 de noviembre de 2021
Lanzamiento de androidx.compose.foundation:foundation:1.0.5
y androidx.compose.foundation:foundation-layout: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
Se lanzaron androidx.compose.foundation:foundation:1.0.4
y androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.3
y androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.2
y androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.1
y androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.0
y androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.0-rc02
y androidx.compose.foundation:foundation-layout:1.0.0-rc02
. La versión 1.0.0-rc02 contiene estas confirmaciones.
- Se actualizó el procesamiento de bordes para formas genéricas a fin de solucionar problemas con rutas definidas con dimensiones fijas. (aosp/1748871, b/191817116)
Versión 1.0.0-rc01
1 de julio de 2021
Lanzamiento de androidx.compose.foundation:foundation:1.0.0-rc01
y androidx.compose.foundation:foundation-layout:1.0.0-rc01
. La versión 1.0.0-rc01 contiene estas confirmaciones.
Cambios en la API
- Canvas ahora admite un parámetro contentDescription para accesibilidad. (Ib547c)
Correcciones de errores
- Los botones la tarjetas, las casillas de verificación y los
Modifier.clickable(enabled=false)
inhabilitados bloquearán los clics para ir al elemento principal. (Ic2c3b, b/183908811)
Versión 1.0.0-beta09
16 de junio de 2021
Lanzamiento de androidx.compose.foundation:foundation:1.0.0-beta09
y androidx.compose.foundation:foundation-layout:1.0.0-beta09
. La versión 1.0.0-beta09 contiene estas confirmaciones.
Cambios en la API
- Se quitó
ManualFrameClock
. Si necesitas controlar las animaciones, usacomposeTestRule.mainClock
en su lugar. (I3c3e8, b/189951065) - Cambia Role de enumeración y LiveRegionMode por clases intercaladas con un constructor privado. (Id1890)
- KeyboardCapitalization se convirtió en una clase intercalada. (Id5a1c)
- Se cambió TextOverflow a una clase intercalada. (I433af)
Correcciones de errores
- Ahora, cuando especifiques las claves únicas para los elementos LazyColumn/Row, se mantendrá la posición de desplazamiento según la clave, lo que significa que, si agregas o quitas elementos antes del elemento visible actual, el elemento con la clave dada se conservará como el primero visible. (Id263f, b/184257857)
- Por ahora, las constantes de clave son @ExperimentalComposeUiApi. El código de consumo puede declarar constantes privadas antes de la estabilización. (Ia5d48)
- Se agregó IdlingStrategy a AndroidCompositTestRule. Los frameworks de prueba pueden usar este elemento para instalar un mecanismo alternativo de espera o alcanzar la inactividad. Usa
AndroidComposeTestRule.setIdlingStrategyFactory()
antes de que la prueba comience a fin de instalar tu propia estrategia. (I608fa)
Se agregaron reglas de perfiles
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 una app que incluye esos artefactos, esas reglas se combinan y se usan para compilar un perfil de ART binario compacto específico para la app. De esta manera, ART puede tomar este perfil cuando se instala la app 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.foundation:foundation:1.0.0-beta08
y androidx.compose.foundation:foundation-layout:1.0.0-beta08
. La versión 1.0.0-beta08 contiene estas confirmaciones.
Cambios en la API
- Se reemplazó la enumeración NestedScrollSource por una clase intercalada. (Ie321b, b/187055290)
- 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ó porModifier.focusTarget()
. (I6c860)- Se reemplazó la enumeración KeyboardType por una clase intercalada. (I73045, b/187055290)
- Se reemplazó la enumeración
FocusState
por una interfazFocusState
. (Iccc1a, b/187055290) - Se reemplazó la enumeración ImeAction por una clase intercalada. (I18be5, b/187055290)
- Las funciones
AnnotatedString.withAnnotation
ahora son ExperimentalTextApi en lugar de ExperimentalComposeApi. (I0cd0a)- El constructor TextUnit con TextUnitType ahora es ExperimentalTextApi en lugar de ExperimentalComposeApi.
- PaddingValues ahora es
@Stable
en lugar de@Immutable
. (I88c50)
Correcciones de errores
- Corrige las fallas de mantener presionada el área en blanco en texto no vacío. (I33ab5, b/187437299)
- Se muestra la Barra Google de SelectAll. (I495d9, b/185919613)
- Se corrigió que los contenedores desplazables recortaran sus elementos secundarios en el eje cruzado. Era fácil de reproducir si tenía un elemento LazyRow con elementos de tarjeta. Ahora no se recortará la sombra. (Icb635, b/186318448)
- Se corrigió un problema por el que, en ocasiones, el uso de ripple y otros indicadores hacía que se atascara en un clic largo cuando se usaba Modif.combineClickable. (I2298c, b/186223077)
- Ahora
detectDragGesures
,detectVerticalGestures
ydetectHorizontalGestures
consumirán el cambio de posición automáticamente, sin necesidad de llamar a change.consumePositionChange en las devoluciones de llamada de onDrag. (I42fc4, b/185096350, b/187320697) - 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)
Versión 1.0.0-beta07
18 de mayo de 2021
Lanzamiento de androidx.compose.foundation:foundation:1.0.0-beta07
y androidx.compose.foundation:foundation-layout:1.0.0-beta07
. La versión 1.0.0-beta07 contiene estas confirmaciones.
Cambios en la API
- La siguiente lógica de carga previa de elementos visibles se introduce para LazyColumn/Row. (I8a4bc, b/184940225)
- Se agregó el controlador de selección de clips. (Iff80d, b/183408447)
Correcciones de errores
- LazyColumn/Row ahora mantendrá activos hasta 2 elementos previamente visibles (no se desechan), incluso cuando ya se desplazaron. Esto permite que el componente vuelva a usar las subcomposiciones activas cuando necesitemos componer un elemento nuevo que mejore el rendimiento del desplazamiento. (Ie5555)
- Se quitó paintBackground. (I38660)
- Ahora es posible dibujar el fondo de selección con DrawScope. (I73c61, b/186674472)
- Se corrigió una regresión beta06 que afectaba a Row/Column con arreglos slotedBy para diseñar elementos ponderados de diseño. (Ifaf8c, b/187326588)
Versión 1.0.0-beta06
5 de mayo de 2021
Lanzamiento de androidx.compose.foundation:foundation:1.0.0-beta06
y androidx.compose.foundation:foundation-layout:1.0.0-beta06
. La versión 1.0.0-beta06 contiene estas confirmaciones.
Cambios en la API
- Se solucionó el problema con la navegación por gestos (I1145e).
- Se agregaron las APIs de accesibilidad CollectionInfo y CollectionItemInfo, que permiten marcar la colección y sus elementos para los servicios de accesibilidad (Id54ef, b/180479017).
- Se añadió
SemanticsActions.ScrollToIndex
a fin de desplazar una lista con elementos indexados hasta aquel que tenga un índice determinado ySemanticsProperties.IndexForKey
para obtener el índice de un elemento en una lista de elementos con claves. LazyList implementa ambas acciones.- Se agregó
SemanticsNodeInteraction.performScrollToIndex
, que desplaza una lista hasta el índice dado, ySemanticsNodeInteraction.performScrollToKey
, que la desplaza hasta el elemento con la clave determinada (I4fe63, b/178483889, b/161584524).
- Se agregó
- AnnotatedString guarda la compatibilidad en TextFieldValue.Saver. Se incorporaron las funciones de utilidad addTtsAnnotation y withAnnotation a AnnotatedString.Builder (I8cbdc, b/178446304).
- Se agregaron los valores predeterminados del parámetro
0.dp
aPaddingValues(horizontal, vertical)
(I05571, b/181336792).
Correcciones de errores
- Los elementos secundarios de Fila y Columna con
weight(fill = false)
ya no hacen que el elemento superior rellene todo el espacio disponible del eje principal (Ied94d, b/186012444, b/184355105).
Versión 1.0.0-beta05
21 de abril de 2021
Lanzamiento de androidx.compose.foundation:foundation:1.0.0-beta05
y androidx.compose.foundation:foundation-layout:1.0.0-beta05
. La versión 1.0.0-beta05 contiene estas confirmaciones.
Cambios en la API
- La interfaz de FlingBehavior ahora se marca como @Stable. Todas las implementaciones deben cumplir con el contrato de
@Stable
. (I93354, b/184830577)
Correcciones de errores
- Se corrigieron las acciones de desplazamiento de accesibilidad
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
yaccessibilityActionScrollDown
. Ahora se desplazará de a una pantalla en la dirección que corresponda en lugar de moverse hasta el final. (Ieccb0) - Los archivos AndroidManifest de ui-test-manifest y ui-tooling-data ahora son compatibles con Android 12 (I6f9de, b/184718994).
Versión 1.0.0-beta04
7 de abril de 2021
Lanzamiento de androidx.compose.foundation:foundation:1.0.0-beta04
y androidx.compose.foundation:foundation-layout:1.0.0-beta04
. La versión 1.0.0-beta04 contiene estas confirmaciones.
Cambios en la API
- Se cambió el nombre de hideSoftwareKeyboard y showSoftwareKeyboard de SoftwareKeyboardController a
hide()
yshow()
, respectivamente.- Se proporcionó la interfaz completa de ComposiciónLocal a LocalSoftwareKeyboardController, lo que permite configurarla (particularmente útil en pruebas) (I579a6).
- Se agregó
TextOverflow.Visible
. (Ic8f89) - Se quitaron las instancias públicas de
RowScope
,ColumnScope
,BoxScope
yBoxWithConstraintsScope
. (I4e83e, b/181869067)
Correcciones de errores
- Se corrigió el problema por el que los elementos de
LazyColumn
yLazyRow
ubicados en los bordes se posicionaban de forma incorrecta después de un lanzamiento rápido (Ie4d13, b/183877420). Antes del cambio, se pueden omitir las funciones que admiten composición local según sus parámetros. Después del cambio, no se omitirán las funciones que admitan composiciones locales. Se realiza este cambio porque es común y esperado que las funciones locales capturen los parámetros superiores, y omitirlos es una fuente común de errores.
En resumen, ten en cuenta el siguiente ejemplo:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }
Antes del cambio, se omitía siempre la función que admite composición
ShowCount
, incluso después actualizar el parámetrocount
. Sin embargo, ya no es así. (I5648a)
Versión 1.0.0-beta03
24 de marzo de 2021
Lanzamiento de androidx.compose.foundation:foundation:1.0.0-beta03
y androidx.compose.foundation:foundation-layout: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)
Correcciones de errores
- Ahora se llama
FlingBehavior.performFling()
incluso cuando la velocidad es 0 (I0b6e5, b/181237123)
Versión 1.0.0-beta02
10 de marzo de 2021
Lanzamiento de androidx.compose.foundation:foundation:1.0.0-beta02
y androidx.compose.foundation:foundation-layout:1.0.0-beta02
. La versión 1.0.0-beta02 contiene estas confirmaciones.
Cambios en la API
- Se agregaron varias optimizaciones pequeñas en la lógica de medición de LazyColumn. (Ic6889)
- Se agregó una nueva API local de composición de
LocalSoftwareKeyboardController
para reemplazar la interfaz de SoftwareKeyboardController anterior en TextField. (I5951e, b/168778053) - Se agregó una nueva API local de composición de
LocalSoftwareKeyboardController
para reemplazar la interfaz de SoftwareKeyboardController anterior en TextField. (I84472, b/168778053)
Correcciones de errores
- Se aplicaron restricciones sobre el uso público de las API experimentales. (I6aa29, b/174531520)
Versión 1.0.0-beta01
24 de febrero de 2021
Lanzamiento de androidx.compose.foundation:foundation:1.0.0-beta01
y androidx.compose.foundation:foundation-layout: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 agregó la devolución de llamada onStart a
detectDragGestures
. (I67269, b/179995594) - Ya no son experimentales los modificadores para cambiar el tamaño de las funciones intrínsecas. (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)
- Se cambió el nombre de MeasureBlocks a MeasurePolicy, que se convirtió en una interfaz divertida. Se actualizaron o simplificaron las API de diseño para que usen MeasurePolicy. (Icab48, b/167662468, b/156751158)
- 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)
- 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)
- Se creó un nuevo elemento TextInputSession para sesiones de entrada a partir de componentes de texto de bajo nivel, como CoreTextField. (I8817f, b/177662148)
- Placeable ahora expone measuredSize, que representa el tamaño hasta el cual se mide realmente el diseño secundario. Es posible que este tamaño no respete las restricciones de medición. (Ib2729, b/172560206, b/172338608)
- 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() a animateScrollBy() Se cambió el nombre de LazyListState.snapToItemIndex() a scrollToItem() Se cambió el nombre de ScrollState.smoothScrollTo() a animateScrollTo(). (I35ded)
Modifier.zoomable se reemplazó por Modifier.transformable. smoothPanBy, smoothRotationBy se agregó como función. (Ifc32b, b/175294473)
Ahora es obligatorio el uso de
defaultFactory
paracompositionLocalOf
ystaticCompositionLocalOf
en lugar de ser opcional.Este cambio quita un error de escritura potencial del tipo no anulable en los que no se proporcionó el valor predeterminado de fábrica. Anteriormente, esto hubiera proporcionado una referencia nula del tipo no anulable.
En el caso de los tipos nulos, puedes proporcionar
{ null }
como el valor predeterminado de fábrica.No recomendamos usar configuraciones locales con tipos no anulables, a menos que se pueda proporcionar un valor predeterminado razonable. Si no existe un valor predeterminado razonable, la expresión lambda
defaultFactory
debe arrojar una excepción. Sin embargo, usar una excepción significa que los usuarios de la configuración local tendrán una dependencia implícita de ella siempre que el sistema de tipos no la aplique de manera forzada. (Ifbd2a)Se cambió
Indication#createIndication()
aIndication#rememberUpdatedIndication(InteractionState)
y se quitó el parámetroInteractionState
de IndicationInstance#drawIndication()
. IndicationInstance solo debe ser responsable de generar efectos visuales, y no de iniciar animaciones o escribir estados en respuesta a cambios de InteractionState. En su lugar, estas animaciones y escrituras de estado deberían ocurrir dentro derememberUpdatedIndication()
. También se cambió el parámetroindication
enModifier.indication
para que sea un parámetro obligatorio. (Ic1764, b/152525426)Las acciones de texto ahora comprueban el enfoque de forma automática. (I13777, b/179648629).
Se quitó
runBlockingWithManualClock
. (I15cdc, b/179664814)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 quitó Modifier.tapGestureFilter. Usa
Modifier.pointerInput { detectTapGestures(...) }
en su lugar. (I266ed, b/175294473)Se quitó el consumo parcial del sistema de entrada del puntero. El método recomendado para coordinar el consumo parcial es Modifier.nestedScroll. (Ie9c9b)
Se migró Orientation al paquete de base. Se migró VelocirtTracker de ui.gesture a ui.input.pointer. (Iff4a8, b/175294473)
Se quitó AnimationClockObservable, así como sus subclases. Se quitó AnimatedFloat. (Icde52, b/177457083)
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)Se agregaron los modificadores requiredWidth(IntrinsSize) y requiredHeight(IntrinsSize) para el tamaño requerido para tamaños intrínsecos. (I0a6b4)
Se quitó
emptyContent()
obsoleto. Usa{}
en su lugar. (Idb33f, b/179432510)Se borraron algunas API que ya eran obsoletas. (Ice5da, b/178633932)
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.foundation:foundation:1.0.0-alpha12
y androidx.compose.foundation:foundation-layout: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)
- Actualización de prueba: hasText() verificará los textos de entrada y label/hint/placeholder en el campo del texto. (Iab803)
- 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)
- Se mejoraron las API de prueba de substring con una substring como argumento. (Icbe78)
- Se introdujo un elemento de contexto de corrutinas
InfiniteAnimationPolicy
que se aplicará en animaciones infinitas. No se instala ninguna política de forma predeterminada, excepto cuando se ejecutan pruebas conComposeTestRule
. (I50ec4, b/151940543) - 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 agregaron claves personalizadas compatibles con LazyColumn/LazyRow. Esto nos permite controlar de manera más inteligente el reordenamiento de los elementos. Por lo tanto, el estado almacenado en los bloques {} de recuerdo se moverá junto con el elemento cuando se reordenan los elementos o se quita el del medio.
LazyColumn { items(users, key = { user -> user.id }) { ... } }
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 reemplazó
Constraints.enforce
porConstraints.constrain
. (I8b8ea)loadFontResource dejó de estar disponible. En su lugar, usa fontResource. imageResource, loadImageResource, vectorResource y loadVectorResource dejaron de estar disponibles. o painterResource. (I6b809)
Por motivos de rendimiento, la semántica de ScrollAxisRange ahora toma expresiones lambda que muestran objetos Float en lugar de valores Float directos. (If4a35, b/178657186)
Se agregaron una semántica de EditableText para marcar texto de entrada editable del campo de texto con fines de accesibilidad y los métodos de prueba correspondientes para verificar la semántica. (I8e07a)
Modifier.clickable no es compatible con clics dobles y largos. Para lograr esa función, usa Modifier.combinedClickable. (Iafad1)
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)
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 se 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ó una semántica de contraseña para accesibilidad. (I231ce)
Se agregó ProgressBarRangeInfo.Indeterminate a fin de marcar barras de progreso indeterminadas para la accesibilidad. (I6fe05)
Ahora, el tiempo de reproducción en la animación se extiende a nanosegundos. (If776a)
@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)Ahora se pueden cerrar los elementos Recomposer. Si se cierran, continuarán componiendo hasta que se completen las corrutinas de elementos secundarios de composición. Se cambió el nombre de Recomposer.shutDown a cancel para que haya una diferencia con la acción de cerrar. (Ib6d76)
Las API relacionadas con LazyVerticalGrid se marcaron como experimentales. (Ia53e3, b/178519862)
Se cambió el nombre de rememberSavedInstanceState() a rememberSaveable() y se movieron al paquete androidx.compose.runtime.saveable. (I1366e, b/177338004)
Se cambió el nombre de RerestableStateHolder a SaveableStateHolder y se movió al paquete androidx.compose.runtime.saveable. Se cambió el nombre del método interno RerestableStateProvider a SaveableStateProvider. Se quitó el tipo genérico para que cualquiera pueda pasar como clave. Ya no se necesita la anotación experimental. (I0902e, b/174598702)
Se movieron Saver, listSaver(), mapSaver(), autoSaver de androidx.compose.runtime.savedinstancestate a androidx.compose.runtime.saveable. (I77fe6)
Se cambió el nombre del artefacto androidx:compose:runtime:runtime-saved-instance-state a androidx:compose:runtime:runtime-saveable. (I6dcac)
Se borraron muchas API que dejaron de estar disponibles en el paquete de IU. (I2f2dc)
El artefacto compose:runtime-dispatch dejó de estar disponible. Ahora se puede encontrar MonotonicFrameClock en compose:runtime y AndroidUiDispatcher en compose:ui. (Ib5c36)
Se cambió el nombre de los parámetros en RounderCorrShape, CuperCrShape 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 quitó el elemento canDrag de Modifier.scrollable. (Id66e7, b/175294473)
Se refactorizó la API a la que se orienta el complemento de compilador de Compose para usar una interfaz en lugar de una clase concreta. La interfaz ya dejó de usar un parámetro de tipo.
Este es un cambio interno que no debería afectar la compatibilidad del código fuente, pero es un cambio rotundo del objeto binario. (I3b922, b/169406779)
Se quitó Modifier.scaleGestureFilter. En su lugar, usa Modifier.zoomable. También, se puede usar
Modifier.pointerInput { detectMultitouchGestures { ... }}
(Id5da1, b/175294473)AnimatedValue/Float dejó de estar disponible. En su lugar, usa Animatable. (I71345, b/177457083)
- Se quitaron CoreText y CoreTextField de la API pública.
- Se quitó la sobrecarga de SelectContainer, que dejó de estar disponible. (I99c19)
Se quitaron las funciones de desplazamiento sin suspensión que dejaron de estar disponibles. Con los cambios de la última versión, las funciones de desplazamiento sin suspensión se quitaron por completo. Convierte las funciones de suspensión con los mismos nombres. El alcance de una corrutina se puede obtener a través de rememberCoroutineScope(). (I3d39c, b/178169563)
androidx.compose.foundation.layout.ConstraintLayout dejó de estar disponible y se reemplazó por androidx.constraintlayout.compose.ConstraintLayout. Es necesario agregar una dependencia en
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01
. (I87adc)tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter y pressIndicititGestureFilter dejaron de estar disponibles. En su lugar, usa Modifier.clickable o Modifier.pointerInput con la función detectTapGestures. (I6baf9, b/175294473)
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)Recomposer.runningRecomposers ahora ofrece un StateFlow global de RecomposerInfo de solo lectura para observar el estado de la composición en proceso. Se prefiere esta API en lugar de Recomposer.current(), que dejó de estar disponible. (If8ebe)
Versión 1.0.0-alpha11
28 de enero de 2021
Lanzamiento de androidx.compose.foundation:foundation:1.0.0-alpha11
y androidx.compose.foundation:foundation-layout:1.0.0-alpha11
. La versión 1.0.0-alpha11 contiene estas confirmaciones.
Cambios en la API
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ó un 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)
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 quitó el parámetro canDrag de Modifier.draggable. (Ic4bec, b/175294473)
Se quitó el elemento AnimatedFloat.fling que acepta FlingConfig. Usa la suspensión Animatable.animateDecay. (I4659b, b/177457083)
Se quitó
data class
de las siguientes clases:- InlineTextContent
- LocaleList
- (I605c7)
Ahora, clickable, toggleable and selectable pueden crearse fuera de la composición. (I0a130, b/172938345, b/175294473)
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 para Arrays: items(items: Array) and itemsIndexed(Array). (I803fc, b/175562574)Se quitó el AcatedArmostat que dejó de estar disponible. (Iffa96, b/177641870)
El parámetro propagateMinConstraints se agregó a Box para especificar si las restricciones mínimas entrantes se deben pasar al contenido de Box o no. El valor predeterminado es falso. (I0125b, b/152613457)
Correcciones de errores
- onCommit, onDispose y onActive dejaron de estar disponibles y se los reemplazó con las API de SideEffect y DisposableEffect. (If760e)
- WithConstraints se rediseñó y nombró BoxWithConstraints, y se movió a foundation.layout. (I9420b, b/173387208)
Se realizaron cambios en las funciones de fábrica de Font/FontFamily/Typeface.
- Se agregaron funciones de fábrica que comienzan con mayúscula.
- Las funciones anteriores con letra minúscula dejaron de estar disponibles.
- Las nuevas funciones de fábrica muestran la FontFamily en lugar de subclases.
- Se ocultaron los constructores de las subclases, por lo que solo se pueden construir mediante funciones de fábrica.
- Se cambió el nombre de Font.asFontFamily por Font.toFontFamily.
- (I42aa7)
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).animateAsState ahora es animateFooAsState, donde Foo es el tipo de variable que se anima, p. ej., Float, Dp, Offset, etc. (Ie7e25)
Density ahora es el alcance del receptor para las interfaces de Arrangement. (I18aad)
TextFieldValue acepta AnnotatedString. Sin embargo, este cambio es solo para la API y la edición de texto multiestilo todavía no se implementó.
- Se quitó
initial
de los parámetros del constructor EditingBuffer. (I326d5)
- Se quitó
invalidate y compositionReference() dejaron de estar disponibles y se reemplazaron con currentRecomposeScope y rememberCompositionReference, respectivamente. (I583a8)
AnnotatedString se modificó para que se extendiera de kotlin.CharSequence. Por lo tanto, la longitud y subSequence ahora son funciones de instancia, y se quitaron las funciones de extensión. (Iaf429)
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)
ComposiciónLifecycleObserver dejó de estar disponible y se reemplazó con RememberObserver.
RememberObserver
es un reemplazo deCompositionLifecycleObserver
con una semántica modificada y métodos con nombres cambiados. El cambio a la API nueva se puede realizar de manera mecánica para objetos que solo se recuerdan una vez y sigue siendo la práctica recomendada. Sin embargo, si se olvidó una referencia más de una vez en una composición, se llama aonRemembered
para cada referencia en la queonEnter
solo se llama una vez. Antes, se llamaba aonEnter
varias veces si el objeto se usaba en subcomposiciones, comoWithConstraints
yScaffold
, por lo que la garantía de la única llamada aonEnter
no era confiable. Por lo tanto, se quitó deRememberObserver
.RememberObserver
agregaonAbandoned
, que se llama si la devolución de llamada pasada aremember
muestra la instanciaRememberObserver
, pero como esta no se recuerda en el estado de composición, nunca se llamará aonRemembered
. Esto puede ocurrir si una excepción termina la composición antes de completarla, o bien si la descarta, ya que el estado que estaba produciendo una composición ya no está vigente o no se necesita. Si la instancia deRememberObserver
que sigue a la recomendación de referencia única anterior realiza el seguimiento de un recurso externo, tantoonForgotten
comoonAbandoned
indicarán que el recurso ya no es necesario. Si el objeto realiza un seguimiento del trabajo que se inició o los recursos asignados enonRemembered
, se puede ignorar aonAbandoned
, ya que no se llamará si se llama aonRemembered
. (I02c36)Se cambió el nombre de TransformedText.transformedText a TransformedText.text.
- TransformedText ya no es una clase de datos. (Ie672a)
Las siguientes clases ya no son clases de datos:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
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)
Usa ImeAction.None en lugar de ImeAction.NoAction.
- Usa ImeAction.Default en lugar de ImeAction.Unspecified. (Ie1bcc)
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 cambió VisualTransformation para que sea una interfaz funcional. (I3bba4)
Se implementó TestCoroutineDispatcher en pruebas. (I532b6)
Se quitó PointerInputData y se modificó el PointerInputChange para otorgarle todos los campos de PointerInputData. Se convirtieron en internos los elementos PointerInputEvent y PointerInputEventData debido a que no se usan en ninguna API pública. (Ifff97, b/175142755)
Se cambió el nombre de TextInputService.onStateUpdated a updateState. (Id4853)
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)
Versión 1.0.0-alpha10
13 de enero de 2021
Lanzamiento de androidx.compose.foundation:foundation:1.0.0-alpha10
y androidx.compose.foundation:foundation-layout:1.0.0-alpha10
. La versión 1.0.0-alpha10 contiene estas confirmaciones.
Cambios en la API
- ImeOptions y KeyboardOptions ya no son clases de datos. (I3c898, b/168684531)
- Se realizaron cambios en la API de VisualTransformation
- Se cambió el nombre de OffsetMap a OffsetMapping.
- Se cambió el nombre de OffsetMapping.identityOffsetMap a OffsetMapping.Identity.
- PasswordTransformation ya no es una clase de datos.
- Se movió OffsetMapping a su propio archivo.
- (I0bdf3)
- Se realizaron cambios en la API de EditOperations.
- Se cambió el nombre de EditOperation a EditCommand.
- Se agregó el sufijo Command para implementaciones concretas de EditOperation.
- Las EditCommand ya no son clases de datos.
- Se cambió el nombre de la función EditOperation.process a applyTo.
- Se cambió el nombre de InputEventListener a InputEventCallback.
- (I0a366)
- Se modificó Velocity para que tuviera partes de componentes y operaciones matemáticas. (Ib0447)
- Se cambió el nombre de @ExperimentalTesting a @ExperimentalTestApi para que fuera coherente con anotaciones de API experimentales similares. (Ia4502, b/171464963)
- Se agregó el método experimental stickerHeader para LazyColumn/LazyRow. (I0a81d)
- Se cambió el nombre de Color.useOrElse() a Color.takeOrElse(). (Ifdcf5)
- TestUiDispatcher dejó de estar disponible. En su lugar, usa Dispatchers.Main. (Ic171f, b/175385255)
- Se agregó la opción de activar o desactivar el elemento Strings.kt de Foundation (I4a5b7, b 172366489).
- Se trasladó nativeClass al módulo de IU y se la convirtió en clase interna. Se actualizaron los usos de nativeClass en las implementaciones de equals para usar "is MyClass" en su lugar. (I4f734)
- 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 agregó SelectionRegistry.notifySelectableChange para notificar a SelectableManager las actualizaciones de Selectable. (I6ff30, b/173215242)
- Se cambió
fun Dp.isFinite()
aval Dp.isFinite
. (I50e00) - Se cambió el nombre de Constraints#satisfiedBy a isSatisfiedBy. (I9cf5c)
- Se agregó isSpecified, isUnspecified y useOrElse para las clases intercaladas con una constante Unspecified. (I93f7b, b/174310811)
Correcciones de errores
- Se agregó la nueva API de
Animatable
basada en corrutinas que garantiza la exclusividad mutua entre sus animaciones. Se agregó DecayAnimationSpec para admitir animaciones de disminución multidimensionales. (I820f2, b/168014930) - 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)
- Ahora se puede acceder al keyEvent nativo a través de keyEvent.nativeKeyEvent. (I87c57 o b/173086397)
Versión 1.0.0-alpha09
16 de diciembre de 2020
Lanzamiento de androidx.compose.foundation:foundation:1.0.0-alpha09
y androidx.compose.foundation:foundation-layout:1.0.0-alpha09
. La versión 1.0.0-alpha09 contiene estas confirmaciones.
Cambios en la API
Agrega una interfaz Scrollable
Esto permite que ScrollState y LazyListState se consideren tipos comunes, lo que a su vez permite implementar desplazamiento personalizado en ambos elementos.
Esto también traslada smoothScrollBy a una función de extensión en Scrollable, lo que permite aprovechar esta funcionalidad. (I2153b)
Se agregó LazyVerticalGrid. (I17267, b/162213211)
LazyColumnFor, LazyRowFor, LazyColumnForIndexed y LazyRowForIndexed dejaron de estar disponibles. En su lugar, usa LazyColumn y LazyRow. (I5b48c)
Para las API de entrada de puntero de suspensión, se cambió el nombre de HandlePointerInputScope a AwaitPointerEventScope, y el de handlePointerInput() a awaitPointerEventScope() (Idf0a1, b/175142755).
Se agregó LazyListState.layoutInfo, que expone la lista de tamaños y compensaciones de los elementos visibles en el momento. (If8678, b/170472532)
Se quitó la anotación ExperimentalPointerInput. (Ia7a24)
Se agregó compatibilidad con InteractionState para TextFields. (I61d91)
Se agregó el parámetro revertLayout para LazyColumn/Row. cuando los elementos
true
se componen de abajo hacia arriba yLazyListState.firstVisibleItemIndex == 0
significa que el primer elemento se ubica en la parte inferior. (I552ae, b/166589935)Se agregó el parámetro verticalArrangement para LazyColumn. Se agregó el parámetro horizontalArrangement para LazyRow. Arrangement permite agregar un espacio entre los elementos y especificar su disposición si no tenemos suficientes para alcanzar el tamaño mínimo. (Icf79a, b/170394300)
detectMultitouchGestures ahora usa una devolución de llamada con una combinación de parámetros centroides, de desplazamiento y de zoom. (Ie6e1c)
Se trasladó ContentDrawScope al módulo ui-graphics para que se encontrara junto a DrawScope. (Iee043, b/173832789)
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 quitó SlotTable, SlotReader y SlotWriter de la API pública. Anteriormente, se marcaban como InternalComposeAPI. Ahora, son elementos internos del módulo de Compose.
Se agregaron ComposiciónData y ComposiciónGroup como reemplazo de la API de ui-tooling para que se usen con el fin de extraer información de composición. Son públicos, pero no están destinados para su uso fuera de la API de ui-tooling, ya que proporcionan la información sin procesar que interpreta la API de ui-tooling. (I31a9c)
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)
Ahora la API de Autofill es una API experimental y requiere habilitación (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 introdujeron varias funciones nuevas en SelectionRegistrar y se cambió el nombre de onPositionChange a notifyPositionChange. (Ifbaf7)
AndroidOwner se hizo interno. (Ibcad0, b/170296980)
Se agregó una función infiniteRepeatable para crear InfiniteRepetableSpec. (I668e5)
Se modificó la interfaz
Applier
para simplificar la creación de árboles de abajo hacia arriba en lugar de arriba hacia abajo.Se cambió el nombre del método
insert()
porinsertTopDown()
.Se agregó un método nuevo:
insertBottomUp()
.Un aplicador inserta cualquiera de los nodos en el árbol que edita con
insertTopDown()
oinsertBottomUp()
según el que tenga mejor rendimiento.Algunos árboles, como
LayoutNode
yView
, son mucho más eficientes para compilar hacia arriba que hacia abajo. Antes de este cambio, se necesitaba una pila de inserciones para implementar la compilación de abajo hacia arriba, que debía copiarse en cada aplicador que necesitaba una construcción de abajo hacia arriba para funcionar. Con este cambio, un elementoApplier
anulainsertBottomUp()
para compilar un árbol de abajo hacia arriba yinsertTopDown()
para compilar el árbol de arriba hacia abajo. (Icbdc2)Se agregó la API de painterResource para controlar objetos Painter que se cargan de manera opaca desde formatos de recursos en trama (como PNG) o VectorDrawable. Los usuarios ya no tienen que determinar el tipo de recurso por adelantado y pueden llamar a este método para obtener un objeto Painter que se pueda usar en los elementos de Image que admiten composición o los modificadores de Painter. (I2c703, b/173818471)
Se agregó la función de fábrica buildAnnotatedString para compilar un elemento AnnotatedString. Dejó de estar disponible la función del compilador de annotatedString. (Idfe0b)
Versión 1.0.0-alpha08
2 de diciembre de 2020
Lanzamiento de androidx.compose.foundation:foundation:1.0.0-alpha08
y androidx.compose.foundation:foundation-layout:1.0.0-alpha08
. La versión 1.0.0-alpha08 contiene estas confirmaciones.
Cambios en la API
- Se quitó el parámetro
maxLines
deCoreTextField
. Si deseas restringir la altura del campo de texto por el número de líneas, usaBasicTextField
. (Iec002) - Se cambiaron los métodos
await*TouchSlop()
para que no detectaran el desplazamiento del puntero hacia abajo y se les cambió el nombre a*OrCancellation
. También se quitó la necesidad del parámetroorientationLock
. (Ie96e1) - 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 movieron las API de
foundation:foundation-text
afoundation:foundation
. La estructura del paquete sigue siendo la misma. (Id3eb2) - Se agregó un nuevo detector de gestos multitáctil que incluye asistentes para detectar acciones de rotación, zoom y desplazamiento. (Ic459d)
- Se incluyó un nuevo detector del gesto arrastrar en la API de entrada de puntero de suspensión, que también admite el bloqueo de orientación. (Icef25)
- 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 movieron las propiedades semánticas básicas de Foundation a la IU. (I6f05c)
Se agregaron API de desplazamiento basadas en corrutinas:
Se agregaron LazyListState.snapToItem y LazyListState.smoothScrollBy, al igual que API de niveles inferiores para controlar el desplazamiento. Estas API proporcionan una interfaz de suspensión para controlar el desplazamiento que espera hasta que la acción finalice antes de mostrar el resultado. (Ie5642)
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)
Se agregó el detector de gestos para presionar, presionar dos veces, mantener presionado y la indicación de presión mediante la nueva entrada de puntero suspendida. También se agregaron algunas utilidades que facilitan la tarea de los desarrolladores para escribir sus propios detectores de gestos. (I00807)
Se agregó Modifier.focusable en Foundation. Usa este elemento para agregar comportamiento enfocable a un componente con semántica y accesibilidad correctas. (I41eb9, b/152525426, b/162865824)
Se quitaron las API que dejaron de estar disponibles anteriormente, y también Border, así que deberás usar BorderStroke. Se quitó Modifier.drawBorder. En su lugar, usa Modifier.border. Se quitó Modifier.gravity. En su lugar, usa Modifier.align. Se quitó Stack. En su lugar, usa Box. (I32c2b, b/172470874)
Se cambió el nombre de AbsoluteArrangement a Arrangement.Absolute. (If26f2)
Correcciones de errores
- 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 acordados de la API. (I0bd29, b/173834241)
- Se quitó
<T>
de la declaración de SubcomposeLayout. Ahora se puede usar sin especificar un tipo. (Ib60c8) - Los campos de posición y tiempo de actividad de PointerInputData se volvieron no nulos. (Id468a)
- MaterialTheme ahora configura 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 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 agregó WindowManager.isWindowFocused para comprobar si la ventana del host está enfocada y un objeto WindowFocusObserver que proporciona una devolución de llamada onWindowFocusChanged. (I53b2a, b/170932874)
- Se agregó el parámetro resetInput a TextInputService#onStateUpdated. (I3e8f5, b/172239032, b/171860947)
- 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)
- 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ó el wrapper Typeface de Android. Puedes cargar un Typeface de Android mediante la función
typeface
; es decir,typeface(Typeface.DEFAULT)
. También se cambió el nombre detypefaceFromFontFamily()
atypeface()
. (I52ab7) - 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 agregó una comprobación de lint para verificar que las funciones de fábrica de Modifier se definan como extensiones en Modifier, de modo que se puedan encadenar con fluidez. (I07981)
- 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 combinó el módulo
foundation:foundation-text
confoundation:foundation
. (Idac0f) - Dejaron de estar disponibles place(Offset) y placeRelative(Offset). En su lugar, usa sobrecargas con compensaciones de Int. (I4c5e7).
- Se cambió el nombre de
id
alayoutId
paraLayoutIdParentData
. Se cambió el nombre deMeasurable.id
aMeasurable.layoutId
. (Iadbcb, b/172449643)
Versión 1.0.0-alpha07
11 de noviembre de 2020
Lanzamiento de androidx.compose.foundation:foundation:1.0.0-alpha07
, androidx.compose.foundation:foundation-layout:1.0.0-alpha07
y androidx.compose.foundation:foundation-text:1.0.0-alpha07
. La versión 1.0.0-alpha07 contiene estas confirmaciones.
Cambios en la API
- Del mismo modo que ocurre con
Modifier.fillMaxSize[Width|Height]
, ahora se admiten fracciones enModifier.fillParentMaxSize[Width|Height]
dentro del alcance deLazyColumn/Row
. (I797e2, b/166586426) - Se quitó
KeyboardOptions.toImeOptions
de la API pública. (Ic2e45) - 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 agregó maxLines a TextFields. (Ib2a5b)
- Se actualizó TextFields para que acepte KeyboardOptions. (Ida7f3)
- Se agregó KeyboardOptions para su uso en TextFields. (I9ca32)
- Se agregó BasicText como una API para texto sin tendencias en el diseño, similar a BasicTextField. (I28268)
- Se quitó la anotación ExperimentalLazyDsl. Ahora se puede usar LazyColumn/LazyRow sin agregar @OptIn. (Idab7a, b/166584730)
- BaseTextField dejó de estar disponible. En su lugar, usa BasicTextField. (I896eb)
- Se agregó BasicTextField como reemplazo de CoreTextField y BaseTextField. (Id4cea)
- Se quitó LazyColumnItems/LazyRowItems, que dejó de estar disponible. (I1d8a8)
- Se quitaron los elementos obsoletos que admiten composición encargados de definir el tamaño en mediciones intrínsecas. (I18537, b/171811496)
- 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 agregó el parámetro matchHeightConstraintsFirst al modificador aspectRatio, que se puede usar para especificar el modificador de tamaño en función de las restricciones de altura antes de probar los correspondientes al ancho. (Ie7c43, b/155290593)
- Se quitó el objeto DpConstraints obsoleto. (I87884, b/171702471)
Correcciones de errores
- Se introdujo la clase intercalada ScaleFactor para representar factores de escala de los ejes horizontales y verticales independientes, a fin de admitir casos de uso de escalamiento no uniforme.
- Se agregó el método computeScaleFactor a ContentScale.
- Se agregó ContentScale.FillBounds para realizar escalamientos no uniformes a fin de estirar los límites de src y completar el destino.
- Se agregaron métodos de operador para calcular los parámetros de ScaleFactor con los parámetros Size.
- (Ic96a6, b/172291582)
- Se movió captureToBitmap a captureToImage. (I86385)
- Se marcó CoreText como @InternalTextApi. En su lugar, usa BasicText. (I6aaeb)
- Se cambió el nombre de KeyboardOptions a ImeOptions. (I82f36)
- Se movió KeyboardType y ImeAction a KeyboardOptions. (I910ce)
- Se marcó CoreTextField como @InternalTextApi. En su lugar, usa BasicTextField. (Ie2469)
- Se quitó la anotación ExperimentalSubcomposeLayoutApi. Ahora es posible usar SubcomposeLayout sin agregar @OptIn. (I708ad)
- Se introdujo el módulo ui-test-junit4. (Ib91f8)
- 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 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)
- Se movió androidx.ui.test a androidx.compose.ui.test. (I9ffdb)
- Se movieron FirstBaseline y LastBaseline al paquete androidx.compose.ui.layout. (Ied2e7)
- Se agregó SelectionContainer sin la devolución de llamada. (Ibfadb)
- Se agregaron pruebas para las posiciones de SelectionHandle en SelectionContainer. (Ie93db)
- Se agregó la opción IME de corrección automática del teclado. (I57b8d)
Versión 1.0.0-alpha06
28 de octubre de 2020
Lanzamiento de androidx.compose.foundation:foundation:1.0.0-alpha06
, androidx.compose.foundation:foundation-layout:1.0.0-alpha06
y androidx.compose.foundation:foundation-text: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ó interactionState a Modifier.scrollable, ScrollableColumn y LazyColumnFor. (I81566, b/169509805)
- Se agregó alignByBaseline a RowScope, y se cambió el nombre de alignWithSiblings a alignBy. (I06503, b/170628732)
- Se creó Box como función intercalada. (Ibce0c, b/155056091)
- Se agregó maxLines a CoreTextField. (Ibee58, b/143687793)
- Se agregó softwrap a CoreTextField. (I21a4b)
Correcciones de errores
- VectorPainter dejó de estar disponible y se reemplazó por rememberVectorPainter para indicar mejor que la API de composición aprovecha internamente "remember" para conservar datos en 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 agregó la capacidad de especificar información del inspector en un modificador compuesto. (Idee08, b/163494569)
- Se agregó la opción de IME KeyboardCapitalization. (I8ac38)
- Se corrigió la posición del controlador Rtl. (I6e1e0)
- Cambio rotundo: Se quitó el valor que se mostraba de PointerInputFilter.onPointerEvent(…), dado que el único valor que se puede modificar en los eventos del puntero es el de los datos de consumo. En lugar de mostrar datos de PointerInputFilter.onPointerEvent(…), ahora puedes mutar los datos de consumo de los objetos PointerEvents pasados. (I6acd0)
- Se agregó la opción SelectAll al menú de selección. (Ief02b)
Versión 1.0.0-alpha05
14 de octubre de 2020
Lanzamiento de androidx.compose.foundation:foundation:1.0.0-alpha05
, androidx.compose.foundation:foundation-layout:1.0.0-alpha05
y androidx.compose.foundation:foundation-text:1.0.0-alpha05
. La versión 1.0.0-alpha05 contiene estas confirmaciones.
Cambios en la API
- CoreTextField ahora es compatible con la funcionalidad del cursor. (Id23aa)
Las API contentColor() y currentTextStyle() dejan de estar disponibles, y se reemplazan 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)
Correcciones de errores
- Como parte de la estandarización de los valores sentinela para las clases intercaladas, se cambió el nombre de Color.Unset a Color.Unspecified para mantener la coherencia con otras clases intercaladas (I97611, b/169797763).
- Se agregaron las acciones de accesibilidad de copiar, pegar y cortar. (I6db4f)
- Se introdujo TextOverflow.None. Cuando el desbordamiento sea None, Text ya no lo controlará y notificará su tamaño real a LayoutNode. (I175c9, b/158830170)
- Se actualizaron los parámetros de Size.Unspecified a Float.NaN en lugar de Float.POSITIVE_INFINITY. Se actualizaron las implementaciones de Painter para verificar con Size.Unspecified, así como Sizes no finitos. (I95a7e)
- Se agregó el módulo Paging Compose y la integración de paginación. (Ib85da)
- Se modificó LazyListScope para recibir valores nulos. (I1765b)
- Se cambió el nombre de OnPositionedModifier a OnGloballyPositionedModifier y el de onPositioned() a onGloballyPositioned() (I587e8, b/169083903).
- Se agregaron muestras para LazyColumn/Row. (Idc16d)
- Se corrigieron los métodos items y itemsIndexed para permitir emptyList. (I06647)
- Se agregó un DSL para especificar la información del inspector. (Ic9a22)
- Se movió LongPress a Text. (Iff2bc)
- Se inhabilitaron Selection en Text y un objeto Demo. (Ie7e97)
- Se agregó compatibilidad con la conversión de AnnotatedString a SpannableString para la accesibilidad. (Ief907)
- Se quitó
PointerInputFilter.onPointerInput(...)
.PointerInputFilter.onPointerEvent(...)
debe usarse en su lugar. (I6f04a)
Versión 1.0.0-alpha04
1 de octubre de 2020
Lanzamiento de androidx.compose.foundation:foundation:1.0.0-alpha04
, androidx.compose.foundation:foundation-layout:1.0.0-alpha04
y androidx.compose.foundation:foundation-text:1.0.0-alpha04
. La versión 1.0.0-alpha04 contiene estas confirmaciones.
Cambios en la API
- Se cambió el nombre de Stack a Box. foundation.Box 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 padding en tu cuadro, utiliza modificadores (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279).
- Agrega una nueva clase LazyListState. Esto permite la observación y el control de la posición de desplazamiento de los componentes de LazyRow y LazyColumn. Es posible crear las instancias con rememberLazyListState() y pasarlas al parámetro de estado del componente. Actualmente, se pueden observar en esta versión inicial el primer elemento visible y las compensaciones. (Ic7cb7, b/159307669)
- La posición de la lista Lazy y la compensación de desplazamiento ahora se guardan y se restablecen en la creación de Activity. (Ie045f, b/166589058)
- Se agregó la acción de semántica de clics largos. (I6281b, b/156468846)
- Se agregó la utilidad MutatorMutex para mantener un solo mutador del estado compartido en el tiempo y cancelar mutadores en conflicto por prioridad. (I3f975)
- Se agregaron las anotaciones rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled y textInputServiceFactory con @VisibleForTesting, se las convirtió en internas para la API y se ocultó su KDoc (I554eb, b/168308412).
- Se quitó el parámetro inlineContent de Text con entrada de string. No se utilizará porque inlineContent debe funcionar con AnnotatedString. (Ief403)
- Se quitaron las API de organización personalizada que eran obsoletas. (Ic576d, b/168297922, b/168297923)
- Se agregó el parámetro
unbounded
a los modificadores wrapContentSize, lo que permite medir el elemento de diseño con limitaciones máximas infinitas. (I77951, b/158559319) - 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)
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)
- Optimizaciones de rendimiento para el desplazamiento LazyColumnFor/LazyRowFor mediante la anulación de recomposiciones innecesarias durante cada desplazamiento. (I64f65, b/168293643, b/167972292, b/165028371)
- Se corrigió una falla en LazyColumnFor/LazyRowFor después del desplazamiento, se cambiaron elementos y se implementó el desplazamiento automático hacia arriba cuando el elemento visible anteriormente se haya quitado, de manera que ya no se verán espacios vacíos al final (I220ab, b/161480164, b/167855468).
- Ya no se permite el anidado desplazable en los mismos contenedores de dirección, como ScrollableContainer y LazyColumnFor. Esa función nunca era compatible y, además, provocaba un error en el desplazamiento y el comportamiento diferido al componer los elementos de LazyColumnFor. (I6e101)
- 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)
- Se agregó AccessibilityScrollState a las propiedades de semántica. (Ifeda9)
- Se creó el intercalado de TextRange para evitar la creación de objetos. (Id034b)
- Se quitó ParagraphConstraints. Ahora, el ancho se pasa directamente al párrafo. (Ica712)
Versión 1.0.0-alpha03
16 de septiembre de 2020
Lanzamiento de androidx.compose.foundation:foundation:1.0.0-alpha03
, androidx.compose.foundation:foundation-layout:1.0.0-alpha03
y androidx.compose.foundation:foundation-text:1.0.0-alpha03
. La versión 1.0.0-alpha03 contiene estas confirmaciones.
Cambios en la API
- Se cambió el nombre de InnerPadding a PaddingValues. (I195f1, b/167389171)
- 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 agregó un parámetro de alineación a Stack que permite especificar la alineación predeterminada para todos los elementos secundarios de Stack. (Ie80ca, b/164085265)
Correcciones de errores
- Dejaron de estar disponibles DpConstraints y las API que usaban esas restricciones. (I90cdb, b/167389835)
- Se cambió el nombre de los parámetros
minWidth
ymaxWidth
dewidthIn
amin
ymax
. Del mismo modo que parapreferredWidthIn
,heightIn
ypreferredHeightIn
. (I0e5e1, b/167389544) - Se agregaron onNode y otros métodos globales a ComposeTestRule, ya que los actuales dejarán de estar disponibles. (Ieae36)
- Se corrigieron los cálculos de tamaño y posición en GestureScope que generaban gestos de deslizamiento no válidos, entre otros (Iaf358, b/166589947).
- Se trasladó
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.foundation:foundation:1.0.0-alpha02
, androidx.compose.foundation:foundation-layout:1.0.0-alpha02
y androidx.compose.foundation:foundation-text:1.0.0-alpha02
. La versión 1.0.0-alpha02 contiene estas confirmaciones.
Correcciones de errores
- Se marcó TestUiDispatcher como experimental. (Iae99d, b/161247083)
Se agregó
ManualFrameClock.hasAwaiters
para ver si hay algo que espera un marco de ese reloj;runWithManualClock
como un reemplazo pararunBlocking
cuando se ejecutan pruebas que necesitan un ManualFrameClock, yTestUiDispatcher.Main
, que brinda un acceso fácil al despachador de IU principal en tus pruebas.Por ejemplo:
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
Versión 1.0.0-alpha01
26 de agosto de 2020
Lanzamiento de androidx.compose.foundation:foundation:1.0.0-alpha01
, androidx.compose.foundation:foundation-layout:1.0.0-alpha01
y androidx.compose.foundation:foundation-text:1.0.0-alpha01
. La versión 1.0.0-alpha01 contiene estas confirmaciones.
Versión 0.1.0-dev
Versión 0.1.0-dev17
19 de agosto de 2020
Lanzamiento de androidx.compose.foundation:foundation:0.1.0-dev17
, androidx.compose.foundation:foundation-layout:0.1.0-dev17
y androidx.compose.foundation:foundation-text:0.1.0-dev17
. La versión 0.1.0-dev17 contiene estas confirmaciones.
Cambios en la API
- Se agregó la disposición spacedBy para filas y columnas a fin de habilitar el posicionamiento de los elementos secundarios de diseño con un espaciado fijo. También se agregó la disposición alineada, de forma que puedan posicionarse esos elementos unos junto a otros y alineados en la fila y columna según la Alineación establecida. Los métodos anteriores Arrangement.Vertical#arrange y Arrangement.Horizontal#arrange dejaron de estar disponibles, y ya no se admitirán las disposiciones personalizadas en el futuro. (I6733d, b/161985975)
- Offset se convirtió en una clase intercalada. (Iaec70)
- 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.border. Se reemplazó la clase de datos Border por BorderStroke. (I4257d, b/158160576)
- Se quitaron VerticalScroller y HorizontalScroller. En su lugar, usa ScrollableColumn/Row. Se quitó Modifier.drawBackground. Se usa Modifier.background. (I73b0d, b/163019183)
- Se quitaron los modificadores fillMax* marcados como obsoletos de LazyItemScope, ya que dificultan la inclusión correcta de esos modificadores para los elementos que no sean secundarios directos de LazyColumnFor. (Ifa78d)
- Se agregó la implementación de LazyColumn/LazyRow como DSL. (I93cc6)
- Constraints ahora es una clase intercalada. (I88736)
- Se agregó la capacidad de ajustar el tamaño de un diseño a una fracción del espacio disponible usando los modificadores fillMaxWidth, fillMaxHeight y fillMaxSize. (I945bb, b/161562591)
Correcciones de errores
- Se agregó un parámetro modificador a SelectionContainer. (I4aada, b/161487952)
- 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)
- Se cambió el nombre de
PlacementScope.placeAbsolute()
aPlacementScope.place()
, y el del objetoPlacementScope.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) - Se quitó el componente FilledTextField obsoleto. En su lugar, usa TextField para obtener la implementación de Material Design del campo de texto relleno. (I5e889)
- 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)
- 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 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)
- Se quitaron onChildPositioned y OnChildPositionedModifier. En su lugar, los desarrolladores deberán usar onPositioned y OnPositionedModifier en el diseño secundario. (I4522e, b/162109766)
- IntSize ahora es una clase intercalada. (I2bf42)
- Se utiliza la función LongPress para editar el área en blanco. (Ib1e5b)
- FloatingToolbar se oculta después de presionar el texto. (If4525)
- FloatingToolbar se oculta cuando se actualiza la selección. (I8444c)
- Se anula la selección cuando se activa Desenfoque. (I781a2)
Versión 0.1.0-dev16
5 de agosto de 2020
Lanzamiento de androidx.compose.foundation:foundation:0.1.0-dev16
, androidx.compose.foundation:foundation-layout:0.1.0-dev16
y androidx.compose.foundation:foundation-text:0.1.0-dev16
. La versión 0.1.0-dev16 contiene estas confirmaciones.
Cambios en la API
- Se agregó LazyItemScope para el parámetro itemContent de las listas Lazy. Esto proporciona modificadores para rellenar el tamaño máximo del elemento superior, lo cual resuelve el caso de uso en el que el elemento debía rellenar viewport, pero el Modifier.fillMaxSize() normal no funcionaba debido a que el elemento se mide con restricciones infinitas. (Ibd3b2, b/162248854)
- Se movió diálogo a la IU. (I47fa6)
- Se agregó LazyColumnForIndexed/LazyRowForIndexed, versiones de LazyColumnFor/LazyRowFor que brindan un índice y un elemento en itemCallback. Resulta útil cuando, además de un elemento actual, necesitas conocer un índice actual. (I65ff3)
- Se cambió el nombre de Modifier.determinateProgress a Modifier.progressSemantics. (I9c0b4)
- Se cambió el nombre de LazyColumnItems a LazyColumnFor. Se cambió el nombre de LazyRowItems a LazyRowFor. (I84f84)
- Se agregaron algunas marcas/anotaciones a fin de aplicar prácticas recomendadas. (I66b20)
- Se acopló el paquete foundation.shape.corner a foundation.share. (I46491, b/161887429)
- Se agregó el parámetro crossaxis de Gravity a LazyRowItems/LazyColumnItems. LazyRowItems/LazyColumnItems ahora son compatibles con el comportamiento de ajuste de contenido. (Ib39fc)
- Se cambió el nombre de ZoomableState a ZoomableController. Se agregó compatibilidad con curvas personalizadas en smoothScale. Se agregaron las funcionalidades
enabled
yonZoomStarted
. (If8b8f) - Se cambió el nombre de FilledTextField de Material a TextField, y el del TextField principal se cambió a BaseTextField para que la API deseada resulte más fácil de encontrar y usar (Ia6242, b/155482676).
- Se quitó AdapterList, que anteriormente había quedado obsoleto. En su lugar, usa LazyColumnItems. (I12b9b)
- Se cambió el nombre de Modifier.drawBackground a Modifier.background. (I13677)
- Se quitó el antiguo DSL de ConstraintLayout. Se cambió el nombre de ConstraintSet2 por ConstraintSet. (If58d1, b/162450908)
- Se agregaron Modifier.absoluteOffset() y Modifier.absoluteOffsetPx(). A diferencia de los modificadores de desplazamiento, los de desplazamiento absoluto no se duplicarán automáticamente en el contexto de derecha a izquierda. (I3aa21)
Row
yColumn
ahora son funciones intercaladas, lo que reduce de manera significativa la sobrecarga asociada a su uso. (I75c10)
Correcciones de errores
- 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 agregó MonotonicFrameAnimationClock, que permite usar un objeto MonotonicFrameClock como AnimationClockObservable para cerrar la brecha entre los nuevos relojes basados en corrutinas y las APIs que aún usan los relojes antiguos basados en la devolución de llamada.
El MonotonicFrameClock equivalente de ManualAnimationClock ahora es ManualFrameClock. (I111c7, b/161247083)
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)
Modifier.plus dejó de estar disponible; en su lugar, usa Modifier.then. "Then" tiene un indicador de orden más fuerte y prohíbe la escritura de
Modifier.padding().background() + anotherModifier
, lo que interrumpe la cadena y se vuelve más difícil de leer (Iedd58, b/161529964).Se agregaron los SemanticsMatcher
isFocused()
yisNotFocused()
. (I0b760)Se agregó RemeasurementModifier. Permite a los usuarios volver a medir el diseño de forma sincrónica. En general, no lo necesitas, ya que la nueva medición o el rediseño se realizan automáticamente, pero lo usamos dentro de LazyColumnItems durante el desplazamiento. (I5f331, b/160791058)
isSystemInDarkTheme ahora tiene siempre la configuración del tema oscuro en todo el sistema e ignora el estado de ahorro de energía antes de Q, en virtud de las indicaciones más recientes. (I0c10c)
OnChildPositioned dejó de estar disponible. En su lugar, usa OnPositioned en el elemento secundario. (I87f95, b/162109766)
Se cambió el nombre de AndroidComposeTestRule a createAndroidComposeRule. (I70aaf)
Se agregó una acción de accesibilidad para obtener TextLayoutResult. (I9d6e6)
Versión 0.1.0-dev15
22 de julio de 2020
Lanzamiento de androidx.compose.foundation:foundation:0.1.0-dev15
, androidx.compose.foundation:foundation-layout:0.1.0-dev15
y androidx.compose.foundation:foundation-text:0.1.0-dev15
. La versión 0.1.0-dev15 contiene estas confirmaciones.
Para usar la versión 0.1.0-dev15
de Compose, deberás hacer lo siguiente:
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
- De manera similar al nuevo parámetro en ScrollableColumn/ScrollableRow, LazyColumnItems/LazyRowItems ahora tienen el parámetro contentPadding, que permite agregar padding al contenido recortado, lo cual no es posible mediante un parámetro de modificación. También permite agregar espaciado antes del primer elemento o después del último solamente. (Ibc24e)
- Se cambió el nombre de la devolución de llamada onFocusChange en los campos de texto a onFocusChanged. (Ida4a1)
- 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)
- 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) - Los tamaños de esquina que usan RoundedCornerShape y CutCornerShape ahora pueden superar el 50%. (Id2340, b/160400213)
- Se cambió de Inside a Fit la configuración predeterminada del parámetro ContentScale del elemento Image que admite composición. Esto se hizo a fin de que el comportamiento escale verticalmente el elemento Painter subyacente si el tamaño del diseño es más grande que el tamaño intrínseco de ese elemento sin afectar la relación de aspecto. Este comportamiento se ajusta mejor a las expectativas a fin de brindar tamaños fijos para el elemento Image sin afectar el comportamiento predeterminado cuando solo se use el tamaño intrínseco para procesar el tamaño de la composición. (I40ae3, b/159838006)
- Se usa el objeto AnimationSpec en lugar del elemento AnimationBuilder en las APIs de nivel superior para aclarar el concepto de especificación de animación estática. Mejora el DSL de transición al quitar el 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)
- Se quitó el objeto Clickable. Usa el objeto Modifier.clickable. (I84bdf)
- Se agregó LazyRowItems: desplazamiento horizontal similar a LazyColumnItems. (Ibbcf7)
- Se introdujeron las API de animación sin estado de bajo nivel. Estas API (I63bf7)
- Dejaron de estar disponibles androidx.ui.foundation.TextFieldValue y androidx.ui.input.EditorValue. 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)
- Se reemplazó el uso del elemento IntPx con Int. Se reemplazó el objeto IntPxPosition con IntOffset. Se reemplazó el elemento IntPxSize con IntSize. (Ib7b44)
- Se quitó androidx.ui.foundation.shape.RectangleShape. Usa androidx.ui.graphics.RectangleShape. (I94939, b/154507984)
- 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)
- 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 agregó Modifier.zoomable para la funcionalidad de pellizcar para hacer zoom. (Id5d63)
- El componente Toggleable dejó de estar disponible. En su lugar, usa Modifier.toggleable. (I35220, b/157642842)
- 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)
- Se agregó el parámetro fontWeight a Text, que no se agregó anteriormente por accidente. (I56937)
- 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)
- 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)
- VerticalScroller y HorizontalScroller ahora admiten el desplazamiento invertido cuando se configura isReversed en ScrollerPosition. (I953bd)
- Se agregó compatibilidad con elementos que se pueden compilar en el diseño de texto. (I1373c)
- 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 para 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).
- Se quitó la API obsoleta de DrawBackground y se reemplazó por las API de la extensión drawBackground en Modifier. Implementaciones refactorizadas de color, pincel y pintura del objeto drawBackground para reducir las rutas de código y quitar el requisito de crear Modifier como parte de la composición. (I0343a)
- 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)
- HorizontalScroller y VerticalScroller ahora restablecen su posición de desplazamiento usando el estado de instancia guardado. (Ia0fae, b/155075048)
- Se quitó el objeto FocusManagerAmbient. Usa el elemento FocusModifier.requestFocus para obtener enfoque. (Ic4826)
- Se quitó temporalmente el diseño de la tabla hasta que vuelva a estar disponible con una API actualizada. (Id88a7)
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 quitó ColoredRect. En su lugar, usa Box con el modificador drawBackground, (I983c7, b/152753731)
Se agregó personalización del color del cursor a TextField. (I6e33f)
Ahora es posible ocultar o mostrar el teclado en pantalla usando SoftwareKeyboardController, que se entrega mediante la devolución de llamada onTextInputStarted. (I8dc44, b/151860051)
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 agregaron los parámetros que se usan con frecuencia a Text(). Si estás creando un estilo de texto local para pasar una pequeña cantidad de estos parámetros, como
Text(style = TextStyle(textAlign = TextAlign.Center))
, ahora puedes proporcionar directamente los parámetros:Text(textAlign = TextAlign.Center)
. (I82768)Se reemplazó el parámetro CoreTextField/TextField focusIdentifier con el objeto FocusNode a fin de integrarlo con el subsistema de enfoque. (I7ea48)
Actualización de TextField: en dimensión horizontal, ocupará todo el espacio disponible. (IB08df, b/154638552)
Se agregaron InteractionState y Interaction, lo que facilita la compilación de componentes que reaccionan a los cambios de estado de la IU, como presionar y arrastrar. (Icfe25, b/152525426)
Se trasladó el objeto RectangleShape de androidx.ui.foundación.shape.* al elemento androidx.ui.graphics.* (Ia74d5, b/154507984)
Se reemplazaron todos los usos anulables de Color en la API con valores no anulables y se usa Color.Unset en lugar de un valor nulo. (Iabaa7)
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 cambió el nombre de ScaleFit a ContentScale. Se trasladó el valor ContentScale del módulo ui-graphics al módulo ui-core para que quede en el mismo módulo que la API de alineación. Se cambió el nombre de FillMaxDimension a Crop, el de FillMinDimension a Fit y el de Fit a Inside para que coincida mejor con los equivalentes de ImageView.ScaleType. Se agregó documentación donde se indica que con la combinación de Crop y Alignment.Center se obtiene el mismo resultado que con ImageView.ScaleType.CENTER_CROP, que con Fit y Alignment.Center se obtiene el mismo resultado que con ImageView.ScaleType.FIT_CENTER, y que con Inside y Alignment.Center se obtiene el mismo resultado que con ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521).
Se quitó ProvideContentColor; en su lugar, usa directamente ContentColorAmbient con
Providers
. (Iee942)Se agregó un parámetro de color al texto, lo que permite anular el color del estilo del texto sin necesidad de combinarlo manualmente con el estilo proporcionado en un tema. (I41a66)
Se mejoró 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)
ColoredRect quedó obsoleto. Usa
Box(Modifier.preferredSize(width, height).drawBackground(color))
en su lugar. (I499fa, b/152753731)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 reemplazaron el modificador y el operador por funciones de extensión (I225e4).
Se movió el elemento arrastrable al modificador. (Id9b16, b/151959544)
Se trasladó el objeto
Text
de androidx.ui.core al paquete androidx.ui.foundation. (I87ce5)Se agregó el parámetro
enabled
a Checkbox, Switch y Toggleable. (I41c16)Ripple ahora es un modificador. Mientras que Clickable aún no se convirtió al uso recomendado, que es
Clickable(onClick = { ... }, modifier = ripple())
. (Ie5200, b/151331852, b/150060763)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)
aPaintBox(Painter)
. Se creó el elemento Vector que admite composición y que se comporta como el elemento Image, pero con un VectorAsset en lugar de un ImageAsset. (I9af9a , b/149030271)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)
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 Image que admite composición, que se utiliza para participar en el diseño y dibujar contenido.
Se creó un método de extensión en android.graphics.Bitmap,
Bitmap.asImageAsset()
, a fin de crear una instancia útil de ImageAsset para combinar el desarrollo tradicional de aplicaciones para Android con el marco de trabajo de Compose. (Id5bbd)Se quitó el elemento DrawImage que admite composición. Usa ImagePainter para dibujar una imagen en un diseño existente o SimpleImage para introducir un elemento Image que ocupe espacio. (I595e1, b/149827027)
El componente de pila admite la dirección de derecha a izquierda. (Ic9e00)
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 quitó el elemento DrawShape que admite composición. En su lugar, usa el modificador DrawBackground. (I7ceb2)
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 agregó el componente Scrollable, que permite crear desplazadores y listas de forma personalizada. (I5fd37)
Se cambió el nombre de background a DrawBackground y se lo estableció para memorizar de forma predeterminada. (Ia0bd3)
Agrega los parámetros paddings, border, shape y background al objeto Box. (I05027, b/148147281)
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 cambió el nombre del modificador
Border
porDrawBorder
. (I8ffcc)Se agregó el componente Box para combinar la función común de dibujo y diseño. (I6e2a7)
Los desplazadores ahora muestran el comportamiento nativo de Android. (I922af, b/147493715)
Se reemplazó DrawBorder con el modificador Border. (Id335a)
Se cambió el nombre del objeto Modifier.tag a Modifier.layoutId para evitar confusiones con el elemento Modifier.testTag. (I995f0)
Se cambió el nombre del parámetro de porcentaje a fracción al crear los lineamientos de ConstraintLayout. (Ida2db)
Se agregó compatibilidad con los márgenes de las barreras de ConstraintLayout. (I47ffe)
Se corrigió la compatibilidad con lectura de derecha a izquierda en ConstraintLayout. Se agregaron unas API que no admiten lectura de derecha a izquierda. (I3b1c7)
Se agregó un nuevo DSL de ConstraintLayout. Consulta las muestras para obtener más detalles. (Icaa9a)
Se agregó la anotación @ExperimentalLayout. ConstraintLayout, FlowRow y FlowColumn ahora contienen esa etiqueta para indicar que sus API cambiarán. (I412a8)
Se agregó
Modifier.padding(InnerPadding)
. (I94985, b/157133803)Se quitaron los objetos obsoletos RowAlign y ColumnAlign de Row y Column. (If60d4, b/155858731)
Se quitó el elemento LayoutTag() obsoleto; en su lugar, usa Modifier.tag(). Se quitó el elemento Modifier.matchParent() obsoleto; en su lugar, usa Modifier.matchParentSize(). (If8044)
Se agregó el modificador de diseño offsetPx, que se puede usar para definir desplazamientos (dinámicos) en px. (I5af57)
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 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 la máxima). (I311ea, b/150460257)
Se quitó el elemento Container. En su lugar, usa Box. (Ibbc2b, b/151407926)
Se quitaron los modificadores obsoletos LayoutWidth, Height y Size. (Ib0bc1)
Se agregaron valores de parámetros predeterminados al modificador de desplazamiento. (I37f06)
Se agregó un modificador de padding simétrico. (I39840)
Se quitó el modificador obsoleto LayoutAspectRatio. (I65a74)
Se quitaron los modificadores obsoletos LayoutAlign. (I10877)
Se corrigió un error en los modificadores de ancho y altura que hacía que se midiera el diseño unido sin restricciones de eje opuesto. (I210b8, b/154797971)
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 permitió la creación de instancias de alineación con valores arbitrarios. Se agregaron alineaciones 1D. (Ia0c05)
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 objeto alignToSiblings ahora acepta un elemento Measured en lugar del parámetro Placeable. (I5788d)
Se agregaron modificadores para la definición de tamaño en mediciones intrínsecas y dejaron de estar disponibles los componentes que cumplían esta función. (I8295d)
Se agregó compatibilidad con dimensiones personalizadas de elementos secundarios de ConstraintLayout. (Idb1a5)
Se quitaron los elementos obsoletos Wrap y Center que admiten composición. (I29e23)
Se agregó LayoutModifier2, una nueva API para definir modificadores de diseño; LayoutModifier dejó de estar disponible (If32ac).
Ahora se puede acceder a los miembros RowScope y ColumnScope desde afuera de la fila y la columna. (I3a641)
Dejó de estar disponible el elemento Container. En su lugar, usa Box. (I675ce, b/151407926)
Se agregó el modificador LayoutOffset para compensar la posición del diseño. (I0b8a3)
Asistencia inicial para lectura de derecha a izquierda en el diseño de Compose. (Ia5519)
Se actualizó LayoutAlign para que ya no ocupe todo el espacio disponible. (I2b14f)
Se quitó el elemento AspectRatio que admite composición y se reemplazó por el modificador. Se borraron el elemento FlexColumn obsoleto, los elementos que admiten composición de FlexRow y el modificador de Spacing. (Iec8a7)
Se quitó el modificador LayoutInflexible para la fila y columna. (I0d820)
Se implementaron controladores de selección de arrastre para cambiar la selección del elemento TextField. (I27032)
Se implementó el objeto LongPressAndDrag para la selección del elemento TextField. (I17919)
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)
- Se cambió el nombre de
runOnIdleCompose
porrunOnIdle
. (I83607) - 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 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 quitaron las API de prueba de tamaño obsoletas. (Iba0a0)
- Se creó la API experimental LayoutNode. (I4f2e9)
- Se implementó en Compose la versión 1 del bloqueo de orientación de desplazamiento. (I1ce7a, b/150289741)
- Los objetos Popups, Dialogs y Menus ahora heredan el elemento MaterialTheme contextual. (Ia3665, b/156527485)
- 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)
- Se agregó AbsoluteArrangement, que permite la organización de los elementos secundarios dentro de la fila sin duplicación automática de derecha a izquierda. (I3a1df)
- La anotación @Untracked dejó de estar disponible. Reemplázala con @ComposableContract(tracked=false). (Id211e)
- Antes del cambio, el complemento del compilador de Compose interceptaría llamadas no triviales a los constructores dentro de una función @Composable si hubiese una. (I5205a, b/158123804)
- Se agregó el objeto
viewModel()
que admite composición y permite crear u obtener un elemento ViewModel ya creado de manera similar a como funciona en las clases Activity o Fragment. (I5fdd1) 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 separados para el radio en los ejes x e y (I46d1b).
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)
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)
El cursor de TextField tiene una animación intermitente. (Id10a7)
Los gestos parciales ya no requieren pasar un objeto GestureToken. (Id7ae5)
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. (I57bff)
Modifier.semantics volvió a estar disponible a fin de permitir el uso de componentes de alto nivel. (I4cfdc)
Se cambió el nombre del objeto AnnotatedString.Builder.addAnnotationString a addStringAnnotation. (I5059e)
Se actualizó la API de Alignment y se agregó compatibilidad con la alineación absoluta (que no se duplica automáticamente en contexto de derecha a izquierda). (I38cd3)
Se pueden medir los elementos secundarios Layout y LayoutModifier con una dirección de diseño diferente. (Ibd731)
Se ingresaron parámetros rect opcionales adicionales en ImagePainter para admitir el dibujo de una subsección de ImageAsset subyacente. (I0ea9e)
Se corrigió una falla en AdapterList que se producía cuando se quitaban elementos. (Ic64b0, b/153195921)
Cambiamos la forma en que medimos el primer diseño que colocas dentro del bloque activity.setContent { }. Antes, llenaba toda la pantalla de la actividad, mientras que ahora se comporta como si colocaras el diseño dentro de una pila: puede ser más pequeño que una pantalla y se ubica en la pantalla superior izquierda. Si deseas usar el comportamiento anterior, puedes aplicar Modifier.fillMaxSize() para tu diseño. (Ie88a7, b/153453714)
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)
Los objetos
runOnIdleCompose
yrunOnUiThread
ahora son funciones globales en lugar de 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)Ahora, los objetos DrawLayerModifier y drawLayer() establecen de forma predeterminada los elementos clipToBounds y clipToOutline como falso. (I0eb8b, b/152810850)
Se cambió el nombre del objeto LayoutResult a MeasureResult. (Id8c68)
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 cambió el nombre de LayoutFlexible a LayoutWeight. Se cambió el nombre del parámetro estricto para rellenar. (If4738)
Se cambió el comportamiento de DrawVector, que dejó de ser una función que admite composición normal para mostrar un modificador drawVector() que dibujará el vector como fondo de un diseño. (I7b8e0)
Se reemplazó la función de componibilidad Clip con el modificador drawClip(). 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 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)La función Wrap que admite composición dejó de estar disponible. Se puede reemplazar con el modificador LayoutAlign o con la función Stack que admite composición. (IB237F)
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)
Se cambió el nombre de Painter.toModifier a Painter.asModifier debido a que el modificador recientemente creado tiene una referencia al Painter original que se puede compartir en varias instancias del modificador. (I7195b)
- .
Compatibilidad con lectura de derecha a izquierda en el modificador LayoutPadding. (I9e8da)
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 quitó la clase ValueHolder. Se reestructuraron las clases AnimatedValue y AnimatedFloat para que el campo de valor de animación sea abstracto a fin de que las subclases puedan ver la actualización del valor.
- Se agregaron clases de modelos para AnimatedValue, AnimatedFloat, etc.
- Se agregó un nuevo conjunto de API liviana de @Composable para realizar animaciones entre valores.
- (I79530)
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).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 corrigió un error de ConstraintLayout que causaba una falla en las recomposiciones. (Ibee5a, b/158164341)
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 cambió el nombre del objeto LayoutModifier2 a LayoutModifier. (Id29f3)
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)
Dejó de estar disponible LayoutDirectionAmbient. Para leer la dirección del diseño definida por la configuración regional, usa localeLayoutDirection en ConfigurationAmbient. (I851b1)
Se agregaron los objetos positionInParent y boundsInParent para el elemento LayoutCoordinates. (Icacdd, b/152735784)
El elemento ParentData que admite composición 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)
Se agregaron OnPositionedModifier y OnChildPositionedModifier para reemplazar las funciones OnPositioned y OnChildPositioned que admiten composición. (I2ec8f)
Ya no se permite el padding negativo en LayoutPadding. En su lugar, se debería usar LayoutOffset para las compensaciones de posición negativa. (Ifb5b1)
WithConstraints tiene el parámetro LayoutDirection (I6d6f7).
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 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)
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 incluyeron mejoras en la superficie de la API de Constraints (I0fd15).
Se agregó el objeto TextDirection.Content. (I48f36)
Se ajustó el menú de la barra de herramientas para mostrar los botones Copiar, Cortar y Pegar de forma correcta. (Id3955)
Se agregó el objeto FloatingToolbar para la selección del elemento TextField. (Ie8b07)
Se cambió el nombre de TextDirectionAlgorithm a TextDirection. (I75ce8)
Se cambió el nombre de TextDirection a ResolvedTextDirection. (I3ff38)
Se agregó el objeto HapticFeedback para la selección del elemento TextField. (I58050)
Se agregaron los métodos Copiar, Cortar y Pegar para la selección del elemento TextField. (Idb70b)
Se borraron los objetos TestTag y Semantics. En su lugar, usa Modifier.testTag y Modifier.semantics. (I15ff0, b/158841414)
Se cambió el nombre del paquete de androidx.ui.text a androidx.ui.intl dentro de Locale y LocaleList. (I8132c)
Cambio en la API: se cambió el nombre de
AnnotatedString(builder: Builder)
aannotatedString(builder: Builder)
. (Ia6377)Cambio en la API: se cambió el nombre de
AnnotatedString.Item
aAnnotatedString.Range
. (I2d44d)Se agregó una barra de herramientas para operaciones relacionadas con texto. (I49d53)
El nuevo LifecycleOwnerAmbient ya está disponible. Ahora, una actividad que usas con la IU de Compose debería extender androidx.activity.ComponentActivity (o AppCompatActivity). setContent en android.app.Activity quedó obsoleto. (Idb25a, b/153141084)
Se reemplazó el nombre del paquete ui-android-text (androidx.text) por androidx.ui.text.platform a fin de cumplir con la política de androidx. (I42711)