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 |
---|---|---|---|---|
4 de septiembre de 2024 | 1.7.0 | - | - | 1.8.0-alpha01 |
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.7.0" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.7.0") } 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.8
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.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 Indication de mejor rendimiento en comparación con la API derememberUpdatedInstance
anterior (ahora obsoleta). 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 la Indication proporcionada es unIndicationNodeFactory
, la Indication se puede crear de forma diferida solo cuando sea necesario, lo que mejora el rendimiento. Si no elevas ni usasMutableInteractionSource
, se recomienda pasar un valor nulo en lugar de pasarremember { MutableInteractionSource() }
.Indication#rememberUpdatedInstance
quedó obsoleto. Genera una penalidad de rendimiento inevitable muy alta y evita otras optimizaciones. En su lugar, debes usar la nueva API deIndicationNodeFactory
.
- Se agregó una nueva API de Indication,
BasicTextField
conTextFieldState
ahora es estable, y recomendamos a todos los sitios de llamadas que comiencen la migración deBasicTextField(value, onValueChange)
aBasicTextField(TextFieldState)
.ClickableText
dejó de estar disponible. Para agregar vínculos en los que se puede hacer clic a tu texto, usaBasicText
con la nueva anotaciónLinkAnnotation
en tuAnnotatedString
.LinkAnnotation
permite un estilo personalizado según el estado del vínculo (p.ej., enfocado, que se coloca sobre el cursor).- Presentamos
ContextualFlowRow
yEnhanced FlowRow/Column
conMaxLines
yOverflow
. Nos complace anunciar mejoras en losFlowRow
yFlowColumn
experimentales, que ahora incluyenmaxLines
y compatibilidad con opciones adicionales, junto con el debut deContextualFlowRow
yContextualFlowColumn
. Esta actualización está diseñada para proporcionar componentes de rendimiento óptimo, en los queContextualFlow*
es perfecto para una gran cantidad de elementos que usan una configuración pequeña de maxLines y los botones dinámicos +N para ver más botones, yFlowRow
yFlowColumn
son perfectos para una cantidad pequeña de elementos, menos de 100. Importante: Para mantener el comportamiento existente enFlowRow
oFlowColumn
, donde se componen todos los elementos, independientemente de si se ajustan al máximo del eje cruzado, 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 apariencia y desaparición del elemento en
LazyColumn
yLazyRow
. Anteriormente, era posible agregar el modificadorModifier.animateItemPlacement()
para admitir animaciones de posición (reordenamiento). Dimos de baja este modificador y presentamos un nuevo modificador no experimental llamadoModifier.animateItem()
, que te permite admitir los tres tipos de animación: apariencia (fundido de entrada), desaparición (fundido de salida) y reordenamiento. (I2d7f7, b/150812265). - Se implementó la compatibilidad experimental para capturas de pantalla largas en contenedores de desplazamiento de Compose con la API oficial de Android (
ScrollCaptureCallback
). - Se reemplazarán los elementos Drag y Fling de
NestedScroll
porUserInput
ySideEffect
para adaptarse a la definición extendida de estas fuentes, que ahora incluyen animaciones (Efecto lateral), Rueda del mouse y Teclado (UserInput
). - Ahora, las solicitudes de carga previa de
LazyLayout
se pueden marcar como urgentes, lo que significa que esperamos que este elemento sea necesario en el siguiente fotograma y queremos ignorar el presupuesto de fotogramas para asegurarnos de realizar más trabajo con anticipación. (Id513f) - Compatible con la función de escritura a mano con pluma stylus en dispositivos con Android U. (I002e4).
- Se promovió la estabilidad de varias APIs.
- Localizadores, ajuste, inserciones de ventana
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 la falla cuando un elemento se enfocaba dentro de un elemento superior que se puede enfocar (o en el que se puede hacer clic) y está 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 llamen enTextFields
de solo lectura. (I4ae8f). - Se corrigió una falla visual en los hipervínculos. (I23311).
- Se corrigió el modificador
contentReceiver
que no funcionaba con algunos IME. - Generación de velocidad: Evita la propagación de valores NaN en la IU y la base de Compose.
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
- Evita fallas cuando se miden líneas de texto muy grandes (p. ej., 10,000 caracteres) (8157ab).
- Se corrigió la medición de texto muy grande, lo que provocaba una falla en el nuevo
BasicTextField
(6b7575). - 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 carga previa de
LazyGrids
similar a la API experimental existente paraLazyLists
. Esto incluye la compatibilidad con la carga previa de elementos enLazyGrids
anidados. De manera similar aLazyListPrefetchStrategy
, la configuración predeterminada de implementación es la carga previa de 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
aIsEditable
y se cambióSemanticsPropertyReceiver.editable
a un valorisEditable
. Ahora, la propiedad es booleana y siempre se especifica mediante campos de texto. (I8acd8). - Se movieron
basicMarquee
valores predeterminados al objetoMarqueeDefaults
. (I12ff6). - Se cambió el nombre del parámetro
basicMarquee
delayMillis
arepeatDelayMillis
. (I12ff6). - Se actualizó la API para definir el estilo de los vínculos: se movió
TextLinkStyles
aTextStyle
y se quitóTextDefaults
del 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 coordenadas basadas en esa marca. (I3a330). - Se quitó "Predeterminado" de las propiedades
MarqueeDefaults
. (I1d8a0). - Se quitó "Marquee" de
MarqueeDefaults
propiedades. (Iad4f4). - Se quitó
TextLinkStyles
de la claseTextStyle
. En su lugar,TextLinkStyles
forma parte del constructorLinkAnntation
y el métodoAnnotatedString.fromHtml
. (I90b2b) - Se corrigió un error por el que el Localizador se ajustaba cuando se lanzaba hacia un límite mientras ya estaba establecido en el límite. (I9f373, b/339171222).
- BTF2 ahora tiene los gestos de selección del mouse correctos. (Ibe8c6).
Contribución externa
- Vuelve a enviar el mensaje “Make compose/measure time care content-type basado en la carga previa para mejorar la precisión”. (Iea622).
- Se hizo la composición/medir el tipo de contenido de cálculo de tiempo basado en la carga previa para mejorar la precisión. (Ibccb1)
- Se hicieron disponibles los modificadores
WindowInsetsPadding
del 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 obsoleta oculta para compatibilidad con objetos binarios. (I15cfe). Modifier.anchoredDraggable
ahora revierte los deltas de arrastre de forma predeterminada para los componentes con orientación horizontal cuando se usa en un diseño de derecha a izquierda. (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 temáticos. En su lugar, se agregó una claseTextLinkStyles
que permite diseñar los vínculos como un parámetro en el elemento Text componible. (I31b93). - Se reemplazaron
onDragStarted
yonDragStopped
por devoluciones de llamada de no suspensión. (I59de8).
Correcciones de errores
- Se corrigió un error por el que Pager fallaba cuando
contentPadding
era más grande que las restricciones entrantes. El localizador ahora fuerza los valores negativos que se muestran dePageSize
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 de clic con el botón derecho a
BasicTextField
ySelectionContainer
con elementos para las acciones de cortar, copiar, pegar y seleccionar todo. (If8c93, Ia2b49, I6f268).
Cambios en la API
- Ahora, las solicitudes de carga previa de
LazyLayout
se pueden marcar como urgentes, lo que significa que esperamos que este elemento sea necesario en el siguiente fotograma y queremos ignorar el presupuesto de fotogramas para asegurarnos de realizar más trabajo con anticipación. (Id513f) - Se cambió el nombre de
isPositionedByParentWithDirectManipulation
aintroducesFrameOfReference
. Ten en cuenta que ahora tiene el efecto inverso, lo que significa que, de forma predeterminada, la mayoría de losLayoutCoordinates
introduce un marco de referencia y, solo cuando se coloca bajo manipulación directa, la propiedad será falsa. Para consultar la posición con solo aquellos que ingresan un marco de referencia, usapositionInLocalFrameOfReference(...)
. O bienpositionInLocalLookaheadFrameOfReference
desde unLookaheadScope
. (Ifc5f7). - Se cambió el nombre de
onClicked
poronClick
dentro deLinkInteractionListener
(Iaa35c). - Se cambió la 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 la pluma stylus. (Ica45f, b/327271923).
- Se cambió el nombre de
TextInclusionStrategy.isInside
porisIncluded
. Hace que el tipo de datos que se muestra deParagraph/MultiParagraph#getRangeForRect()
no admita valores nulos. (I51f26).
Correcciones de errores
- Se agregó "Seleccionar todo" a todos los menús contextuales de texto en
SelectionContainer
. (Ib750e, b/240143283). - Se corrigió la captura de pantalla larga para desplazar contenedores con
reverseScrolling=true
. (I7c59c). - Se corrigió un problema por el que cambiaba
currentValue
deAnchoredDraggableState
cuando se acercaba a los límites del estado. (Iea30b, b/333846848).
Contribución externa
- Se cambió el nombre de
PrefetchExecutor
->PrefetchScheduler
para reflejar mejor sus responsabilidades. (Ib9154). - Se agregó compatibilidad para la carga previa de elementos en
LazyLists
anidados (p.ej., unLazyColumn
que renderizaLazyRows
anidados). Se espera que este cambio reduzca las caídas de fotogramas durante el desplazamiento para estosLazyLists
El valor predeterminado de implementación es la carga previa de los primeros 2 elementos anidados; sin embargo, 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 la cadena etiquetada con HTML que aplicaMaterialTheme
a los vínculos. (I98532, b/139312671). - Se agregó compatibilidad con la animación de apariencia y desaparición del elemento en
LazyVerticalGrid
yLazyHorizontalGrid
. Anteriormente, era posible agregar el modificadorModifier.animateItemPlacement()
para admitir animaciones de posición (reordenamiento). Dimos de baja este modificador y presentamos un nuevo modificador no experimental llamadoModifier.animateItem()
, que te permite admitir los tres tipos de animación: apariencia (fundido de entrada), desaparición (fundido de salida) y reordenamiento. (Ib7d12, b/330510929). - Se agregó compatibilidad con la animación de apariencia y desaparición del elemento en
LazyVerticalStaggeredGrid
yLazyHorizontalStaggeredGrid
. Anteriormente, era posible agregar el modificadorModifier.animateItemPlacement()
para admitir animaciones de posición (reordenamiento). Dimos de baja este modificador y presentamos un nuevo modificador no experimental llamadoModifier.animateItem()
, que te permite admitir los tres tipos de animación: apariencia (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 la composición local. (Ifa154). - Se aplicó la opción de estilo de estado presionado a los vínculos de texto, además del estilo normal, se colocaron sobre el elemento y se enfocaron. (I5f864, b/139312671).
- Se introdujo
ViewConfiguration.HandwritingGestureLineMargin
para los gestos de escritura a mano. Admite 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 plataforma de la API relacionada. Esta función se volverá a introducir en la versión 1.8. (I6cf61, b/333421581, b/332900232) - Cuando consultes coordenadas de diseño, ahora puedes usar el argumento
excludeDirectManipulationOffset
para excluir el desplazamiento configurado por los diseños superiores que colocaron a 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 ubicarlos conwithDirectManipulationPlacement
(como el desplazamiento, implementado de forma predeterminada). Esto ayuda a que las animaciones basadas enapproachLayout
sean más intuitivas, ya que ahora tiene la oportunidad de diferenciar qué desplazamiento se animará y qué aplicar directamente cuando se decida animar su enfoque. (I60ec7). - Incorpora
requestScrollToItem
paraLazyStaggeredGrid
. Para cada pase de medición, el cliente ahora puede inhabilitar el mantenimiento del índice basado en la clave llamando arequestScrollToItem
. Esto no cambia el comportamiento existente de ninguna manera, a menos que se llame arequestScrollToItem
. (I63983). - Presenta
requestScrollToPage
en Pager. Para cada pase de medición, el cliente ahora puede inhabilitar el mantenimiento del índice basado en la clave llamando arequestScrollToPage
. Esto no cambia el comportamiento existente de ninguna manera, a menos que se llame arequestScrollToPage
. (Ic4213). - Se agregó
requestScrollToItem
paraLazyGrids
. Para cada pase de medición, el cliente ahora puede inhabilitar el mantenimiento del índice basado en 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 elemento componibleText
(I34d4b, b/323346994).UrlAnnotation
dejó de estar disponible; en su lugar, usaLinkAnnotation.Url
. Si usas temas de Material, usa el objetoTextDefaults
para crear la anotación con los temas de Material aplicados (I8d180, b/323346545).- Se cambió el nombre de
String.parseAsHtml
porAnnotatedString.Companion.fromHtml
. (I43dcd) - Se agregaron argumentos de estilo (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) y un objeto de escucha de interacción de vínculos al métodoparseAsHtml
. Cuando analices la cadena etiquetada con HTML con etiquetas<a>
, el método construirá unaLinkAnnotation.Url
para cada etiqueta y pasará los objetos de estilo 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 enfoquen o se coloquen el cursor 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 las 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 usar al ofuscar el contenido (I0588b). - Se reemplazarán los elementos Drag y Fling de
NestedScroll
porUserInput
ySideEffect
para adaptarse a la definición extendida de estas fuentes, que ahora incluyen animaciones (Efecto lateral), Rueda del mouse y Teclado (UserInput
). (I40579). - Se introdujo
LocalBringIntoViewSpec
, un comportamiento de desplazamiento de enfoque que depende de la plataforma y que se aplica en la capa modificadora de desplazamiento. (I27aa5, b/317453911). - Se quitó
TextFieldCharSequence
.TextFieldBuffer.originalValues
se reemplaza porTextFieldBuffer.originalText
yTextFieldBuffer.originalSelection
. (I2c7d6). ImeOptions.hintLocales
ya no es anulable. 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
InputTransformations
se une connext
, susKeyboardOptions
ahora se combinan correctamente por opciones individuales con el nuevo métodoKeyboardOptions.merge
. (Ie5304, b/295951492). - El elemento
targetValue
deAnchoredDraggableState
ahora ya no tiene en cuenta los umbrales posicionales. Ahora tiene un umbral implícito del 50%, lo que significa quetargetValue
cambia en el punto medio entre dos anclas. (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 apariencia y desaparición del elemento en
LazyColumn
yLazyRow
. Anteriormente, era posible agregar el modificadorModifier.animateItemPlacement()
para admitir animaciones de posición (reordenamiento). Dimos de baja este modificador y presentamos un nuevo modificador no experimental llamadoModifier.animateItem()
, que te permite admitir los tres tipos de animación: apariencia (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
sin 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 todas las etiquetas son compatibles; por ejemplo, todavía no podrás mostrar listas con viñetas. (I84d3d). - Se implementó la compatibilidad experimental para 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 actualmente no maneje correctamente todos los casos. Por esa razón, está inhabilitado de forma predeterminada. Para habilitarlo, establece la marcaComposeFeatureFlag_LongScreenshotsEnabled
como verdadera. Este parámetro se quitará antes de la versión 1.7 beta. (I2b055, b/329296471). - Se introdujo una nueva API de
GraphicsLayer
para brindar más flexibilidad en la posición y renderización de instancias deGraphicsLayer
, y admitir funciones de renderización intrínseca sin necesidad de coordinar con implementaciones de componibilidad para especificar instancias del modificadorGraphicsLayer
.
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 anulable, donde nulo indica que no se especificó ningún valor. (Ia8ba0, b/295951492). - Se cambió el nombre de
outOfBoundsPageCount
abeyondViewportPageCount
. (I129c6). fun ClipEntry.getMetadata()
se cambió aval ClipEntry.clipMetadata
. (I50155).- Se quitó
TextFieldState.valueAsFlow()
. PrefieresnapshotFlow { state.text }
osnapshotFlow { TextFieldCharSequence(state.text, state.selection) }
. (I7d629) - Se reorganizaron los parámetros
InputTransformation.transformInput
. Se quitóoriginalValue: TextFieldCharSequence
. En cambio,TextFieldBuffer
ahora lleva 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). - La variante
BasicTextField(state)
yBasicSecureTextField
ahora usanKeyboardActionHandler
en lugar deKeyboardActions
para procesar las acciones realizadas por 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 “falso” campos de entrada de texto. (I9c09c, b/327271923).
- Se cambió el nombre de
KeyboardOptions.shouldShowKeyboardOnFocus
ashowKeyboardOnFocus
. (Ib4b7a, b/295951492). - Se quitó el parámetro
hintMediaTypes
deModifier.contentReceiver
. Ya se alentó a los desarrolladores a verificar el tipo de medio deTransferableContent
recibido, ya que podría no ser compatible con elhintMediaTypes
configurado. (I82f99). - Se reordenaron los parámetros de
BasicSecureTextField
. Se quitaron los parámetroskeyboardType
yimeAction
para favorecer la claseKeyboardOptions
completa y mantener los mismos valores predeterminados adecuados paraBasicSecureTextField
. También se quitó el parámetroscrollState
. (Ibbfa9). - El tipo de
TextFieldState.text
se 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 del clip actual. Además, revisa el resultado deClipboardManager.getClip
, si es nulo o no, para 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 funciones. Además, se quita la sobrecarga deModifier.receiveContent
que toma una lambda, ya que ahoraReceiveContentListener
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
se cambió a 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 inactivos en ciertas situaciones con la reutilización deModifier.Node
. (I05bb1). - Se revirtió un cambio de contrato reciente en el que se ajustaban las llamadas de
AnchoredDraggableState#anchoredDrag
al final de una operaciónanchoredDrag
. (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ó la composición experimental de
LocalTextLinkStyle
local para aplicar diseño a los hipervínculos. (Iebfa7). - Se quitó la anulación experimental de
BasicText
con el argumentoonLinkClicked
. En el futuro, tendremos una API de reemplazo para admitir hipervínculos. (I107d5). - Se quitaron los métodos y las propiedades relacionadas 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 composición. (Ief7ce). - El elemento
currentValue
deAnchoredDraggable
ahora se actualizará cuando se pase por un punto de anclaje UsasettledValue
para recibir la semántica anterior decurrentValue
y solo se actualiza cuando se establece en un ancla. El progreso ahora se expone como una función (que requiere un punto de partida y de destino) en lugar de una propiedad. (Ibe6e8, b/318707189, b/298271489, b/294991954). - Se cambiaron a la versión estable
BasicTextField(state)
,TextFieldState
,InputTransformation
,OutputTransformation
,TextFieldLineLimits
yTextFieldDecorator
. (I9582b). - Se agregó
InterceptPlatformTextInput
para ayudar a escribir pruebas relacionadas con el IME de bajo nivel y otros casos de uso de IME de bajo nivel. El elementoPlatformTextInputTestOverride
dejó de estar disponible. (I862ed, b/322680547). - Se dividió
restrictedConstraints()
en dos métodos:fitPrioritizingWidth()
yfitPrioritizingHeight()
(I6d7fd).
Contribución externa
- Se agregaron 2 API
isLastScrollForward
/isLastScrollBackward
nuevas para verificar la dirección de desplazamiento de la acción de desplazamiento más reciente. Se muestra un valor 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
- Compatible con la función de escritura a mano con pluma stylus en dispositivos con Android U. (I002e4).
- Se agregó
hintLocales
aKeyboardOptions
para queTextFields
pueda sugerir a los IME con configuraciones regionales específicas que preestablezcan un idioma preferido. (Id18c2). - Se quitaron las sobrecargas experimentales
BasicTextField2
yBasicSecureTextField
que tomaban los parámetrosvalue: String
yonValueChange: () -> String
. (I568b4). - Agrega una función
applySemantics
opcional aInputTransformation
para influir en la semántica de laBasicTextField2
a la que se aplica. (I74a2f, b/170648072). - En este CL, agregamos la acción semántica
GetScrollViewportLength
para canalizar información sobre los componentes que se desplazan en Compose al sistema a11y. Esta CL también aplica el uso de dicha propiedad en las listas desplazables básicas. (Ic5fa2). - El nombre de
BasicTextField2
cambió porBasicTextField
. (Ie5713). FocusRequester.createRefs
ahora es estable. (I4d92c, b/261436820)- Se agregó
DelegatableNode.scrollIntoView()
para permitir que los nodos modificadores realicen solicitudesscrollIntoView
directamente. (I2b3b7, b/299939840). - Se agregó
DelegatableNode.requireView()
para permitir que los nodos modificadores obtengan elView
de Android actual sin leer un elemento local de composición. (I40768). - Presentamos la información de diseño contextual en el alcance de filas del flujo contextual y el alcance de la columna del flujo contextual, con el índice de línea, la posición y restricciones en el ancho y la altura máximos para permanecer en la posición especificada. Es posible que los elementos que superen el ancho o la altura máximos pasen a la siguiente línea o se omitan 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
causaba 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 deModifier.Node
sin necesidad de anularonPlaced
y almacenar las coordenadas en una propiedad. (Ia8657). - Se introdujo
DelegatableNode.currentLayoutCoordinates
como una forma de obtener elLayoutCoordinates
actual deModifier.Node
sin necesidad de anularonPlaced
y almacenar las coordenadas en una propiedad. (Iaebaa). - Optimizaciones de rendimiento en
DraggableAnchors
utilizadas porAnchoredDraggable
. (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 losFlowRow
yFlowColumn
experimentales, que ahora incluyenmaxLines
y compatibilidad con opciones adicionales, junto con el debut deContextualFlowRow
yContextualFlowColumn
. Esta actualización está diseñada para proporcionar componentes de rendimiento óptimo, en los queContextualFlow*
es perfecto para una gran cantidad de elementos que usan una configuración pequeña demaxLines
y botones para ver más dinámicos +N, yFlowRow
yFlowColumn
son perfectos para una cantidad pequeña de elementos, menos de 100. Importante: Para mantener el comportamiento existente enFlowRow
oFlowColumn
, donde se componen todos los elementos, independientemente de si se ajustan al máximo del eje cruzado, 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).
KeyboardOptions
min los constructores de copias obsoletos 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 ascienden a estables. (I67660, b/316966909).- Se agregó la composición local de
LocalTextLinkStyle
que permite cambiar el estilo de los vínculos en Texto en toda la app. Si usas tu propio tema en la app, debes configurar esta composición a nivel local de acuerdo con tus temas. Cuando uses el tema de Material, el color del vínculo de forma predeterminada se establecerá en el color principal de Material. (I7eb10). - Se agregó el modificador
receiveContent
, que les 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 en pantalla o mediante la acción de pegar en el portapapeles. (I81b72).- Con este cambio, reemplazaremos
SnapFlingBehavior
porTargetedFlingBehavior
en el localizador para desbloquear otros casos de uso y brindar mayor flexibilidad. (I762ea). - Con este cambio, haremos que las APIs de Snapping sean estables. También estamos limpiando parte del código de prueba y agregando más muestras a Snapping. (Id8da9).
- Presenta
TargetedFlingBehavior
, un objetoFlingBehavior
que permite propagar información sobre el estado de la animación en curso y su desplazamiento de destino. (I6a207).
Correcciones de errores
BasicTextField2
ahora mantiene el cursor a la vista mientras escribes cuando el usuario se desplaza fuera de la vista o lo hace debido a la entrada (Ieb856, b/237190748).
Contribución externa
- Se agregó una API experimental para configurar el comportamiento de carga 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 obsoleta). 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 es necesario, lo que mejora el rendimiento. Si no elevas ni usasMutableInteractionSource
, se recomienda pasar un valor nulo.
Cambios en la API
- Introduce
DecayAnimation
enAnchoredDraggable
. Este cambio agrega un parámetrodecayAnimationSpec
aAnchoredDraggable
, lo que permite usar la animación de disminución cuando se establece en uno de los anclas. El cambio también incluye cambiar el nombre de laanimationSpec
existente asnapAnimationSpec
para ayudar a comprender el caso de uso de cada especificación. BasicTextField2
está disponible para uso experimental. Debería estar aproximadamente a la par de funciones conBasicTextField
, y el comportamiento debería estar listo para la producción. Sin embargo, por el momento, la API se mantiene en fase experimental. Antes de la estabilización, se cambiará el nombre aBasicTextField
y se moverá al mismo paquete.- Se agregó el primer borrador de la API de
OutputTransformation
paraBasicTextField2
. Esta API reemplaza la mayoría de los casos de uso deVisualTransformation
en laBasicTextField
anterior. Sin embargo, aún no está completo, y algunas cosas no funcionarán correctamente, pero nos gustaría recibir comentarios sobre la usabilidad de la API para tus casos de uso. (aosp/2708848). - Se introdujo
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 implementarán más cambios en la API. - Se agregó el modificador
receiveContent
, que les 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 en pantalla o mediante la acción de pegar desde el Portapapeles.KeyboardOptions.shouldShowKeyboardOnFocus
te permite inhabilitar el comportamiento predeterminado deBasicTextField
para solicitar un teclado en pantalla en foco.TextInputService
yLocalTextInputService
dejaron de estar disponibles. En su lugar, usaPlatformTextInputModifierNode
para realizar la integración directamente con las APIs de IME de la plataforma. (aosp/2862698).Indication#rememberUpdatedInstance
quedó obsoleto. Genera una penalidad de rendimiento inevitable muy alta y evita otras optimizaciones. En su lugar, debes usar la nueva API deIndicationNodeFactory
.
Correcciones de errores
BasicTextField
ahora validará previamente una pequeña selección de asignaciones de desplazamiento cuando se paseVisualTransformation
. Esto ayuda a detectar errores de codificación comunes que conducen a excepciones irrecuperables en mediciones o pases posteriores. Si muestras estos errores durante la composición, es más probable que los desarrolladores vean estos errores durante el desarrollo, lo que ayuda a evitar fallas de producción. (I0fd42).- No se arrojará
VisualTransformation
si muestras un índice no válido para uno 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 determinadas condiciones, activar o desactivar los atributos
enabled
oreadOnly
deTextField
causaba 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 una fila/columna: (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
- El gesto de selección mantener presionado y, luego, arrastrar, que se sale de los límites de diseño del texto en el primer fotograma del arrastre, ya no falla. (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 error por el que no se restablecía
AnimateContentSize
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 cuadrícula escalonada cuando el usuario se desplaza por encima del límite. (bffc39).
- Agrega la opción de comprobar el diseño con dimensiones grandes. (e74af5).
- Se corrigió la posición de los elementos de tamaño 0 al comienzo 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 conjuntos predefinidos de anclas Este modificador está diseñado para reemplazarModifier.swipeable
. Aprende a usarlo y a 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 que sea más fácil agregar componentes basados en la plataforma en Compose. - Se implementaron varios cambios y mejoras en la API en
Pager
ysnapFlingBehaviour
. - Varias APIs de inserciones, texto y enfoque se convirtieron en 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).
- Ahora,
PlatformImeOptions
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ó la actualización de
canScroll
después del desplazamiento solo para cambiar el diseño. (I60a86). - Se corrigió para
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 manera explícita y tiene una lambda para habilitar una sesión de arrastrar y soltar. Ahora hay dos funciones de fábrica para un objetoDragAndDropModifierNode
. Uno para recibir transferencias y otro para transferir datos (I69481). - Se actualizó
maximumFlingVelocity
para que se represente como número de punto flotante. Se actualizó la documentación para ser más claro sobre la unidadmaximumFlingVelocity
. (I8adc7). onDragAndDropStart
enDragAndDropModifierNode
se cambió el nombre de fábrica aacceptDragAndDropTransfer
.Se agregó
acceptsDragAndDropTransfer
adragAndDropTarget
Modifier
para aceptar desde una sesión de arrastrar y soltar. Esta lambda devuelve unDragAndDropTarget
si te 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 datos de sesiones de arrastrar y soltar. (Iebf3a)Exponer
startDragImmediately
enAnchoredDraggable
brinda control para detectar gestos de arrastre cuando se usa. Resulta útil establecerlo cuando el widget se está animando a un anclaje objetivo. Consulta Muestra. (Ie6d13, b/285139987).Las APIs de información básica ahora son
@ExperimentalFoundationApi
. (I30b0b)Se quitó
DragAndDropInfo
como tipoDragAndDropModifierNode.drag
ahora toma parámetros para la lambdatransferData
, tamaño de la decoración y arrastre de la decoraciónDrawScope
.DragAndDropTarget
tiene métodos para eventos específicos 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 deDragAndDropModifierNode
poronDragAndDropStart
para comunicar mejor que elDragAndDropTarget
proporcionado solo es válido para una sesión determinada de arrastrar y soltar.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 retienen para volver a usarse en el futuro se consideran desactivados. Se introdujo la 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 vuelve anulable y conserva el mismo comportamiento predeterminado. (I6aa66).Las APIs de
SwipeToReveal
de Material (para tarjetas 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 la muestra de código 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 hacía que el diseño de
BasicText
no se redujera cuandominWidth
cambiaba yminWidth
menos que las restricciones de medición inicialmaxWidth
(Idb19c). - Se agregó compatibilidad con el procesador 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 principal de Material para el chip o botón de Material 3, ya que las microcomparativas 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 Ejemplo (Id95f5, b/214412658).
Cambios en la API
- A
Modifier.dragAndDrawSource
se le cambió el nombre de la lambdaonDrawDragShadow
pordrawDragDecoration
y se cambió el nombre del parámetro de tamaño adragDecorationSize
aDragAndDropInfo
. (Id0e30, b/303904810). - Se cambió el nombre del parámetro
decorationBox
deBasicTextField2
adecorator
. Su tipo también se cambia a una interfaz divertida 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 agregó
PlatformTextInputMethodTestOverride
, que permite 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 las pruebas si necesitas tiempo para realizar una limpieza. Esta marca se quitará en Compose 1.6.0-beta01. (Ic9486). - Se agregaron colecciones
ColorList
yColorSet
que evitan las asignaciones. (I744bd). - Este cambio quita
shortSnapVelocityThreshold
, que se convirtió en un detalle de las implementaciones deSnapLayoutInfoProvider
. (I65f6d). - Se agregó el modificador
dragAndDropSource
para iniciar sesiones de arrastrar y soltar, y el modificadordragAndDropTarget
para recibir desde sesiones de arrastrar y soltar. (Ib7828, b/286038936) - Se actualizó la documentación y el método de posición de
SnapPositionInLayout
. Introduce paddings de contenido al método de posición enSnapPositionInLayout
. (Id7938, b/300116110). - Se agregó
UndoState
aTextFieldState
, que permite deshacer o rehacer los cambios realizados por el usuario. (Icc024).
Correcciones de errores
- Se corrigió el error por el que
basicMarquee
no se animaba después del 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 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
para favorecer los parámetros intercalados en el modificador mismo. (I83bec, b/298381260, b/262367109, b/261438887).
Cambios en la API
- Se introdujeron
updateCurrentPage
yupdateTargetPage
enScrollScope
. Estos son los últimos elementos necesarios 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. Se podría quitar el alcance del receptor, lo que llevaría 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 debe realizarse con la información de diseño y proporcionarse a través del enfoque o los desplazamientos de ajuste. (If320c).
Cambios en el comportamiento
- Compose ahora usa el escalamiento de fuente no lineal para mejorar la legibilidad y accesibilidad. Cuando la fuente se adapta > 100% en la configuración del sistema. Por lo general, el texto pequeño aumentará de tamaño, pero el texto que ya es grande solo lo hará un poco. Además, las alturas de línea definidas en PS se ajustarán automáticamente para mantenerse proporcionales a la altura deseada de la escala del 100%. Consulta las prácticas recomendadas para el ajuste de tamaño de las fuentes a fin de obtener más información. (I11518).
Correcciones de errores
- Quita el uso de
rememberSaveable
para la información sobre la herramienta. (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, ya que prefieres mantenerte libre de ventanas flotantes en el nivel de API 33 y versiones posteriores. (Ib51d5, b/297260115). - Las velocidades de envío 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
Pager
yPagerState
obsoletas. (Iea07e). - Se agregó
BasicTooltipBox
acompose.foundation
y se actualizaronPlainTooltipBox
yRichTooltipBox
para usarTooltipBox
con los nuevos elementos componiblesPlainTooltip
yRichTooltip
. (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). - Se ascendió
Modifier.focusGroup
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 agregó
viewportSize
enScrollState
, una forma de conocer el tamaño deviewPort
del componente que usaScrollState
después de que se produce la medición. (I8b85a, b/283102682). - Se solucionó un problema por el que la carga 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ó una sobrecarga de
LazyLayout
. Acepta una lambda deLazyLayoutItemProvider
, no un objeto sin formato como estaba antes. La sobrecarga anterior dejó de estar disponible. (I42a5a). - Se agregó compatibilidad para configurar
privateImeOptions
(Idb772).
Correcciones de errores
- Se corrigieron los campos de texto que muestran el teclado y se pueden editar cuando
readOnly
es verdadero También se corrigió el teclado que no se mostraba cuandoreadOnly
se cambiaba de verdadero a falso mientras estaba enfocado (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 agregó
PagerLayoutInfo
con información recopilada después de una pasada de medición enPager
. También se agregóPageInfo
, la información sobre una sola página medida enPager
. (Iad003, b/283098900). - Anotaciones adicionales para especificar las entradas permitidas a elementos componibles (I51109)
- Se agregó
SemanticsNodeInteraction.requestFocus
como una forma más conveniente y detectable de solicitar el enfoque en las pruebas. (Ie8722). - API de
PlatformTextInput*
completamente rediseñada. (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 desplazamiento en el parámetrocanPan
para ayudar a determinar la dirección del desplazamiento para permitirlo o inhabilitarlo (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 agregó una nueva API de
AnchoredDraggable
en Foundation. Se puede usar para compilar componentes que se pueden arrastrar entre estados discretos, como hojas inferiores modales. Esta API reemplaza a la API deSwipeable
de Material. (I4a2ed).
Cambios en la API
- Se admite
InputConnection#requestCursorUpdates
. (I0c69b) - Se agregó
scrollAnimationSpec
para permitir especificaciones de animaciones personalizadas. Se actualizóBringIntoViewCalculator
aBringIntoViewScroller
. (Idb741). - Agrega el tipo
ResourceResolutionException
para unir los throwables que se arrojan cuando se intentan cargar elementos de mapas 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 agregó una API de
BringIntoViewCalculator
que se puede usar para personalizar la forma en que componentes comoScrollable
responden a las solicitudesbringIntoView
. Se cambió la sobrecarga del elemento desplazable para que acepte de manera opcional una instancia deBringIntoViewCalculator
. (Iaf5af).
Correcciones de errores
- Se agregó una comprobación de lint para advertir si creas una
MutableInteractionSource
en la composición sin recordarla, de manera similar a las comprobaciones de lint para crear un estado mutable oAnimatable
. (I5daae). - Se agregó compatibilidad con la selección con mouse. La selección táctil se expandirá por palabra y se reducirá por carácter. (Ic0c6c, b/180639271).
- Se agregó la interfaz de
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 en las que 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 corrigieron los campos de texto que muestran el teclado y se pueden editar cuando
readOnly
es verdadero También se corrigió el teclado que no se mostraba cuandoreadOnly
se cambiaba de verdadero a falso mientras estaba enfocado (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
y el modificador de diseño, entre otros, se migraron a la API deModifier.Node
, lo que reduce la sobrecarga en la composición inicial. - Mejoras en la estabilidad de los localizadores Se solucionaron muchos errores.
- Los parámetros
pageCount
ahora se encuentran enPagerState
y no en el 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
Está disponible una inspección opcional que recomienda migrar llamadas
mutableStateOf()
a sus tipos especializados correspondientes para primitivas. 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 la gravedad de informativa a advertencia (o superior) declarandowarning "AutoboxingStateCreation"
en la configuraciónbuild.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
- Reduce las asignaciones durante listas diferidas, cuadrículas, etcétera. y las mediciones. (Iaf9e2)
- Se redujeron las asignaciones cuando se aplicaban 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 del seguimiento de 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). - Introduce un elemento
SnapLayoutInfoProvider
que se pueda usar conLazyGridState
. (I92134, b/269237141, b/260914964). - Se agregó el experimento
Modifier.animateItemPlacement()
para el alcance de elementos de cuadrículas escalonadas diferidas. Puedes aplicarlo a los elementos para lograr el cambio de posición de la automatización o el reordenamiento de las animaciones. (I4b62d, b/257034719). - Se asciende
GridCells.FixedSize
a estable.FixedSize
define unaLazyGrid
en la que cada celda toma el tamaño exacto en el eje cruzado, con el espacio restante distribuido por la disposición de los ejes cruzados. (I8542f). - Se agregó el alcance del receptor
PagerScope
para Pager y una función de utilidad para el cálculo de un desplazamiento de página determinado. (If2577). - Introduce el elemento
snapPositionalThreshold
cuando crees un comportamiento de lanzamiento de ajuste. Usa este parámetro a fin de especificar un umbral posicional 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 debe ajustar. El cálculo de los límites se debe realizar a nivel de implementación, ya que puede variar según cómo se necesite realizar el ajuste. (I923a4). - Se ascendieron
LazyStaggeredGrid
APIs a estables. (I633a5). - Se quita
pageCount
deHorizontal/VerticalPager
. Se debe proporcionar durante la creación del estado. Se actualizaronPagerState
yrememberPagerState
para aceptarpageCount
. (Ieb52d, b/266965072). - Se quita
pageCount
deHorizontal/VerticalPager
. Se debe proporcionar durante la creación del estado. Se actualizaronPagerState
yrememberPagerState
para aceptarpageCount
. (Ifa3cb, b/266965072). - Presenta
shortSnapVelocityThreshold
en el elementoSnapFlingBehavior
de Pager. (I7379e, b/275579012). - Agrega
FlowRowScope
yFlowColumnScope
. (I54fe2).
Correcciones de errores
- Las llamadas para obtener la semántica en Text cuando las restricciones tienen
minWidth
yminHeight
ya no fallan. (Ibd072). - Se corrigió la regresión en la que el teclado no se mostraba para los campos de texto dentro de diálogos no creados por el elemento componible
Dialog
. (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 cambios visibles.
Si ves cambios en el texto renderizado, puedes realizar la depuración configurando NewTextRendering1_5 = false
para confirmar la diferencia de comportamiento. Si lo estableces, se forzará la recomposición. Informa las diferencias de comportamiento como errores.
La marca de depuración se quitará antes de la versión 1.5 beta01 (Iada23, b/246960758).
Cambios en la API
- Haz que
FlowColumn/FlowRow
esté 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 se organizan con una disposición de ejes cruzados (I83ed9, b/235121277, b/267942510). - Se agregó compatibilidad con carriles de tamaño fijo en
LazyStaggeredGrid
y se organiza con una disposición de ejes cruzados. (I7d519). - Los objetos
UrlAnnotation
enAnnotatedString
ahora se pueden abrir a través de servicios de accesibilidad comoTalkBack
. (If4d82, b/253292081). - Se agregó la acción 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 mediante la acción semántica en lugar de hacer clic en el campo. (I6ed05). - Se agregó compatibilidad con el espaciado y la disposición de eje cruzado con
verticalArrangement
enFlowRow
yhorizontalArrangement
enFlowColumn
. También quitamosverticalAlignment
yhorizontalAlignment
de nivel superior enFlowRow/FlowColumn
. En su lugar, los desarrolladores pueden usarModifier.align
. Esto reduce la confusión entre las convenciones de nombres 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 de rendimiento sustanciales en muchos casos. No debe verse 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 componentes 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 un cambio de 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 al 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 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 agregó 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 de 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 de 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 se requiere que
BringIntoViewResponders
pasan las solicitudes a las respuestas superiores y, en su lugar, se las devolverá de inmediato el rectángulo que quiere que el elemento superior traiga a la vista. (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á. UsaBringIntoViewRequester
en su lugar. (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 los espacios publicitarios que se deben conservar para volver a usarlos 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 implementaciones iguales a usar “es 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.borde. 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. 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)