IU de Compose
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(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 |
---|---|---|---|---|
13 de noviembre de 2024 | 1.7.5 | - | - | 1.8.0-alpha06 |
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.ui:ui:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.7.5") } 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-alpha06
13 de noviembre de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.8.0-alpha06
. La versión 1.8.0-alpha06 contiene estas confirmaciones.
Cambios en la API
- Se agregó el modificador
stylusHoverIcon
. (Iff20a, b/331289114) - Se cambió el administrador de Autocompletar para que sea una interfaz. (I84914, b/376080755)
- Agrega
requestFocus(FocusDirection)
afocusRequester
yFocusTargetModifierNode
para permitir el enfoque con una dirección específica. (I5d9ec, b/245755256). FocusProperties.enter
yFocusProperties.exit
se reemplazaron poronEnter
yonExit
, con un alcance del receptor en lugar del parámetroFocusDirection
. (I6e667).- Se agregó compatibilidad con la función Autocompletar en la barra de herramientas de texto. (Ie6a4c).
- Cambios en la API a
Modifier.focusRestorer()
(I99c03):- El nombre del parámetro cambió a "fallback".
- El parámetro ahora es
FocusRequester
y no lambda. - El parámetro ahora no es NULL y Default es el valor predeterminado
- Se quitó la anotación
@Experimental
de la interfaz del administrador de Autocompletar. La función aún está en desarrollo para esta versión, pero no queremos presentar la API de @Experimental (Id8398). LocalHapticFeedback
ahora proporciona una implementación predeterminada deHapticFeedback
cuando la API de Vibrator indica que se admiten las respuestas táctiles. Se agregaron los siguientes elementos aHapticFeedbackType
:Confirm
,ContextClick
,GestureEnd
,GestureThresholdActivate
,Reject
,SegmentFrequentTick
,SegmentTick
,ToggleOn
,ToggleOff
yVirtualKey
. Los componentes de Wear Compose en los que se puede hacer clic con el botón presionado, comoButton
,IconButton
,TextButton
yCard
, ahora realizan la respuesta táctilLONG_PRESS
cuando se proporciona un controlador de clic largo. (I5083d)- Se quitan
OverscrollConfiguration
yLocalOverscrollConfiguration
, y se agregarememberPlatformOverscrollFactory
para crear una instancia de los parámetros de la implementación predeterminada de desplazamiento horizontal o personalizarlos. Para inhabilitar el desplazamiento excesivo, usaLocalOverscrollFactory provides null
en lugar deLocalOverscrollConfiguration provides null
. Para cambiar el color o el padding del brillo, usaLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
en lugar deLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
. (Ie71f9, b/255554340, b/234451516). - Se quitó la API experimental de
GlobalAssertions
. Su uso previsto era ejecutar verificaciones de accesibilidad. ConsultaenableAccessibilityChecks()
para ese fin. (I59322).
Versión 1.8.0-alpha05
30 de octubre de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.8.0-alpha05
. La versión 1.8.0-alpha05 contiene estas confirmaciones.
Nuevas funciones
En esta versión, la función Autocompletar se expone detrás de una marca de función. Estamos trabajando para mejorar el rendimiento y buscamos comentarios iniciales sobre las APIs. Se espera que las APIs evolucionen antes de la versión estable en función de los comentarios.
- Para habilitar Autocompletar, establece
ComposeUiFlags.isSemanticAutofillEnabled
como verdadero enonCreate
y usa la instantánea de Compose más reciente. - Esta versión de Autocompletar admite el guardado de credenciales de forma manual, a través de la sugerencia de contraseña segura y de la navegación. También admite el relleno cuando un campo que se puede autocompletar recibe el enfoque o cuando se activa la función Autocompletar a través de la barra de herramientas de texto en los componentes de texto. El componente se destacará para indicar que se completó el autocompletado.
Cambios en la API
- Se modificó la interfaz de Autocompletar para que siga la estructura de
expect
/actual
. (I22dce). - Se introdujo
CompositionLocal
, que se puede usar para modificar el tono del resaltado de relleno correcto de Autocompletar. (I32092). - Se agregó la API de
Modifier.onRectChanged
, que permite suscribirse a la posición y el tamaño relativos a la raíz, la ventana o la pantalla de unLayoutNode
. La API resuelve muchos casos de uso que el modificadoronGloballyPositioned
existente, sin embargo, lo hace con mucha menos sobrecarga y la API viene con herramientas para anular el rebote y reducir la velocidad de la devolución de llamada según lo que exija el caso de uso. (Id28c7, b/372765423, b/372757007, b/372994338). - Se expande el administrador de Autofill para incluir las APIs de
commit()
ycancel()
que ayudan a los usuarios a guardar las credenciales ingresadas recientemente. (I2da00). - Se presenta la nueva interfaz
AutofillManager
que se puede usar para ajustar el recorrido de Autocompletar de los usuarios y una marcaisSemanticAutofillEnabled
para activar esta nueva versión de Autocompletar. (I9d484) - Se agregó la API de
Modifier.onRectChanged
, que permite suscribirse a la posición y el tamaño relativos a la raíz, la ventana o la pantalla de unLayoutNode
. La API resuelve muchos casos de uso que el modificadoronGloballyPositioned
existente, sin embargo, lo hace con mucha menos sobrecarga y la API viene con herramientas para anular el rebote y reducir la velocidad de la devolución de llamada según lo que exija el caso de uso. (I3c8fa). - Agrega propiedades semánticas y tipos de datos para admitir el Autocompletado extendido. (I52c7d).
- Ahora, todos los métodos del compilador
AnnotatedString
no son experimentales (Ia89c8, b/261561823).
Correcciones de errores
- Las vistas incorporadas en Compose ahora pueden recibir eventos rotativos si están enfocadas (I4d53a, b/320510084).
- Se solucionó un problema por el que varios tipos de recursos no se actualizaban con los cambios de configuración (Ia9b99, b/352336694).
- Se solucionó un problema que impedía que
TextField
funcionara correctamente cuando se usaba el teclado japonés POBox en ciertos dispositivos Sony más antiguos. (Ia9b99, b/373743376). - Se corrigió el problema por el que los diálogos se mostraban en la parte inferior de la pantalla en lugar de centrarlos (Ia2ec, b/373093006).
- La segmentación para la API 35 y versiones posteriores ya no obliga a que los diálogos tengan
decorFitsSystemWindows
establecido como falso. (Ibc94, b/364492593). - Se corrigió una falla que se producía cuando se movían capas entre ventanas (p. ej., diálogo y contenido principal) (I675ba, b/330955281).
Versión 1.8.0-alpha04
16 de octubre de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.8.0-alpha04
. La versión 1.8.0-alpha04 contiene estas confirmaciones.
Cambios en la API
- Se agregaron devoluciones de llamada de
DelegatableNode#onDensityChange
yDelegatableNode#onLayoutDirectionChange
para permitir la actualización del estado del nodo cuando estos cambien (I04f3e, b/340662451). - Agrega
WindowInfo#containerSize
para proporcionar el tamaño del contenedor de contenido de la ventana actual. Esto se puede recuperar conLocalWindowInfo
. (Idc38c, b/369334429, b/360343819). - Se implementó una corrección para los elementos desplazables anidados que se quitan del árbol de nodos durante un deslizamiento en curso. Ahora, estos nodos cancelarán el deslizamiento y enviarán correctamente el evento
onPostFling
con la velocidad restante. También presentamos la marcaNewNestedScrollFlingDispatchingEnabled
para controlar el comportamiento en caso de regresiones. La marca se quitará antes de la versión beta. (I05c37, b/371168883). - Se introdujo
PointerInputModifierNode#touchBoundsExpansion
, que se puede usar para ampliar los límites táctiles de un modificador de entrada de un solo puntero. (Iccf02, b/335339283). - Agrega
WindowInfo#containerSize
para proporcionar el tamaño del contenedor de contenido de la ventana actual. Esto se puede recuperar conLocalWindowInfo
. (I27767, b/369334429, b/360343819). - Se quitó
readOnly
deTextFields
para fijarlo a la versión estable de Foundation. (I3aaba). Paragraph
yParagraphIntrinsics
ahora toman una lista de todas las anotaciones aplicadas aAnnotatedString
. Anteriormente, solo tenían una lista deSpanStyles
(I12f80).
Correcciones de errores
- Se actualizó la forma en que se tratan los párrafos en
AnnotatedString
. Antes, solo podías crear párrafos que no se superpusieran. Ahora,AnnotatedString
permite párrafos que se superponen por completo y que se unirán, y párrafos anidados, en cuyo caso el párrafo externo se dividirá en los límites del interno, y el estilo del párrafo interno se combinará con el estilo del párrafo externo (Ic9554). - Se corrigió la falla en
AnnotatedString
con unLinkAnnotation
de longitud cero. (89aac6).
Versión 1.8.0-alpha03
2 de octubre de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.8.0-alpha03
. La versión 1.8.0-alpha03 contiene estas confirmaciones.
Cambios en la API
- Se actualizó la versión de Kotlin a la 1.9 (I1a14c).
- Se introdujo un nuevo rol de semántica llamado Carrusel para emular el comportamiento de la lista en los paginadores para servicios de accesibilidad. (Id354b, b/354109776, b/239672673).
- Se cambió el nombre de
invisibleToUser()
porhideFromAccessibility
. Su función sigue siendo la misma. Consulta la documentación para obtener más detalles. (Ib43a3).
Correcciones de errores
- Se actualizaron los documentos del modificador
SensitiveContent
(Ib0442). - Se solucionó un problema por el que se ignoraban ciertos clips de contorno genéricos en combinación con sombras de elevación en algunas versiones de Android.
- Se solucionó un problema por el que se aplicaban clips vacíos cuando se especificaba un clip de contorno genérico en ciertas versiones de Android.
- Se corrigió la excepción que se generaba cuando el IME estaba activo en una vista externa y se usaba la acción Siguiente para enfocar el
ComposeView
. El comportamiento declearFocus()
se alinea con el comportamiento de View en niveles de API anteriores al 28, en los queclearFocus()
puede hacer que se enfoque la vista predeterminada. - Se corrigió un problema por el que la ubicación se producía en nodos separados en
LazyList
. Para ello, se separó la administración de la subcomposición para diferentes pases de diseño. - Se solucionó un problema en el que el teclado en pantalla parpadeaba cuando el enfoque cambiaba de un
TextField
a unEditText
o a cualquier otro editor basado en objetos View. - Los nodos de desplazamiento anidados ahora enviarán eventos
onPostFling
correctamente después de que se desconecten. - Mejoras generales en el rendimiento
Versión 1.8.0-alpha02
18 de septiembre de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.8.0-alpha02
. La versión 1.8.0-alpha02 contiene estas confirmaciones.
Cambios en la API
TextOverflow.StartEllipsis
yTextOverflow.MiddleEllipsis
ahora están disponibles, lo que permite colocar puntos suspensivos al principio o en el medio de la línea del texto de una sola línea. (I38913, b/185418980).
Correcciones de errores
- Se corrigió
dismissOnClickoutside
de Dalog (39a3d, b/364508685). - No se recortan las sombras del contenido del diálogo (e8e2f, b/363027803).
- Se corrigió el comportamiento erróneo cuando la búsqueda de enfoque se mueve entre Compose y un elemento View (58377, b/350534714).
Contribución externa
- El
Map
deAlignmentLines
ahora acepta tipos concretosVerticalAlignmentLine
oHorizontalAlignmentLine
. (I02912). - Nuevo método
ByteArray.decodeToImageBitmap(): ImageBitmap
común. (I83c21).
Versión 1.8.0-alpha01
4 de septiembre de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.8.0-alpha01
. La versión 1.8.0-alpha01 contiene estas confirmaciones.
Versión 1.7
Versión 1.7.5
30 de octubre de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.7.5
. La versión 1.7.5 contiene estas confirmaciones.
Correcciones de errores
- Se solucionaron problemas por los que la elevación y el recorte con contornos personalizados no se renderizaban correctamente.
- Se corrigió una falla de texto que se producía con un
LinkAnnotation
de ancho cero. (Ic1e2e). - Se corrige un anuncio en
Talkback
del botón cuando se compila como un elemento componible de texto en el que se puede hacer clic. (I1f588).
Versión 1.7.4
16 de octubre de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.7.4
. La versión 1.7.4 contiene estas confirmaciones.
Versión 1.7.3
2 de octubre de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.7.3
. La versión 1.7.3 contiene estas confirmaciones.
Correcciones de errores
- Se solucionó un problema por el que especificar un clip de contorno genérico generaba un límite de clip vacío en ciertas versiones de Android.
- Se corrigió la excepción que se generaba cuando el IME estaba activo en una vista externa y se usaba la acción Siguiente para enfocar el
ComposeView
. El comportamiento declearFocus()
se alinea con el comportamiento de View en niveles de API anteriores al 28, en los queclearFocus()
puede hacer que se enfoque la vista predeterminada. - Se solucionó un problema por el que se usaba un
placeOrder
incorrecto para la invalidación de la vista previa, lo que solucionaba un caso extremo en el que se omitió la ubicación de la vista previa.
Versión 1.7.2
18 de septiembre de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.7.2
. La versión 1.7.2 contiene estas confirmaciones.
Correcciones de errores
- Se mejoró el rendimiento de la información del nodo de accesibilidad y los eventos de semántica quitando el seguimiento detallado. (I89156, b/362530618).
ComposeView
ya no fallará cuando se le pase un tamaño de medición excepcionalmente grande (da5db, b/347036173).- Se corrigió un problema del lector de pantalla de accesibilidad por el que no se realizaban anuncios
LiveRegion
en los botones. (f66fa7, b/348590026).
Versión 1.7.1
10 de septiembre de 2024
- No hay cambios en los artefactos de Android. Se quitaron los artefactos
-desktop
y se agregaron los artefactos-jvmStubs
y-linuxx64Stubs
. Ninguno de estos objetivos está destinado a usarse, son marcadores de posición para ayudar a los esfuerzos de Jetbrains Compose.
Versión 1.7.0
4 de septiembre de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.7.0
.
Cambios importantes desde la versión 1.6.0
En esta entrada de blog, se describen los cambios importantes de la versión 1.7.0.
Versión 1.7.0-rc01
21 de agosto de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.7.0-rc01
. La versión 1.7.0-rc01 contiene estas confirmaciones.
Cambios importantes
- El módulo ui:ui ahora aplica el requisito de que la versión mínima de foundation:foundation sea 1.7.0-rc01 o una posterior. Esto se aplica para corregir una incompatibilidad de comportamiento entre ui y foundation en relación con los cambios de
NestedScrollSource
que se produjeron al principio de 1.7.0-alpha01.
Versión 1.7.0-beta07
7 de agosto de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.7.0-beta07
. La versión 1.7.0-beta07 contiene estas confirmaciones.
Correcciones de errores
- Las funciones
SemanticsNodeInteraction
relacionadas con la entrada de textoperformTextReplacement
,performTextInput
yperformTextClearance
ahora arrojarán errores de aserción cuando se las llame enTextFields
de solo lectura. (I4ae8f).
Versión 1.7.0-beta06
24 de julio de 2024
Lanzamiento de androidx.compose.ui:ui-*: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.ui:ui-*:1.7.0-beta05
. La versión 1.7.0-beta05 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un error por el que cambiar el teclado en pantalla hacía que
TextField
no aceptara la entrada del nuevo teclado hasta que se perdía y recuperaba el enfoque. - Se solucionó un problema por el que los intentos de conservar el contenido de la capa causaban efectos secundarios no deseados cuando se renderizaba con contenido
SurfaceView
.
Versión 1.7.0-beta04
26 de junio de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.7.0-beta04
. La versión 1.7.0-beta04 contiene estas confirmaciones.
Correcciones de errores
- Se evitaron las fallas cuando se miden líneas de texto muy grandes (p. ej., 10,000 caracteres) (8157ab).
- Inhabilita la compatibilidad con la renderización de software para la API de
GraphicsLayer
. (35ddd8). - Se corrigió una falla en la lógica de persistencia de capas. (70b13e)
- Se revirtió la optimización del uso de objetos de capa, ya que causaba problemas de renderización. (70b13e)
Versión 1.7.0-beta03
12 de junio de 2024
Lanzamiento de androidx.compose.ui:ui-*: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.ui:ui-*:1.7.0-beta02
. La versión 1.7.0-beta02 contiene estas confirmaciones.
Cambios en la API
- Se cambió el nombre de
SemanticsProperties.Editable
porIsEditable
y se cambióSemanticsPropertyReceiver.editable
a un valorisEditable
. La propiedad ahora es booleana y siempre se especifica con campos de texto. (I8acd8). - Se cambió el nombre del parámetro de comparativa de accesibilidad. (I3d440)
- Se actualizó la API para aplicar diseño a los vínculos:
TextLinkStyles
ahora forma parte del constructorLinkAnnotation
y del métodoAnnotatedString.fromHtml
(I90b2b). También se quitó elTextDefaults
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 las coordenadas en función de esa marca. (I3a330).
Versión 1.7.0-beta01
14 de mayo de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.7.0-beta01
. La versión 1.7.0-beta01 contiene estas confirmaciones.
Cambios en la API
- Se cambió el nombre de
performCustomAccessibilityActionLabelled
porperformCustomAccessibilityActionWithLabel
y el deperformCustomAccessibilityActionWhere
porperformCustomAccessibilityActionWithLabelMatching
(I5387f). 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
temáticos y analizar HTML con vínculos temáticos. En su lugar, se agregó una claseTextLinkStyles
que permite aplicar diseño a los vínculos como un parámetro al elemento componible Text. (I31b93).
Correcciones de errores
- Se corrigieron casos de uso adicionales cuando se agregan modificadores de entrada de puntero de forma dinámica durante eventos 63e1504
Versión 1.7.0-alpha08
1 de mayo de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.7.0-alpha08
. La versión 1.7.0-alpha08 contiene estas confirmaciones.
Cambios en la API
- Se agregó compatibilidad con implementaciones de formas mutables.
Shape#createOutline
ahora se observa dentro de las capas gráficas, por lo que leer los valores de estado dentro provocará invalidaciones cuando cambie el estado, lo que permitirá animaciones de formas de mayor rendimiento. (Id1629, b/326070216). - 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
introducen un marco de referencia y, solo cuando se colocan bajo manipulación directa, la propiedad será falsa. Para consultar la posición solo con aquellos que introducen un marco de referencia, usapositionInLocalFrameOfReference(...)
. OpositionInLocalLookaheadFrameOfReference
de unaLookaheadScope
. (Ifc5f7). - Las APIs de
LookaheadScope
se volvieron estables (I21507). - Se cambió la expresión lambda de acción para
getScrollViewportLength
según los comentarios del Consejo de la API. (Ibc74a). - Se actualizaron las APIs de esquema
GraphicsLayer
para consumir parámetros de número de punto flotante en lugar de int. Se quitaron los valores de centinelaUnsetOffset/UnsetSize IntSize
en favor de las constantes Unspecified existentes en las clases intercaladas de Offset y Size basadas en números de punto flotante (I2fb03, b/333863462). - Cuando se inserta la entrada del mouse durante las pruebas,
MouseInjectionScope.click()
,MouseInjectionScope.doubleClick()
,MouseInjectionScope.tripleClick()
yMouseInjectionScope.longClick()
ahora aceptan un parámetrobutton: MouseButton
para que se puedan aplicar de forma más universal. El valor predeterminado esMouseButton.Primary
para todos los métodos. (I31a23, b/190493367, b/261439695). - Se cambió el nombre de
onClicked
aonClick
dentro deLinkInteractionListener
. (Iaa35c). - Se cambió el nombre de
TextInclusionStrategy.isInside
porisIncluded
. Haz que el tipo de datos que se muestra deParagraph/MultiParagraph#getRangeForRect()
no sea anulable. (I51f26).
Correcciones de errores
- Se corrigió la captura de capturas de pantalla largas para contenedores de desplazamiento con
reverseScrolling=true
. (I7c59c).
Contribución externa
- Se agregó compatibilidad para la precarga 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 de estosLazyLists
. La implementación predeterminada es recuperar previamente los primeros 2 elementos anidados. Sin embargo, las nuevas APIs deLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
yLazyListPrefetchStrategy#onNestedPrefetch
pueden controlar este comportamiento. (I51952).
Versión 1.7.0-alpha07
17 de abril de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.7.0-alpha07
. La versión 1.7.0-alpha07 contiene estas confirmaciones.
Cambios en la API
ClickableText
está marcado como obsoleto. Para agregar vínculos al texto, crea unAnnotatedString
con unLinkAnnotation
que corresponda a tu vínculo y pasa esteAnnotatedString
al elemento componible de texto. (I34d4b, b/323346994).- Se agregó
ViewConfiguration.HandwritingGestureLineMargin
para los gestos de escritura a mano. Se agregó compatibilidad con el gestoJoinOrSplit
paraBasicTextField
(Ie6e13, b/325660505). FocusProperties.enter
yFocusProperties.exit
dejaron de ser experimentales.FocusDirection.Enter
yFocusDirection.Exit
dejaron de ser experimentales.FocusRequester.Cancel
ya no es experimental (I461a1, b/261564106).- Cuando consultes las coordenadas de diseño, ahora puedes usar el argumento
excludeDirectManipulationOffset
para excluir el desplazamiento establecido por los diseños superiores que colocaron sus elementos secundarios conPlaceable.PlacementScope.withDirectManipulationPlacement
. Del mismo modo, un diseño que cambia la posición de sus elementos secundarios con frecuencia ahora puede colocarlos conwithDirectManipulationPlacement
(como Scroll, implementado de forma predeterminada). Esto ayuda a que las animaciones basadas enapproachLayout
sean más intuitivas, ya que ahora tienen la oportunidad de diferenciar qué desplazamiento animar y qué aplicar directamente cuando deciden animar su enfoque. (I60ec7). - Se quitó la marca de función para las capturas de pantalla largas. (I28648, b/329128246).
LazyColumn
ahora renderizará los encabezados fijos correctamente en capturas de pantalla largas. (I8d239, b/329296635).- Se reemplazaron las fuentes de arrastre y deslizamiento
NestedScroll
porUserInput
ySideEffect
para adaptarse a la definición extendida de estas fuentes que ahora incluyen animaciones (Side Effect) y la rueda del mouse y el teclado (UserInput
). (I40579) ApproachLayoutModifierNode
yModifier.approachLayout
ahora son estables, con nuevosisMeasurementApproachInProgress()
yisPlacementApproachInProgress()
para reemplazar losisMeasurementApproachComplete()
yisPlacementApproachComplete()
anteriores, respectivamente.- Se quitó el modificador
intermediateLayout
obsoleto. (I3e91c). - Cambia el nombre de
GraphicsLayer#buildLayer
para grabar y reflejar los métodos begin/endRecording de las APIs respaldadas por Displaylist, comoRenderNode
y Picture. - Se actualizó
rememberGraphicsLayer
para aprovecharrememberObserver
. (I312c1, b/288494724, b/330758155). 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).- Los vínculos de texto tienen la opción de diseño de estado presionado, además de los diseños normales, con el cursor sobre ellos y enfocados (I5f864, b/139312671).
- Se cambió el nombre de
String.parseAsHtml
porAnnotatedString.Companion.fromHtml
. (I43dcd). - Se agregaron argumentos de diseño (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) y un objeto de escucha de interacción de vínculos al métodoparseAsHtml
. Cuando se analice la cadena etiquetada en HTML con etiquetas<a>
, el método creará unLinkAnnotation.Url
para cada una de esas etiquetas y pasará los objetos de diseño y el objeto de escucha de interacción de vínculos a cada anotación. (I7c977). LinkAnnotation
ahora toma los argumentos de diseño basados en el estado y unLinkInteractionListener
. Agrega esta anotación aAnnotatedString
para obtener un hipervínculo. Si pasasfocusedState
ohoveredState
, puedes definir elconfiguration
visual para los vínculos cuando se enfoquen o se coloque el cursor sobre ellos. (I81ce4, b/139312671).ImeOptions.hintLocales
ya no es anulable. Si quieres pasar una lista de configuración regional vacía, usaLocaleList.Empty
. (Ic5bc4)
Correcciones de errores
- Controla de forma fluida los datos de eventos de entrada históricos incorrectos o dañados (ignora los datos de offset incorrectos).
- Se corrigieron los eventos de puntero inesperados cuando se agrega un modificador de entrada de puntero de forma dinámica antes de otro modificador de entrada de puntero durante un flujo de eventos de entrada de puntero activo (por ejemplo, entre una entrada de desplazamiento y una salida de desplazamiento [mouse/stylus]).
Versión 1.7.0-alpha06
3 de abril de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.7.0-alpha06
. La versión 1.7.0-alpha06 contiene estas confirmaciones.
Nuevas funciones
- Se agregó el método
parseAsHtml
para cadenas con diseño aplicado: permite convertir una cadena marcada con etiquetas HTML enAnnotatedString
. Ten en cuenta que no se admiten todas las etiquetas. Por ejemplo, aún no podrás mostrar listas de viñetas. (I84d3d, I30626, b/139326648). - Se implementó la compatibilidad experimental con capturas de pantalla largas en contenedores de desplazamiento de Compose con la API oficial de Android (
ScrollCaptureCallback
). Esta función es experimental y, en este momento, es posible que no controle todos los casos correctamente. Por esa razón, actualmente está inhabilitado de forma predeterminada. Para habilitarla, establece la marcaComposeFeatureFlag_LongScreenshotsEnabled
como verdadera. (I2b055, b/329296471).
Cambios en la API
fun ClipEntry.getMetadata()
cambió aval ClipEntry.clipMetadata
. (I50155).- Se quitaron las funciones
ClipboardManager.getClipMetadata
yClipboardManager.hasClip
. UsaclipEntry.getMetadata()
para leer los metadatos de la entrada de clip actual. También verifica si el resultado deClipboardManager.getClip
es nulo o no para comprender si el portapapeles tiene un clip actual. (I50498). - Ahora puedes pasar objetos
GraphicsLayer
a funcionesplaceable.placeWithLayer()
(I1b22f). ClipboardManager.setClip
ahora acepta nulos para poder borrar el portapapeles. (I7d2e9).- Se agregaron IDs de recursos para ayudar a ocultar vistas que se usan como detalles de implementación dentro de las herramientas de compilación (I99531).
- Se agregó el método de suspensión
GraphicsLayer#toImageBitmap
para admitir la renderización del contenido de un mapa de bits en unGraphicsLayer
. Esta es una operación de renderización acelerada por hardware en el nivel de API 22 y versiones posteriores (inclusive), que es compatible con más del 99% de todos los dispositivos Android. En el nivel de API 21 de Android, se recurre a la renderización de software. (I9e114) - Se agregó un método auxiliar para convertir un
RectF
de Android enComposeRect
(I39925, b/325660505). - Todos los parámetros
KeyboardOptions
ahora tienen un valor no especificado de forma predeterminada. Se agregó el métodoKeyboardOptions.merge
. - Se cambió el nombre de
KeyboardOptions.autoCorrect
aautoCorrectEnabled
y se hizo nulo, donde nulo indica que no se especificó ningún valor. (Ia8ba0, b/295951492) - La variante
BasicTextField(state)
yBasicSecureTextField
ahora usanKeyboardActionHandler
en lugar deKeyboardActions
para procesar las acciones que realiza el teclado en software. (I58dda).
Versión 1.7.0-alpha05
20 de marzo de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.7.0-alpha05
. La versión 1.7.0-alpha05 contiene estas confirmaciones.
Nuevas funciones
- Se presenta la nueva API de
GraphicsLayer
para registrar comandos de dibujo en una lista de visualización, así como propiedades adicionales que afectan la renderización de la lista de visualización. Esto proporciona un límite de aislamiento para dividir una escena compleja en partes más pequeñas que se pueden actualizar de forma individual sin tener que volver a crear toda la escena. Las transformaciones realizadas en unGraphicsLayer
se pueden realizar sin volver a grabar la lista de visualización. A diferencia deModifier.graphicsLayer
,GraphicsLayer
permite renderizar contenido componible en otro lugar y es útil en casos de uso animados en los que se espera que el contenido se renderice en diferentes escenas.
Cambios en la API
GraphicsLayer.draw(Canvas)
ya no es una API pública. En su lugar, usa la función de extensiónDrawScope.drawLayer(GraphicsLayer)
para dibujar la capa. (I7a7c0).- Se dividió
restrictedConstraints()
en dos métodos:fitPrioritizingWidth()
yfitPrioritizingHeight()
(I6d7fd). - Se introdujo el stub de
HardwareCanvas
para el uso de Android L (I1c3b5, b/288494724). - Se actualizó el framework de Compose para exponer una composición
GraphicsContext
local junto con la actualización de las implementaciones deDelegateableNode
ydrawWithCache
del propietario para exponer el acceso aGraphicsContext
para el acceso con alcance que limpiará automáticamente las instancias deGraphicsLayer
cuando se desmonten los modificadores. (I64a2f, b/288494724). - Se introdujo
InterceptPlatformTextInput
para ayudar a escribir pruebas relacionadas con el IME de bajo nivel y otros casos de uso de IME de bajo nivel.PlatformTextInputTestOverride
dejó de estar disponible. (I862ed, b/322680547) - Se agregó la función de extensión
GraphicsLayer.setOutline(Outline)
. (Ib81f4). - Se introdujo el constructor de funciones
GraphicsContext
para crear una fábrica que cree instancias deGraphicsLayer
(Ib98d6, b/288494724). - Se expuso la API de
GraphicsLayer
para proporcionar flexibilidad definida por el desarrollador en la captura de comandos de dibujo que se pueden usar para dibujar en otro lugar y también aplicar diferentes efectos visuales al resultado final. (I80245, b/288494724) - Introduce
Paragraph#getRangeForRect
, que muestra un rango de texto cubierto por un área de rectángulo determinada. (Iee516, b/325660505) - Se quitó la anulación experimental de
BasicText
con el argumentoonLinkClicked
. En el futuro, se agregará una API de reemplazo para la compatibilidad con hipervínculos. (I107d5).
Correcciones de errores
- Se agregó la definición de la API de
GraphicsLayer
esperada/real para admitir la captura y la repetición de comandos de dibujo con efectos visuales y transformaciones de composición opcionales. Se introdujo la interfazGraphicsContext
para contener dependencias gráficas, incluida la creación y administración de instancias deGraphicsLayer
. (I4a8d6, b/288494724). - Se solucionó un problema de interoperabilidad con la búsqueda de enfoque 1D en el que el enfoque se bloqueaba dentro de un
ComposeView
incorporado entre otras vistas. (I08fd4).
Contribución externa
LocalLifecycleOwner
se trasladó de la IU de Compose alifecycle-runtime-compose
para que sus APIs de ayuda basadas en Compose se puedan usar fuera de la IU de Compose. Gracias Jake Wharton por la contribución. (I6c41b, b/328263448).- Expone de forma coherente las propiedades de número de punto flotante de sesgo en todos los subtipos de alineación basados en sesgos. (I69f0f, b/328088992).
Versión 1.7.0-alpha04
6 de marzo de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.7.0-alpha04
. La versión 1.7.0-alpha04 contiene estas confirmaciones.
Cambios en la API
- Se agregó compatibilidad con la función de escritura a mano con la pluma stylus para BasicTextField2 en dispositivos posteriores a Android U. (I002e4).
- En esta CL, agregamos la acción semántica
GetScrollViewportLength
para que podamos enviar información sobre los componentes que se desplazan en Compose al sistema de accesibilidad. Esta CL también aplica el uso de dicha propiedad en las listas desplazables de Foundation. (Ic5fa2). FocusRequester.createRefs
ahora es estable (I4d92c, b/261436820).- Se introdujo
DelegatableNode.requireView()
para permitir que los nodos modificadores obtengan elView
de Android actual sin leer una composición local. (I40768). - Nueva API
Path.reverse()
para invertir la dirección de una ruta (I36348) - Se agregó
hintLocales
aKeyboardOptions
para proporcionarle aTextFields
la capacidad de sugerir IME con configuraciones regionales específicas para preestablecer un idioma preferido. - Expone la propiedad
platformLocale
deLocale
que muestra el objeto de plataforma subyacente, p.ej.,java.util.Locale
. (I921c6).
Versión 1.7.0-alpha03
21 de febrero de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.7.0-alpha03
. La versión 1.7.0-alpha03 contiene estas confirmaciones.
Cambios en la API
- Presentamos
ContextualFlowRow
yFlowRow
/Column
mejorados con MaxLines y Overflow. Nos complace anunciar mejoras en los elementos experimentalesFlowRow
yFlowColumn
, que ahora incluyen compatibilidad con maxLines y desbordamiento, 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ónmaxLines
pequeña y botones dinámicos +N para ver más, yFlowRow
yFlowColumn
son perfectos para una pequeña cantidad de elementos, menos de 100. Importante: Para mantener el comportamiento existente enFlowRow
oFlowColumn
, en el que todos los elementos se componen independientemente de si se ajustan al máximo del eje 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). - Se agregó la propiedad semántica
maxTextLength
que se debe establecer en los campos de texto que filtran la cantidad máxima de caracteres permitidos. (I24d9f, b/170648072). - El wrapper
Modifier.inspectable
dejó de estar disponible. Esta API creará más invalidaciones de tu modificador de lo necesario, por lo que se desaconseja su uso. Se recomienda a los desarrolladores que implementen el métodoinspectableProperties()
enModifierNodeElement
si desean exponer propiedades de modificador a las herramientas. (Ib3236). - Nuevo constructor para
PopupProperties
que permite un control total sobre las marcasWindowManager.LayoutParams
. (Ibb33e, b/312485503). - Se introdujo
DelegatableNode.requireLayoutCoordinates()
como una forma de obtener elLayoutCoordinates
actual de unModifier.Node
sin necesidad de anularonPlaced
y almacenar las coordenadas en una propiedad. (Ia8657). - Se introdujo
DelegatableNode.currentLayoutCoordinates
como una forma de obtener elLayoutCoordinates
actual de unModifier.Node
sin necesidad de anularonPlaced
y almacenar las coordenadas en una propiedad. (Iaebaa). BasicTextField2
y las APIs relacionadas del paqueteandroidx.compose.foundation.text2
se movieron aandroidx.compose.foundation.text
. (I9f635).- Se agregó una nueva API de
ApproachLayoutModifierNode
para admitir la creación de lógica de enfoque personalizada en un nodo de modificador explícito. También se agregó una nueva API experimental deDeferredTargetAnimation
para animaciones cuyo objetivo es desconocido en la creación de instancias. (I60745) - Se agregaron nuevas APIs de
Path
para consultar la dirección de una ruta y extraer contornos de unPath
. (I63d04) - Se agregaron
PathHitTest
yPath.contains(Offset)
para comprobar si unPath
contiene un punto específico. (I3b218). TextLayoutResult
ahora expone el métodogetLineBaseline(lineIndex)
. Esto permite leer el modelo de referencia de una línea arbitraria del texto, además de las propiedades de conveniencia existentesfirstBaseline
ylastBaseline
. (Ide4e8, b/237428541).- Se agregó un método para comparar solo las anotaciones de dos
AnnotatedStrings
. (I32659).
Correcciones de errores
- Se solucionó un problema de retrocompatibilidad con
SemanticsPropertyReceiver.performImeAction
ySemanticsActions.PerformImeAction
. (Id0528, b/322269946).
Versión 1.7.0-alpha02
7 de febrero de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.7.0-alpha02
. La versión 1.7.0-alpha02 contiene estas confirmaciones.
Cambios en la API
- Se solucionó un problema de compatibilidad binaria con
SemanticsPropertyReceiver.performImeAction
. (I65865, b/322269946) - El constructor
PopupProperties
que toma un parámetrousePlatformDefaultWidth
ya no es experimental. (I8f8d2). - Se agregó una sobrecarga de
ComposeTestRule.waitUntil
que toma una descripción de cadena de la condición para incluirla en el mensaje de tiempo de espera. (I9413e) - Nueva API de semántica
unset()
para quitar las propiedades de semántica que se agregan en la misma cadena de modificadores. Nueva propiedad semánticaisOpaque
. (I8c583, b/317966058 y b/246056649). - Se quitó
originalEventPosition
del método de copia en la API pública dePointerInputChange
. (I7bead).
Correcciones de errores
- Se corrigió un error de accesibilidad que permitía hacer clic en elementos que no eran pestañas ni botones de selección cuando se seleccionaban. (I2181c).
VelocityTracker
ahora tendrá la corrección para agregar puntos de forma predeterminada. Si hay algún problema, se puede desactivar la corrección configurandoVelocityTrackerAddPointsFix
como falso. (Ib3877, b/269487059).- Se corrigió la incompatibilidad binaria con versiones anteriores en
TextStyle
yParagraphStyle
. (I179f0, b/320819734).
Contribución externa
- Se agregó un nuevo constructor
DialogProperties
sin parámetros específicos de la plataforma. (I45829). - Se agregó un nuevo constructor
PopupProperties
sin parámetros específicos de la plataforma. (I9a038).
Versión 1.7.0-alpha01
24 de enero de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.7.0-alpha01
. La versión 1.7.0-alpha01 contiene estas confirmaciones.
Cambios en la API
- Se expandió
ClipboardManager
agregandoClipEntry
yClipMetadata
para admitir contenido arbitrario, como imágenes. - Se agregó la API de
DeviceConfigurationOverride
aui-test
para permitir anular de forma local el comportamiento del contenido en prueba, por ejemplo, para especificar un tamaño, una configuración regional, una dirección de diseño, una escala de fuente o un tema disponibles.
Versión 1.6
Versión 1.6.8
12 de junio de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.6.8
. La versión 1.6.8 contiene estas confirmaciones.
Correcciones de errores
- Se corrigieron las inconsistencias en el escalamiento de la fuente cuando la escala de la fuente es menor que la tabla definida más baja. En este caso, ahora interpolamos entre la escala lineal de 1x y la tabla definida más baja, de modo que el tamaño de la fuente aumente de forma monótona a medida que aumentan las escalas. (Icbae3).
Versión 1.6.7
1 de mayo de 2024
Lanzamiento de androidx.compose.ui:ui-*: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.ui:ui-*:1.6.6
. La versión 1.6.6 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió una falla poco frecuente de
BasicTextField
.
Versión 1.6.5
3 de abril de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.6.5
. La versión 1.6.5 contiene estas confirmaciones.
Versión 1.6.4
20 de marzo de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.6.4
. La versión 1.6.4 contiene estas confirmaciones.
Versión 1.6.3
6 de marzo de 2024
Lanzamiento de androidx.compose.ui:ui-*: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.ui:ui-*:1.6.2
. La versión 1.6.2 contiene estas confirmaciones.
Versión 1.6.1
7 de febrero de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.6.1
. La versión 1.6.1 contiene estas confirmaciones.
Correcciones de errores
- Se solucionó un problema de retrocompatibilidad con
SemanticsPropertyReceiver.performImeAction
ySemanticsActions.PerformImeAction
. (Ie0bb2, b/322269946). - Los diseños ahora muestran un error durante la medición cuando uno de ellos muestra un tamaño anormalmente grande. Por lo general, este tipo de error ocurre cuando la medición usa restricciones máximas directamente sin verificar
Constraints.Infinity
. La verificación ayudará a los desarrolladores a encontrar problemas con el diseño que tiene el tamaño incorrecto en lugar de un diseño que lo contiene. (I339a9)
Versión 1.6.0
24 de enero de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.6.0
. La versión 1.6.0 contiene estas confirmaciones.
Versión 1.6.0-rc01
10 de enero de 2024
Lanzamiento de androidx.compose.ui:ui-*:1.6.0-rc01
. La versión 1.6.0-rc01 contiene estas confirmaciones.
Correcciones de errores
- Se optimizó la implementación de gráficos vectoriales para mejorar el rendimiento minimizando las recomposiciones adicionales.
Versión 1.6.0-beta03
13 de diciembre de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.6.0-beta03
. La versión 1.6.0-beta03 contiene estas confirmaciones.
Nuevas funciones
- Ahora es posible que un
LayoutCoordinates
se desconecte sin que se desconecte el nodo. Protégete contra eso en el Inspector de diseño de Compose (If693).
Correcciones de errores
PlatformImeOptions
ahora es una clase concreta en lugar de una interfaz. (If40a4).- Se corrigieron las recomposiciones descendentes adicionales causadas por el hecho de que
LocalSoftwareKeyboardController
yLocalTextInputService
recibían valores nuevos cada vez que se recomponía una raíz. (I42190, b/310510985)
Versión 1.6.0-beta02
29 de noviembre de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.6.0-beta02
. La versión 1.6.0-beta02 contiene estas confirmaciones.
Versión 1.6.0-beta01
15 de noviembre de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.6.0-beta01
. La versión 1.6.0-beta01 contiene estas confirmaciones.
Cambios en la API
- El modificador
DragAndDropTarget
ahora toma elDragAndDropTarget
receptor de forma explícita y tiene una lambda para habilitar una sesión de arrastrar y soltar. Ahora hay dos funciones de fábrica para unDragAndDropModifierNode
. Uno para recibir transferencias y otro para transferir datos (I69481) - Se actualizó
maximumFlingVelocity
para que se represente como Float. Se actualizó la documentación para que sea más clara sobre la unidadmaximumFlingVelocity
. (I8adc7). - Se cambió el nombre de
onDragAndDropStart
en la fábrica deDragAndDropModifierNode
poracceptDragAndDropTransfer
.Se agregóacceptsDragAndDropTransfer
al modificadordragAndDropTarget
para aceptarlo desde una sesión de arrastrar y soltar. Esta lambda muestra unDragAndDropTarget
viable 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ábricaDragAndDropTarget
para recibir de sesiones de arrastrar y soltar (Iebf3a). Se quitó
DragAndDropInfo
como un tipoDragAndDropModifierNode.drag
ahora toma parámetros para la lambdaDrawScope
detransferData
, el tamaño de la decoración y la decoración de arrastreDragAndDropTarget
tiene métodos para eventos de arrastrar y soltar en particular, en lugar de ser un solo método abstracto.Se cambió el nombre de
onDragAndDropEvent
en la función de fábrica de unDragAndDropModifierNode
aonDragAndDropStart
para indicar mejor que elDragAndDropTarget
proporcionado solo es válido para una sesión de arrastrar y soltar determinada.Se quitó
DragAndDropEventType
(I645b1).Se cambió el nombre de
PlatformTextInputModifierNode.runTextInputSession
aestablishTextInputSession
. (I03cd0).Mejora los nombres de la API de nodos transitables para que sean más comprensibles. (Ia4474).
Se reemplazó
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 usarlos 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 quitaron
FocusDirection.In
yFocusDirection.Out
, y se usanFocusDirection.Enter
yFocusDirection.Exit
en su lugar (I2f660).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 el código de muestra para ver ejemplos sobre cómo usar la nueva API. (Ia8943).El constructor
FontStyle(int)
dejó de estar disponible. En su lugar, usaFontStyle.Normal
oFontStyle.Italic
. (I66610)Se cambió el nombre de la interfaz
FontScalable
aFontScaling
(Ie804a).
Correcciones de errores
SoftwareKeyboardController.show()
ya no mostrará el teclado en pantalla si no hay ningún editor de texto enfocado. (I2165a, b/301477279).- Ahora se ignorarán los eventos de teclas de hardware Up para las teclas que no hayan recibido un evento Down en la misma vista de Compose. (Ib37b4, b/305518328).
- Se agregó compatibilidad del renderizador para el gradiente de barrido en
ArcLine
. (I4d5bb). - Implementa equals y hashcode para
PageSize.Fixed
. (Ie3ede, b/300134276). - Se corrigió el problema de compatibilidad binaria con el cambio de margen de la ventana (Iee695).
- Se quitó la capa principal de material para el chip o botón de Material3, ya que las microcomparativas muestran un mejor rendimiento sin ella. (I55555).
- Los
TestDispatcher
que se pasan comoeffectContext
a las pruebas de Compose ahora se usarán para crear la prueba y los relojes de fotogramas. (Ia7178)
Versión 1.6.0-alpha08
18 de octubre de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.6.0-alpha08
. La versión 1.6.0-alpha08 contiene estas confirmaciones.
Cambios en la API
- Se cambió el nombre de la lambda
onDrawDragShadow
deModifier.dragAndDrawSource
adrawDragDecoration
, y el parámetro de tamaño deDragAndDropInfo
adragDecorationSize
. (Id0e30, b/303904810). - Introduce
SemanticsNodeInteraction.isDisplayed()
ySemanticsNodeInteraction.isNotDisplayed()
para verificar si un nodo coincidente es visible o no sin afirmarlo. (I2c196, b/302100809) - Se introdujo un valor
Unspecified
especial para los camposTextAlign
,TextDirection
,Hyphens
yLineBreak
deParagraphTextStyle
para reemplazarnull
. Debido a que estas clases son intercaladas, cuando reemplazamos nullable por Unspecified, evitamos el empaquetado de tipos primitivos. Se actualizaron los constructores, los métodos get y otros métodos deTextStyle
y el estilo de párrafo para aceptar los parámetros mencionados como tipos no nulos. (I4197e, b/299490814) - Se agregó una sobrecarga de
GoogleFont
para leer unGoogleFont
desde XML. (If8f59). - Se hizo
LoremIpsum
PreviewParameterProvider
una clase abierta. (I41bf5, b/266918816, b/300116360).
Correcciones de errores
FontFamilyResolver
ahora usaDispatchers.Main
para las corrutinas de administración de la caché. (Ie8dd9).AndroidViewBinding
ahora quita de forma síncrona las instancias deFragment
aumentadas con la inclusión de unFragmentContainerView
en tu diseño como parte de suonRelease
concommitNow
(en lugar delcommit
que se usaba anteriormente), lo que corrige los problemas con el método de edición en vivo para reemplazar la composición cuando se realizan cambios. (I58fbf).
Versión 1.6.0-alpha07
4 de octubre de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.6.0-alpha07
. La versión 1.6.0-alpha07 contiene estas confirmaciones.
Cambios en la API
- Se introdujo
PlatformTextInputMethodTestOverride
para escribir pruebas de editores de texto personalizados. (Id159b). - 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 agregaron colecciones
ColorList
yColorSet
que evitan las asignaciones. (I744bd). - Se agregó la marca temporal
DisableNonLinearFontScalingInCompose
para inhabilitar el escalamiento de fuente no lineal. EstableceDisableNonLinearFontScalingInCompose = true
en tus pruebas si necesitas tiempo para limpiarlas. Esta marca se quitará en Compose 1.6.0-beta01. (Ic9486).
Correcciones de errores
- Se optimizó el análisis de elementos de diseño vectoriales XML. (Ibb015).
Versión 1.6.0-alpha06
20 de septiembre de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.6.0-alpha06
. La versión 1.6.0-alpha06 contiene estas confirmaciones.
Cambios en la API
- Se realizaron optimizaciones adicionales en los íconos de material. (I3e08d).
- Se agregó la capacidad de recorrer el árbol de modificadores hacia arriba y hacia abajo para encontrar nodos similares. (I2d234).
- Se agregó la devolución de llamada
onRestoreFailed()
al modificadorfocusRestorer()
(Ie1d43). - Se agregaron anotaciones de androidx a varias APIs de gráficos para especificar
ColorInt
,FloatRange
,IntRange
,Size
y mucho más. (Id65c8, b/290950582). - Se agregó
showSystemUi=true
a la definición dePreviewScreenSizes
(Ib61d3).
Cambios en el comportamiento
- Compose ahora usa el escalamiento de fuente no lineal para mejorar la legibilidad y la accesibilidad. Cuando la escala de fuente sea superior al 100% en la configuración del sistema, el texto pequeño aumentará de tamaño de forma normal, pero el texto que ya es grande solo aumentará un poco. Además, las alturas de línea definidas en SP se ajustarán automáticamente para mantenerse proporcionales a la altura deseada de escala del 100%. Consulta las prácticas recomendadas para el escalamiento de fuentes para obtener más información. (I11518)
Versión 1.6.0-alpha05
6 de septiembre de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.6.0-alpha05
. La versión 1.6.0-alpha05 contiene estas confirmaciones.
Cambios en la API
- Habilita la captura de contenido en
AndroidComposeViewAccessibilityDelegateCompat
. (Ib2969). - Las velocidades de deslizamiento en los componentes View, como
ScrollView
yRecyclerView
, se limitan aViewConfiguration.ScaledMaximumFlingVelocity
. Compose ahora contiene su propia versión demaximumFlingVelocity
, que ahora se aplica aDraggable
. (Ibf974). - Se agregó andamiaje inicial para admitir APIs de arrastrar y soltar de la plataforma. (If84ce).
- Se agregó
deviceId
aRotaryScrollEvent
(Iba3bf). - Se actualizó la API de dispositivos
ui-tooling
para incluir dispositivos más nuevos (Ib25b4).
Versión 1.6.0-alpha04
23 de agosto de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.6.0-alpha04
. La versión 1.6.0-alpha04 contiene estas confirmaciones.
Cambios en la API
- Se agregó un método para desactivar
ReusableComposition
, quitar las observaciones, pero mantener los nodos en su lugar. Para volver a activar la composición desactivada, llama asetContent
. (Ib7f31). - Se agregó la interfaz
ReusableComposition
para administrar el ciclo de vida y la reutilización de subcomposiciones. (I812d1, b/252846775). Modifier.focusGroup
se ascendió a las APIs estables. (I7ffa3).- Se agregaron anotaciones de androidx a varias APIs de gráficos para especificar
ColorInt
,FloatRange
,IntRange
,Size
y mucho más. (I70487, b/290950582) - Se actualizó la API de
ColorFilter
para que tenga tipos de subclase concretos para mejorar la capacidad de inspección de los parámetros. (I5fe29). - Se introdujo la biblioteca wear-tooling-preview para enumerar los dispositivos Wear válidos que se pueden usar para las vistas previas de la IU (Ib036e).
- Se creó la interfaz
FontScalable
para controlar la parte de escalamiento de fuente de la interfaz Density. (I2cf3f)
Versión 1.6.0-alpha03
9 de agosto de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.6.0-alpha03
. La versión 1.6.0-alpha03 contiene estas confirmaciones.
Cambios en la API
- Nuevo tipo de transición de entrada/salida que escala el contenido según el tamaño del contenedor de animación durante la animación de entrada y salida. La interfaz y la diversión de
LookaheadScope
componibles ahora son estables. (Ifb2ce). - Se agregó compatibilidad para configurar
privateImeOptions
(Idb772).
Correcciones de errores
PopupPositionProvider.calculatePosition
ahora actualizará automáticamente la posición de la ventana emergente cuando se cambie el estado leído en el cálculo. (I676a1, b/292257547).- Se corrigieron los campos de texto que mostraban el teclado y eran editables cuando
readOnly
era verdadero. También se corrigió el problema por el que no se mostraba el teclado cuando se cambiabareadOnly
de verdadero a falso mientras se enfocaba. (I34a19, b/246909589) - Se expandió la aplicación de aserciones globales en las pruebas de IU. (I1f90d).
Versión 1.6.0-alpha02
26 de julio de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.6.0-alpha02
. La versión 1.6.0-alpha02 contiene estas confirmaciones.
Cambios en la API
- Se agregó una interfaz de localizador de servicios que los implementadores de Composition pueden implementar para permitir una implementación de Composition que delegue a otro servicio de delegado de composición las búsquedas en la Composition original. No se debe llamar directamente y se usa para habilitar la creación de APIs experimentales en el entorno de ejecución que se pueden encontrar en las versiones empaquetadas del compositor, como lo hace el módulo de IU. (I296b9).
- Se rediseñó por completo la API de
PlatformTextInput*
. (I6c93a, b/274661182, b/267235947, b/277380808). SoftwareKeyboardController
yLocalSoftwareKeyboardController
dejaron de ser experimentales.LocalSoftwareKeyboardController
ahora también es unCompositionLocal
adecuado. (I4c364).LookaheadLayout
yLookaheadLayoutScope
dejaron de estar disponibles hace algunas versiones y ahora se quitaron. Las APIs de reemplazo sonLookaheadScope
que pueden funcionar con cualquier diseño. (I12ac3).- Se agregó
SemanticsNodeInteraction.requestFocus
como una forma más conveniente y detectable de solicitar enfoque en las pruebas. (Ie8722). - Se agregaron APIs experimentales para registrar aserciones globales que los frameworks de prueba podrán usar en el futuro. (I12d77).
Correcciones de errores
- La primera invocación de la devolución de llamada
update
deAndroidView
ahora se aplazará hasta que se adjunte la vista, en lugar de ejecutarse cuando se aplique la composición que presentaAndroidView
. Se corrigió un error en el que la devolución de llamada deupdate
no se invalidaba si un efecto cambiaba de inmediato un estado que leía. (Ie9438, b/291094055).
Versión 1.6.0-alpha01
21 de junio de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.6.0-alpha01
. La versión 1.6.0-alpha01 contiene estas confirmaciones.
Nuevas funciones
- Se agregó compatibilidad con el elemento anticipado en
LazyList
. Esto permite queLazyList
en el pase de visualización anticipada omita cualquier animación (p. ej., animación de colocación de elementos,AnimatedVisibility
, etc.) y calcule el tamaño y la posición de visualización anticipada para todos los elementos secundarios. Después del pase de previsión, los elementos secundarios deLazyList
pueden animarse de forma independiente a la realidad, como se ve en el pase de previsión.
Cambio de comportamiento: includeFontPadding ahora es falso de forma predeterminada en Compose
includeFontPadding
ahora es falso de forma predeterminada (21d806) en Compose.
includeFontPadding
es un atributo heredado que controla si se incluye o no padding adicional en la parte superior de la primera línea y la última línea del texto para adaptarse a cualquier carácter que pueda extenderse por encima o por debajo de las líneas de base del texto.
Si actualizas esta versión de Compose, se modificará la forma en que se renderizan todos los textos en tu IU, ya que se quitará el padding adicional en la parte superior de la primera línea y la última línea de cada texto que muestres.
Según los requisitos de tu IU y las métricas de fuente que uses, los cambios deben ser mínimos. Sin embargo, es posible que encuentres bloqueadores, como los siguientes: - Pruebas de capturas de pantalla defectuosas. Corrige la IU si es necesario y vuelve a generar las imágenes de referencia. - El texto está ligeramente desalineado. Quita los paddings negativos personalizados o agrega padding si es necesario.
Para habilitar includeFontPadding
, usa PlatformTextStyle
para cada texto:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
Puedes habilitar includeFontPadding
para todos tus textos configurando tus estilos de Material. Ten en cuenta que los nombres de los parámetros variarán entre M2 y M3.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
Puedes obtener más información sobre includeFontPadding
de Compose en la documentación para desarrolladores y en esta entrada de blog.
Si experimentas problemas o errores relacionados con este cambio, informa un error con la herramienta de seguimiento de errores.
Cambios en la API
- Compatibilidad con
InputConnection#requestCursorUpdates
(I0c69b). - Se agregaron
FocusRequester.saveFocusedChild
yFocusRequester.restoreFocusedChild
(Ic557e, b/272302679, b/275157318). - Se agregó el tipo
ResourceResolutionException
para unir los objetos throwables que se arrojan cuando se intenta cargar recursos de mapa de bits con una descripción de la ruta de acceso del recurso que no se pudo cargar. (I19f44, b/230166331, b/278424788). - Accesibilidad optimizada para el rendimiento y las asignaciones de memoria (Iede48).
- Se agregaron propiedades y acciones de semántica para admitir la traducción de texto. (I4a6bc).
- Nueva propiedad en
IntrinsincMeasureScope
y sus implementaciones (p.ej.,MeasureScope
) para indicar si el pase de medición actual es un pase de previsión. (I7a812). - Se actualizó la API de
DrawScope
para presentar la capacidad de volver a segmentar la renderización en un lienzo diferente con densidad, dirección de diseño y tamaño alternativos. - Se actualizó
DrawContext
para admitir la configuración de la densidad y la dirección del diseño, así como para que el lienzo sea configurable. (Ie1f9b, b/225408150). - Se agregó
Paragraph#fillBoundingBoxes
para calcular los cuadros de límite de los caracteres. (If30ee). - Se agregó un conjunto de
MultiPreviews
comunes (Ia5a27).
Correcciones de errores
- Se agregó la interfaz de
FocusTargetModifierNode
que se puede usar para crear unFocusTarget
personalizado. (I9790e). - Se cambió el nombre de los parámetros
fallback*
en el constructorTextMeasurer
adefault*
. (I940a5) - Se cambió el nombre de
SemanticsPropertyReceiver.performImeAction
poronImeAction
y el deSemanticsActions.PerformImeAction
porOnImeAction
(I8e841). - Se agregó la rueda para diferenciar un desplazamiento del mouse de un arrastre en el desplazamiento anidado (específicamente, en
NestedScrollConnection
). (Ie57e4) - Se agregó la API de
asComposePaint
para reemplazar atoComposePaint
, ya que el objeto que se muestra une elandroid.graphics.Paint
original (I22b4c). - Se da de baja
SemanticsProperties.imeAction
y se reemplaza por un parámetro nuevo enSemanticsActions.performImeAction
. (I4a587) - Se agregó compatibilidad con la selección con el mouse. La selección táctil se expandirá por palabra y se reducirá por carácter. (Ic0c6c, b/180639271).
- Los métodos
Paragraph
que solían arrojarAssertionError
para los desplazamientos fuera de los límites ahora arrojanIllegalArgumentException
como lo haceMultiParagraph
. (I549d3, b/243338896).
Versión 1.5
Versión 1.5.4
18 de octubre de 2023
Lanzamiento de androidx.compose.ui:ui-*: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.ui:ui-*:1.5.3
. La versión 1.5.3 contiene estas confirmaciones.
Correcciones de errores
- (b/301209788) A veces,
TextField
aplicaba incorrectamente los comandos anteriores cuando se enfocaba y se ingresaba una entrada en coreano, lo que provocaba la pérdida de caracteres.
Versión 1.5.2
27 de septiembre de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.5.2
. La versión 1.5.2 contiene estas confirmaciones.
Correcciones de errores
- Se agregó una solución para las fallas cuando se accedía a la API de desplazamiento de accesibilidad desde el subproceso en segundo plano.
- Se corrigió el problema por el cual se agregaban nodos no adjuntos al árbol semántico.
Versión 1.5.1
6 de septiembre de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.5.1
. La versión 1.5.1 contiene estas confirmaciones.
Correcciones de errores
- Se corrigieron los campos de texto que mostraban el teclado y eran editables cuando
readOnly
era verdadero. También se corrigió el problema por el que no se mostraba el teclado cuando se cambiabareadOnly
de verdadero a falso mientras se enfocaba. (I34a19, b/246909589)
Versión 1.5.0
9 de agosto de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.5.0
. La versión 1.5.0 contiene estas confirmaciones.
Versión 1.5.0-rc01
26 de julio de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.5.0-rc01
. La versión 1.5.0-rc01 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió la falla que se producía cuando se usaba
SubcomposeLayout
dentro demovableContentOf()
.
Versión 1.5.0-beta03
28 de junio de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.5.0-beta03
. La versión 1.5.0-beta03 contiene estas confirmaciones.
Correcciones de errores
- Se agregó la interfaz FocusTargetModifierNode que se puede usar para crear un FocusTarget personalizado. (Ifb1d6).
- Se solucionó un problema con los elementos componibles de diálogo y ventana emergente que podía provocar que la ventana secundaria no cambiara de tamaño como se esperaba cuando
usePlatformDefaultWidth=true
. (I112ee).
Versión 1.5.0-beta02
7 de junio de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.5.0-beta02
. La versión 1.5.0-beta02 contiene estas confirmaciones.
Cambios en la API
- Se agregó la API de
asComposePaint
para habilitar el consumo de una instancia deandroid.graphics.Paint
que se usará en Compose
Correcciones de errores
- Se agregó la API de
asComposePaint
para reemplazar atoComposePaint
, ya que el objeto que se muestra une elandroid.graphics.Paint
original (I22b4c).
Versión 1.5.0-beta01
24 de mayo de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.5.0-beta01
. La versión 1.5.0-beta01 contiene estas confirmaciones.
Cambios en la API
- Se quitaron las asignaciones en la recomposición, las animaciones de color y
AndroidComposeView
(Ib2bfa). - Se agregó la función auxiliar
CacheDrawModifierNode()
para permitir la delegación (Icf8f9). - Presentamos la propiedad
isLookingAhead
, a la que se puede acceder desdeMeasureScope
, para observar los resultados de la previsión y, si lo deseas, influir en el pase principal. (Ibf4c3). - Nueva propiedad de semántica
traversalIndex
, un número de punto flotante que se usa para reordenar los nodos en el recorridoTalkBack
(los valores más bajos se muestran antes). (I9a81b, b/186443263). - Se cambió el nombre de la propiedad Semantics
isContainer
aisTraversalGroup
(I121f6). ColorProducer
ahora tiene unoperator fun invoke
en lugar deproduce
(I4a9a2).- Se agregó la API de transformación
Path
para aplicar transformaciones de traslación, escala y rotación a objetos de ruta. (I23434, b/233772232). - El método de
ColorProducer
se llamaproduce
. (I78bde). - Se cambió el nombre de
toFrameworkColorSpace
portoAndroidColorSpace
(I4f547). - Se cambió el nombre de
ColorLambda
porColorProducer
. (I73b1a) - Se introdujeron APIs para convertir entre tipos de espacios de color de Android y Compose. (Ie7db4, b/279979665).
- Se agregó un parámetro de color a
BasicText
para permitir animar o establecer el color del texto de manera eficiente. (Iffd88, b/246961787). - Se cambió el nombre de
TextRange.constrain
aTextRange.coerceIn
. (I31be2). - Se agregó
TextStyle.merge(...)
optimizado con una lista completa de parámetros. (Iad234, b/246961787). - Se estabilizaron muchas APIs de Text, incluidas
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
yMultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245). PlatformTextStyle.includeFontPadding
ya no está obsoleto. Nuestro objetivo original era quitar el campo. Sin embargo, los comentarios muestran que los desarrolladores necesitan esta opción de configuración. Por lo tanto, se quitó la baja del campo (I98e96, b/277703184).- Se agregó el método
TextRange.constrain
público. (I97912). - Los
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). - El constructor de
LineHeightStyle.Alignment(topRatio)
se promueve a la API estable. (I79c32, b/261565383). TextMeasurer
y las APIs relacionadas ya no son experimentales. (I74647, b/261581753).- Se agregó la acción semántica de
PerformImeAction
para invocar la acción de IME en los nodos del editor de texto. (Ic606f, b/269633506). - Las APIs de
PlatformTextInput
ya no son experimentales para Android. (I668eb). - Se cambió el nombre del parámetro de valor para
Enum.valueOf
(Ia9b89). - Se agregaron más excepciones arrojadas de enum valueOf (I818fe).
- Se presentó 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ó 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 cambió el nombre de
Font.MaximumAsyncTimeout
porFont.MaximumAsyncTimeoutMillis
. Solo cambiar el nombre. (I07af5). - Se actualizaron los valores de DPI de los dispositivos de referencia
@Preview
(Id6151, b/254528382). - Se agregaron los parámetros
brush
yalpha
aBasicText
para permitir animar o configurar el pincel de texto de manera eficiente. - Se definieron tipos de lambda sin cuadros para Float, Double, Long, Int y Short en :ui:ui-unit (I6f18d, b/246961787).
Correcciones de errores
- Se quitaron las múltiples asignaciones en el seguimiento de la velocidad del puntero (I26bae).
- Se redujeron las asignaciones en la administración de entradas de puntero y diseño (I5333a).
- Se optimizó el uso de memoria de vectores y la renderización de primeros fotogramas (I2f3c6).
- Se quitaron las asignaciones cuando se dibujan líneas y puntos con Canvas (I9f535).
- Se agregaron documentos para
AndroidFont.fontVariationSettings
(I7d9e2).
Contribución externa
- Se mejoró el rendimiento y se redujeron las asignaciones en las APIs de Vector (I906cb).
Versión 1.5.0-alpha04
10 de mayo de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.5.0-alpha04
. La versión 1.5.0-alpha04 contiene estas confirmaciones.
Nuevas funciones
- Mejoras en la delegación de
Modifier.Node
: Se agregó una capacidad mejorada para delegar a otras instancias deModifier.Node
desde unDelegatingNode
. Esto se puede hacer con las APIs dedelegate
yundelegate
. Antes de este cambio, cada API del nodo de delegación debía delegarse de forma explícita al nodo de delegación. Después de este cambio, las interfaces de nodos se delegarán de forma implícita, a menos queDelegatingNode
las anule de forma explícita. (67352bc).
Cambios en la API
- Se agregó
NestedScrollModifierNode
, unNestedScroll Modifier.Node
al que se puede delegar. (I69513) - Se agregaron los parámetros
onReset
yonRelease
al elemento componibleAndroidViewBinding
, se duplicó el elemento componibleAndroidView
y se habilitó la compatibilidad con la reutilización de View conViewBinding
. (I00b1e, b/276802519). - Se actualizó la API de Compose Path para admitir operaciones de rebobinado para admitir casos de uso de manipulación frecuente de Path con una reutilización más rápida. (I7b797).
- Se agregó
TextStyle.merge(...)
optimizado con una lista completa de parámetros. (Iad234, b/246961787). - Se estabilizaron muchas APIs de Text, incluidas
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
yMultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245). PlatformTextStyle.includeFontPadding
ya no está obsoleto. Nuestro objetivo original era quitar el campo. Sin embargo, los comentarios muestran que los desarrolladores necesitan esta opción de configuración. Por lo tanto, se quitó la baja del campo (I98e96, b/277703184).
Correcciones de errores
- Se corrigió la regresión por la que no se mostraba el teclado para los campos de texto dentro de los diálogos que no creaba el elemento componible
Dialog
. (I82551, b/262140644).
Versión 1.5.0-alpha03
19 de abril de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.5.0-alpha03
. La versión 1.5.0-alpha03 contiene estas confirmaciones.
Nuevas funciones
- Nuevo comportamiento predeterminado para
SubcomposeLayout
enLookaheadScope
:SubcomposeLayouts
que no tiene espacios condicionales (p. ej.,TabRow
,Scaffold
,BoxWithConstraints
, etc.) ahora funciona bien con animaciones de previsión.
Cambios en la API
- El nuevo
intermediateMeasurePolicy
predeterminado que reutiliza la política de medición del pase de previsión permite que los subtipos deSubcomposeLayout
sin ranuras condicionales, comoScaffold
,TabRow
yBoxWithConstraints
, funcionen con la previsión de forma predeterminada. (Id84c8). - El recompilador creado para una ventana de Android ahora solo bloqueará las llamadas a
withFrameNanos
en lugar de toda la composición cuando reciba una notificación deON_STOP
. Esto significa que las ventanas asociadas con actividades detenidas seguirán recomponiéndose para los cambios de datos, pero se bloquearán las animaciones o cualquier otro llamador dewithFrameNanos
. (Id9e7f, b/240975572). - Cambia
motionEventSpy
a estable. (Ic5ec4, b/261560988). - Se agregó el método
TextRange.constrain
público. (I97912). PlatformTextStyle.includeFontPadding
ya no está obsoleto para alentar a los desarrolladores a usar esta API de compatibilidad para cambiar y probar la configuración deincludeFontPadding
como falsa. (I98e96, b/277703184).
Versión 1.5.0-alpha02
5 de abril de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.5.0-alpha02
. La versión 1.5.0-alpha02 contiene estas confirmaciones.
Cambios en la API
- Nueva API de
SubcomposeLayout
que toma una política de medición intermedia adicional para controlar la lógica de medición o diseño durante las animaciones basadas en la previsión. (I017d3) - PointerInput ahora es diferido y usa Modifier.Node para mejorar el rendimiento (lee sobre el cambio menor de comportamiento). (15dab9).
- Se cambiaron las APIs experimentales a estables con eventos de teclas. (I9c7d8, b/261566839, b/261567368).
- Se cambiaron las APIs experimentales a estables en
PointerInputChange
. (I1b543, b/261560988, b/261565762, b/261565749). - Agrega una forma de crear una instancia de
SuspendingPointerInputModifierNode
para implementaciones deModifier.Node
más complejas. (Ic4933) - Los
UrlAnnotation
enAnnotatedString
ahora se pueden abrir a través de servicios de accesibilidad, comoTalkBack
. (If4d82, b/253292081). - Se agregó una API para interceptar las teclas de hardware antes de que se envíen al teclado en pantalla (I4f4c6, b/186800395).
- 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, con la acción semántica, en lugar de hacer clic en el campo. (I6ed05)
Correcciones de errores
- Las acciones de prueba de texto ahora requieren que los campos de texto estén habilitados. (Iab328).
Versión 1.5.0-alpha01
22 de marzo de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.5.0-alpha01
. La versión 1.5.0-alpha01 contiene estas confirmaciones.
Cambios en la API
- Modifier.intermediateLayout ahora no requiere un LookaheadScope explícito. El bloque de medición en intermediateLayout tiene IntermediateMeasureScope como receptor, lo que proporciona CoroutineScope, LookaheadScope y MeasureScope convenientes.(Ibe2e5)
- LookaheadLayout se reemplazó por LookaheadScope, que ya no es un diseño. Esto permite que la MeasurePolicy superior controle directamente el contenido secundario en un LookaheadScope. (Ibe2e5).
- Se agregó
Modifier.Node#coroutineScope
para permitir que Modifier.Nodes inicie corrutinas. (I76ef9). - Permite que Modifier.Nodes lea CompositionLocals implementando la interfaz CompositionLocalConsumerModifierNode. (Ib44df).
- Propagación de la clase @Deprecated a la propiedad. (I882d1)
Versión 1.4
Versión 1.4.3
3 de mayo de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.4.3
. La versión 1.4.3 contiene estas confirmaciones.
Correcciones de errores
- Se solucionó un problema por el que
AndroidView
podría no tener el diseño correcto cuando se usaba con ciertos modificadores. (I4dc77, b/274797771). - Se corrigió un error en la búsqueda de enfoque 2D que afectaba a los menús
DropDown
(b/276811828). - Se corrigió un error en las propiedades de entrada y salida de enfoque personalizadas que solo ejecutaban el bloque de entrada y salida la primera vez que se invocaba la lambda (b/277234245).
- Se corrigió una regresión en el sistema de enfoque que causaba una falla durante la lectura de
focusProperties
. (b/271324781, b/274897776).
Versión 1.4.2
19 de abril de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.4.2
. La versión 1.4.2 contiene estas confirmaciones.
Correcciones de errores
- Se solucionó un problema por el que
AndroidView
no reutilizaba sus modificadores correctamente, lo que podría provocar un comportamiento inesperado y fallas. (Ib67ee, b/275919849) - Se corrigió la regresión por la que el teclado no se mostraba en los campos de texto dentro de los diálogos que no creaba el elemento componible
Dialog
(I82551, b/262140644).
Versión 1.4.1
5 de abril de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.4.1
. La versión 1.4.1 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un problema por el que
ParentDataModifier
no afectaba aAndroidView
(b/274797771).
Versión 1.4.0
22 de marzo de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.4.0
. La versión 1.4.0 contiene estas confirmaciones.
Cambios importantes desde la versión 1.3.0
- Se agregó una nueva API de
PinnableContainer
que permite fijar elementos de lista diferida para que no se descarten cuando se desplazan fuera de los límites. Por ejemplo,Modifier.focusable()
usa este mecanismo para fijar el elemento enfocado actualmente (Ib8881, b/259274257, b/195049010). - El sistema de enfoque se reescribe con las nuevas APIs experimentales de
Modifier.Node
(I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589). - Se agregó en la propiedad semántica
IsContainer
en plataformas. Esta propiedad se usará en un cambio posterior que determina el orden de recorrido en función del significado semántico de los elementos, como las plataformas (I63379). - Se agregó un nuevo rol de accesibilidad
DropdownList
. Se puede usar para replicar el comportamiento deTalkBack
cuando se enfocaandroid.widget.Spinner
. (I177e5, b/236159001). - Ahora puedes usar
PlatformTextStyle(emojiSupportMatch)
para inhabilitar de manera opcional el procesamiento de la compatibilidad con emojis para un solo párrafo (Ia7100, b/139326806). - Las pruebas de IU de Android Compose ahora ejecutarán pases de diseño para cada fotograma cuando se ejecuten fotogramas para quedar inactivos (p. ej., a través de
waitForIdle
). Esto puede afectar las pruebas que se confirman en fotogramas individuales de animaciones de diseño (I8ea08, b/222093277). - Se agregó
TextMotion
experimental aTextStyle
para definir texto comoStatic(default)
o animado. UsaTextMotion.Animated
si el texto se va a ajustar, traducir o rotar a través de la animación (I24dd7).
Versión 1.4.0-rc01
8 de marzo de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.4.0-rc01
. La versión 1.4.0-rc01 contiene estas confirmaciones.
Cambios en la API
- Se agregó una sobrecarga de la función de componibilidad
AndroidView
, que acepta el parámetroonReset
. Permite que las instancias de View se vuelvan a usar cuando su nodo en la composición se descarta y se vuelve a usar de forma compatible. Esto es especialmente útil paraLazyRows
yLazyColumns
de Views. (I3f10d, b/230099236). - Se presentó 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).
Correcciones de errores
- La acción de semántica
SetText
deBasicTextField
ahora actualizará el búfer de texto con la misma ruta de código que las actualizaciones del IME y las funciones de prueba (p.ej.,performTextReplacement
). - Las funciones de prueba de texto
performTextClearance
,performTextReplacement
yperformTextSelection
ahora usanSemanticsActions
. (I0807d, b/269633168, b/269624358).
Versión 1.4.0-beta02
22 de febrero de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.4.0-beta02
. La versión 1.4.0-beta02 contiene estas confirmaciones.
Cambios en la API
- Se quitó la API de
modifierElementOf()
. En su lugar, extiende desdeModifierNodeElement
directamente. (I2256b) - 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).
Correcciones de errores
- Se mejoró el algoritmo de orden de enfoque de accesibilidad. Por ejemplo, las barras superior e inferior se leen primero y al final, respectivamente (74e9c5).
Versión 1.4.0-beta01
8 de febrero de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.4.0-beta01
. La versión 1.4.0-beta01 contiene estas confirmaciones.
Cambios en la API
- Se cambió el nombre de
PinnableContainer.PinnedHandle.unpin()
porrelease()
(I4667a). - Se agregaron
waitUntilNodeCount
,waitUntilAtLeastOneExists
,waitUntilExactlyOneExists
ywaitUntilDoesNotExist
como APIs experimentales aComposeTestRule
, que extiende la API dewaitUntil
para aceptar cualquier comparador y cualquier recuento de nodos. ConsultaComposeTestRule
para obtener más documentación (Ifa1b9, b/226934294). - Se cambió el nombre de
Font.MaximumAsyncTimeout
aFont.MaximumAsyncTimeoutMillis
(I07af5). - Se quitó
GoogleFont.Provider.AllFontsListUri
y, en su lugar, se vinculó a él en ktdoc. (I16f29)
Correcciones de errores
- Se agregaron documentos para
AndroidFont.fontVariationSettings
(I7d9e2).
Versión 1.4.0-alpha05
25 de enero de 2023
Lanzamiento de androidx.compose.ui:ui-*:1.4.0-alpha05
. La versión 1.4.0-alpha05 contiene estas confirmaciones.
Cambios en la API
- 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). - Se agregó una nueva API para realizar el seguimiento de 1 velocidad dimensional (If5a82).
FocusRequester
ahora está marcado como@Stable
(I580ee).- Se quitó una anotación experimental del constructor
DialogProperties
que toma un parámetrousePlatformDefaultWidth
(Ic4048). - Se agregó la función a la posición del cálculo y la tangente a distancia en una ruta, con
PathMeasure.getPosition()
yPathMeasure.getTangent()
(I3b47c). - Se quitó un método set público expuesto de forma accidental en
PlatformParagraphStyle
(I07f47). - Se agregaron más funciones de tipo/nulabilidad de funciones ocultas intercaladas y obsoletas (I24f91).
- Se agregó
AnnotatedString.hasStringAnnotations
para consultar anotaciones con cero asignaciones (I94dfe, b/246960758). - Se agregó una nueva sobrecarga para la función
TextMeasurer.measure
que toma unaString
como texto (I47b2d, b/242705342). - Las APIs de
LineBreak
yHyphens
en TextStyle se cambiaron a la versión estable (Ic1e1d).
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
Se lanzó androidx.compose.ui:ui-*:1.4.0-alpha04
. La versión 1.4.0-alpha04 contiene estas confirmaciones.
Nuevas funciones
- Se agregó una nueva API de
PinnableContainer
que permite fijar elementos de lista diferida para que no se descarten cuando se desplazan fuera de los límites. Por ejemplo,Modifier.focusable()
usa este mecanismo para fijar el elemento enfocado actualmente (Ib8881, b/259274257, b/195049010). - El sistema de enfoque se reescribe con las nuevas APIs experimentales de
Modifier.Node
(I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589). - Se agregó en la propiedad semántica
IsContainer
en plataformas. Esta propiedad se usará en un cambio posterior que determina el orden de recorrido en función del significado semántico de los elementos, como las plataformas (I63379). - Se agregó el nuevo rol de accesibilidad
DropdownList
. Se puede usar para replicar el comportamiento deTalkBack's
cuando se enfocaandroid.widget.Spinner
(I177e5, b/236159001). - Ahora puedes usar
PlatformTextStyle(emojiSupportMatch)
para inhabilitar de manera opcional el procesamiento de la compatibilidad con emojis para un solo párrafo (Ia7100, b/139326806). - Las pruebas de IU de Android Compose ahora ejecutarán pases de diseño para cada fotograma cuando se ejecuten fotogramas para quedar inactivos (p. ej., a través de
waitForIdle
). Esto puede afectar las pruebas que se confirman en fotogramas individuales de animaciones de diseño (I8ea08, b/222093277). - Se agregó
TextMotion
experimental aTextStyle
para definir texto comoStatic(default)
o animado. UsaTextMotion.Animated
si el texto se va a ajustar, traducir o rotar a través de la animación (I24dd7).
Cambios en la API
- 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). - Se quitó el constructor de fuentes experimentales obsoleto (I8a724, b/261435386).
- La clase de datos de herramientas de IU
Group
ahora tiene un campo,isInline
, que indica si el grupo es para una llamada a una función de componibilidad intercalada. SiisInline
estrue
, la llamada se realiza a una función de componibilidad intercalada. Sin embargo, el valor puede ser falso para llamadas a funciones de componibilidad intercaladas que provienen de módulos que se compilan con una versión del complemento del compilador de Compose que no genera la información de la función intercalada (Idb846). - Varias APIs que antes eran experimentales pasaron a niveles estables.
- La API de Rotary Scroll Event ahora es estable (I42ad3, b/261561229).
- La API de
FontVariation
ahora es estable (I8779f, b/241016309). - Todos los constructores
Font()
ahora son APIs estables (I5948b, b/261435386). DeviceFontFamilyName
ahora es estable (I8b640, b/261435386).- 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). - La API de
createFontFamilyResolver
ahora es estable. Se puede usar para detectar excepciones no detectadas durante la carga asíncrona de fuentes (Ibb481, b/261435386). - La API de
Font.loadingStrategy
ahora es estable (I5937c, b/261435386). - La API de
GoogleFont
ahora es estable (Ic90b0, b/261435386). TextUnit(float, TextUnitType)
ahora es una API estable (I90c84, b/261561612).pluralStringResource
ahora es una API estable (I09849, b/261439703).
Versión 1.4.0-alpha03
7 de diciembre de 2022
Se lanzó androidx.compose.ui:ui-*:1.4.0-alpha03
. La versión 1.4.0-alpha03 contiene estas confirmaciones.
Cambios en la API
- Se quitó
ExperimentalComposeUiApi
dePointerIcon
(I23af8). - 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 actualizó la vista del parámetro
rememberNestedScrollConnection
de la vista raíz a la vista de host (Ia5200). - 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 cambió el nombre de
CompositingStrategy.Always
porOffscreen
para indicar quegraphicsLayer
siempre se renderizará en un búfer intermedio (I47dc1). - Se estabilizó la sobrecarga de diseño con varias ranuras de contenido (I10566, b/248294649).
- Se agregaron las nuevas APIs experimentales
PerfettoTrace.record {}
yPerfettoTraceRule
para capturar los registros de Perfetto (también conocidos como Registros del sistema) como parte de una prueba, para inspeccionar el comportamiento y el rendimiento de la misma (I3ba16). - 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 agregó EmojiCompat a Compose (Ibf6f9, b/139326806).
- Se agregó un nuevo parámetro de fondo de pantalla a
@Preview
para admitir colores dinámicos (I9f512).
Correcciones de errores
- Las notificaciones de aplicación de instantáneas ahora se envían después de que
Recomposer
termina de aplicar los cambios (Iad6c0, b/222093277). - Se introdujeron cambios en
captureToImage
para permitir la captura de pantalla multiventana. Esto es útil para las pruebas de captura de pantalla que usan ventanas emergentes de Compose (I169c5).
Actualizaciones de dependencias
- La IU de Compose y Compose Material ahora dependen de Lifecycle 2.5.1. (I05ab0, b/258038814).
Versión 1.4.0-alpha02
9 de noviembre de 2022
Lanzamiento de androidx.compose.ui:ui-*:1.4.0-alpha02
. La versión 1.4.0-alpha02 contiene estas confirmaciones.
Cambios en la API
- Se actualizó
GraphicsLayerScope
para exponer el tamaño actual degraphicsLayer
. Esto es útil para calcular las transformacionesgraphicsLayer
como una función del tamaño componible. (If8c43,b/181387080) - Se agregó
CompositingStrategy
para determinar cuándo aprovechar una capa de composición fuera de la pantalla para procesar contenidographicsLayer
. Mantiene automáticamente el comportamiento predeterminado que aprovecha internamente una capa si se aplica alfa oRenderEffect/Overscroll
Siempre se introducirá un búfer fuera de pantalla en el queModulateAlpha
evitará aprovechar un búfer fuera de pantalla y, en su lugar, modulará cada una de las instrucciones de dibujo registradas dentro degraphicsLayer
. El uso deModulateAlpha
seguirá aprovechando un búfer fuera de la pantalla para usos deRenderEffect/Overscroll
. (I25e82, b/256382834) - Se agregó
invalidateSubtree()
aModifier.Node
para permitir la invalidación de jerarquías completas para el diseño y el dibujo. (I4bd90) - Se asciende
rememberNestedScrollInteropConnection
a estable. Se introdujo la capacidad de pasar una vista raíz arememberNestedScrollInteropConnection
. Esto puede ayudar a que la vista personalizada reaccione mejor a las restricciones de desplazamiento, especialmente en las vistas no estándar (p. ej.,ModalBottomSheetDialog
). (I9e107) - Se agregó la interfaz de
ObserverNode
que se pueden usar las implementaciones deModifier.Node
que deben notificarse cuando haya cambiado un valor que hayan leído anteriormente. (I5728b, b/247716483) - Se agregó un nuevo constructor a
Paint
que acepta unandroid.graphics.Paint
nativo. También se agregó una función de extensióntoComposePaint()
que convierte un objeto Paint nativo existente en Compose Paint. (Ica91b) - Se agregó un
FontFamily.Resolver.resolveAsTypeface
nuevo para usar en Android. (I8950b) - Se agregó
ToolingState
para permitir que las herramientas cambien los estados internos de Compose (Ie6614). - Se refactorizaron las herramientas para tener una mejor compatibilidad con las nuevas animaciones agregadas. (I8677b)
- Se agregó el parámetro
minLines
al texto de Material y Material 3,TextField
yOutlinedTextField
, que permiten establecer la altura mínima del componente en términos de cantidad de líneas (I4af1d).
Versión 1.4.0-alpha01
24 de octubre de 2022
Lanzamiento de androidx.compose.ui:ui-*: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 dio de baja el reciclaje de objetos de accesibilidad en AndroidX. Detectamos que los cambios en el rendimiento son insignificantes, incluso en las versiones compatibles más antiguas. (I0a961)
- Se agregó
DrawStyle
como atributo experimental aTextStyle
ySpanStyle
para habilitar el dibujo de texto con contorno. (If24b8, b/155421273) AnnotatedString.Builder
ahora implementakotlin.text.Appendable
. (I1a061, b/231030444)AnnotatedString.Builder
ahora tiene un métodoappend(AnnotatedString, start: Int, end: Int)
para agregar una substring de unAnnotatedString
y los estilos de intersección.- Se agregó el parámetro
DrawStyle
a las funciones de pinturaParagraph
yMultiParagraph
que habilita el dibujo de texto con contorno. (Ic8102, b/155421273)
Contribución externa
- Gracias por
vighnesh
, por agregar dispositivos de TV a las vistas previas (Ie15cd).
Versión 1.3
Versión 1.3.3
11 de enero de 2023
Se lanzó androidx.compose.ui:ui-*:1.3.3
. La versión 1.3.3 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió una falla que a veces se producía en Android 9 cuando Activity guardaba el estado de Compose View (I0b755, b/260322832).
Versión 1.3.2
7 de diciembre de 2022
Lanzamiento de androidx.compose.ui:ui-*:1.3.2
. La versión 1.3.2 contiene estas confirmaciones.
Correcciones de errores
- Se actualizó para usar Profobuf 3.21.8, lo que evita una alerta de seguridad en
protobuf-javalite:3.19.4
(CVE-2022-3171) (b/255545055).
Versión 1.3.1
9 de noviembre de 2022
Lanzamiento de androidx.compose.ui:ui-*:1.3.1
. La versión 1.3.1 contiene estas confirmaciones.
Versión 1.3.0
24 de octubre de 2022
Lanzamiento de androidx.compose.ui:ui-*:1.3.0
. La versión 1.3.0 contiene estas confirmaciones.
Cambios importantes desde 1.2.0
- Nuevo paquete de API experimental
LookaheadLayout
(que habilita comportamientos de animación que antes eran imposibles) - Nuevo paquete de API experimental
Modifier.Node
(alternativa de mayor rendimiento en comparación conModifier.composed
) - Compatibilidad con las inserciones de ventana mejorada
- Enfoque en la compatibilidad con pads direccionales y teclados de hardware en LazyLists
- La elevación máxima admitida en diálogos y ventanas emergentes se redujo a 8 dp (cambio rotundo en el comportamiento para algunos sistemas de diseño personalizados; lógica en las notas de la versión beta01)
- Muchas mejoras menores y continuas en la API
- Varias correcciones de errores y mejoras de rendimiento
Versión 1.3.0-rc01
5 de octubre de 2022
Lanzamiento de androidx.compose.ui:ui-*:1.3.0-rc01
. La versión 1.3.0-rc01 contiene estas confirmaciones.
Cambios en la API
- Se agregaron nuevos guiones experimentales de API para admitir la separación silábica automática en Text (Iaa869).
Correcciones de errores
- Las fuentes
DeviceFontFamilyName
no configuraránwght
ni hará variaciones enital
de los parámetros predeterminados, sino que usarán la configuración de la plataforma paraTypeface
cargados (Ia7a6d, b/246989332). - Se corrigió la fuga de memoria de
LazyColumn
en la que no se llamaba aonModifierLocalsUpdated
con el valor predeterminado cuando se reutilizaban los modificadores (b/230168389).
Versión 1.3.0-beta03
21 de septiembre de 2022
Lanzamiento de androidx.compose.ui:ui-*: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).
- Se cambió el argumento
size:IntSize
conconstraints: Constraints
en el métodoTextMeasurer.measure
para admitir restricciones de ancho mínimo (I37530, b/242707525).
Correcciones de errores
- La API de
BackHandler
de AndroidX Activity ahora funciona dentro de un elementoDialog
componible (I35342).
Versión 1.3.0-beta02
7 de septiembre de 2022
Lanzamiento de androidx.compose.ui:ui-*:1.3.0-beta02
. La versión 1.3.0-beta02 contiene estas confirmaciones.
Cambios en la API
- Se agregó una sobrecarga experimental para Layout que acepta una lista de varias lambdas de contenido componible. Esto permite vincular mediciones en diferentes lambdas de contenido (Ic1b4e).
Cambios en las APIs experimentales de Focus:
FocusDirection.In
yFocusDirection.Out
dejaron de estar disponibles y se reemplazaron porFocusDirection.Enter
yFocusDirection.Exit
(Ia4262, b/183746982).- Se agregaron dos nuevas propiedades de enfoque de entrada y salida para especificar un comportamiento personalizado para
FocusManager.moveFocus(Enter)
yFocusManager.moveFocus(Exit)
(I5f3f9, b/183746982). - Ahora puedes usar
FocusRequester.Cancel
para cancelar un movimiento de enfoque.FocusRequester.Cancel
se puede usar en cualquiera de las siguientes propiedades de enfoque: arriba, abajo, izquierda, derecha, siguiente, anterior, inicio, finalización, entrada y salida (Ib300f).
Versión 1.3.0-beta01
24 de agosto de 2022
Se lanzó androidx.compose.ui:ui-*:1.3.0-beta01
. La versión 1.3.0-beta01 contiene estas confirmaciones.
Refactorización del nodo modificador
Se refactorizó en gran medida la capa que controla las instancias de Modifier/Modifier.Element
y coordina su comportamiento en LayoutNodes
. Tal como está, esta fue una refactorización que no afectó a la API pública de ninguno de los numerosos modificadores de Compose y se puede considerar un cambio solo de implementación. A pesar de eso, este es un cambio importante por varios motivos (Ie4313).
Resumen de cambios
Las APIs experimentales de Modifier.Node
agregadas proporcionan una abstracción que permite mantener el estado en una instancia que se conservará con el ciclo de vida del nodo de diseño y se asignará por nodo de diseño y por uso del Modifier.Element
correspondiente que lo produjo.
En términos generales, esta abstracción proporciona un mecanismo alternativo para producir modificadores con estado sin depender de la mecánica de la API de Modifier.composed
.
Riesgo
Este cambio es estrictamente binario y compatible con versiones anteriores, y está pensado para ser retrocompatible en términos de comportamiento observable tanto como sea práctico y razonable. Dicho esto, hay pocos subsistemas de Compose que esta refactorización no tocó y es probable que el comportamiento haya cambiado de maneras que no fueron cubiertas por nuestras pruebas y que aún no se han encontrado ni corregido.
Actualiza a esta versión con precaución. Si crees que esto haya producido fallas en tu caso, avísanos.
APIs experimentales
Se agregaron varias APIs experimentales que se relacionan con el concepto nuevo de "nodo modificador". Los Modifier.Node se crean como resultado de lo siguiente:
fun modifierElementOf(…): Modifier
abstract class ModifierNodeElement
abstract class Modifier.Node
abstract class DelegatingNode
interface LayoutModifierNode
interface DrawModifierNode
interface SemanticsNode
interface PointerInputNode
interface ModifierLocalNode
interface ParentDataModifierNode
interface LayoutAwareModifierNode
interface GlobalPositionAwareModifierNode
interface IntermediateLayoutModifierNode
Cambio rotundo de comportamiento
La elevación máxima admitida en los diálogos y las ventanas emergentes se redujo a 8 dp.
La elevación máxima admitida para los diálogos y las ventanas emergentes de Compose se redujo de 30 dp a 8 dp. Este cambio afecta a los diálogos personalizados y a las ventanas emergentes de IU y Material. Este cambio se realiza para mitigar un error de accesibilidad en las versiones de Android anteriores a S y garantizar que los servicios de accesibilidad de esas ventanas puedan interactuar con el contenido dentro del diálogo o la ventana emergente.
Este cambio solo te afectará si creas un diálogo personalizado o una implementación de ventana emergente con una elevación establecida en niveles superiores a 8 dp. Puedes bajar la elevación del diálogo o la ventana emergente. Si quieres rechazar este nuevo comportamiento, bifurca tu propio diálogo o ventana emergente con la configuración de elevación deseada. Esto no se recomienda, ya que la accesibilidad podría verse afectada negativamente y es responsabilidad del desarrollador asegurarse de que la parte inferior del diálogo o la ventana emergente sea interactiva y legible con los servicios de accesibilidad.
Cambios en la API
- Se solucionó un problema por el que
painterResource
no se actualizaba con los cambios de configuración (I58e73, b/228862715). rememberTextMeasurer
ya no toma los parámetrosFontFamily.Resolver
,Density
niLayoutDirection
. Usa el constructorTextMeasurer
a fin de proporcionar valores personalizados para estos parámetros (Ia1da3).- Se agregó la propiedad
DialogProperties.decorFitsSystemWindows
para permitir que Dialogs sea compatible conWindowInsets
(I57742, b/229378542). - Se revirtieron los constructores de fuente al archivo Kotlin original para conservar la compatibilidad binaria. Sin cambios desde la última versión estable (Ieb2f3).
- Se quitó el operador innecesario de varias definiciones de igualdad; esto no tiene efecto (I6c309).
FontVariation.Setting
es una interfaz sellada para permitir futuras APIs de restricciones (I11021, b/143703328).- Se agregó
CompositionGroup.findParameters
aSlotTree.kt
. Esto permite que las herramientas recuperen parámetros para unCompositionGroup
sin tener que analizar toda la tabla de ranuras (I124fe).
Versión 1.3.0-alpha03
10 de agosto de 2022
Lanzamiento de androidx.compose.ui:ui-*:1.3.0-alpha03
. La versión 1.3.0-alpha03 contiene estas confirmaciones.
Cambios en la API
LayoutCoordinates.findRootCoordinates()
ahora es público (I7fa37, b/204723384).- Se agregó una API experimental para obtener
LayoutCoordinates
enPlacementScope
. Esto permite a los desarrolladores saber dónde se encuentra el diseño actual para colocar los elementos secundarios en relación con su posición (I5482b, b/238632578). - Se agregó
LayoutCoordinates.transformFrom
para obtener la transformación de Matrix de unaLayoutCoordinates
a otra (Ic5ab1, b/238632578). SemanticsModifier.id
dejó de estar disponible y, en su lugar, se movió el ID de semántica aLayoutInfo.semanticsId
(Iac808, b/203559524).- Las fuentes de recursos ahora admiten la configuración de variaciones de fuentes (nivel de API 26 o versiones posteriores) (I900dd, b/143703328).
- Compatibilidad con fuentes variables en
DeviceFontFamilyNameFont
(Ic1279, b/143703328). - Los constructores de fuentes ahora aceptan una lista de
FontVariation.Setting
para configurar fuentes variables en dispositivos O+ (I11a9d, b/143703328). - Se agregó la API de
FontVariation
para definir y usar fuentes variables (I3c40c, b/143703328). - El constructor
LineHeightStyle.Alignment
ahora es público (experimental) (I4bbbe, b/235876330). - Ahora, el párrafo es esperado|real y se define para Android y computadoras de escritorio (Id387e, b/239962983).
- Ahora, el párrafo de interfaz es una interfaz sellada de Paragarph. No existe un caso de uso para la creación de subclases de párrafos, y te recomendamos que te comuniques con nosotros si este cambio te afecta (If5247, b/239962983).
- Se quitó la anotación experimental de
PlatformTextStyle
yLineHeightStyle
(I64bef). 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).- Se agregó una API nueva para los tipos de animación existentes (I26179).
Correcciones de errores
- Se agregó
@RequiresPermission
a las APIs que requieren que se otorgue el permisoPOST_NOTIFICATIONS
en SDK 33 y versiones posteriores (Ie542e, b/238790278).
Versión 1.3.0-alpha02
27 de julio de 2022
Lanzamiento de androidx.compose.ui:ui-*:1.3.0-alpha02
. La versión 1.3.0-alpha02 contiene estas confirmaciones.
Cambios en la API
- Se agregó una nueva propiedad
PointerInputChange#pressure
para recuperar la presión (I45a5e, b/205164819). - Se agregó
rememberTextMeasurer
para crear y recordar instancias deTextMeasurer
con facilidad en la composición (I8d66e). Rect
,RoundRect
yMutableRect
ahora admiten la sintaxisin
de Kotlin para llamar a la funcióncontains
(Ie42b0, b/238642990).- Se quitaron las funciones innecesarias de
KeyInjectionScope
, ya que se pueden implementar fácilmente con partes más simples de la API. Las funciones que se quitaron incluyenpressKeys
,keysDown
ykeysUp
(I81d77). - Se refactorizaron nombres de constantes y parámetros de
KeyInjectionScope
para incluir el sufijo "Millis", donde las unidades de esos parámetros y constantes son milisegundos (Iabef5). - Se agregó el método
toStringForLog()
aEditCommand
para ayudar a solucionar problemas de edición de texto (I53354, b/228862731). - 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). - Presentamos una nueva API experimental llamada
TextMeasurer
que habilita el cálculo de diseño de texto arbitrario que crea resultados idénticos aBasicText
, independientemente del entorno de ejecución de Compose (I17101). - Se agregó
mapTree
aSlotTree.kt
Esto permite que las herramientas inspeccionen elSlotTree
sin hacer primero una copia en la memoria, como lo hace asTree. Para el Inspector de diseño, esto mejora el rendimiento en aproximadamente un factor 10 (I5e113). - Se cambió la vista previa de Compose para que se almacene en archivos de salida binarios para permitir que los desarrolladores escriban y reutilicen anotaciones
MultiPreview
de bibliotecas (I85699, b/233511976).
Correcciones de errores
- Cuando se agreguen eventos
InputEventChange
aVelocity
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). - Se corrigió la NPE generada por
AnnotatedString.toUpperCase
cuando hay anotaciones (I0aca2, b/210899140).
Versión 1.3.0-alpha01
29 de junio de 2022
Se lanzó androidx.compose.ui:ui-*:1.3.0-alpha01
. La versión 1.3.0-alpha01 contiene estas confirmaciones.
Cambios en la API
- Nuevo objeto
LookaheadLayout
que admite un pase anticipado antes del diseño o la medición real. Esto permite realizar un cálculo previo del diseño cuando cambia y, al mismo tiempo, permite que la medición o el diseño posvisualización use el tamaño o la posición previamente calculados para animar el tamaño y las posiciones hacia el objetivo.SubcomposeLayouts
todavía no son compatibles, pero lo serán en una próxima versión (I477f5). - Se agregó el parámetro alfa opcional al tipo de pincel de
TextStyle
ySpanStyle
para modificar la opacidad de todo el elementoText
(Ic2fac, b/234117635). - Se introdujo el tipo de anotación
UrlAnnotation
y los métodos asociados para admitir la compatibilidad con vínculosTalkBack
enAnnotatedString
(I1c754, b/231495122). - Se migró la funcionalidad de la utilidad al entorno de ejecución (I4f729).
Correcciones de errores
- No se arroja
TextLayoutResult.getLineForOffset
(Idc5d6, b/235876324).
Contribución externa
- Se agregó una nueva API de
WindowInfo.keyboardModifiers
para observar su estado dentro de funciones de componibilidad o a través de snapshotFlow (Icdb8a).
Versión 1.2
Versión 1.2.1
10 de agosto de 2022
Lanzamiento de androidx.compose.ui:ui-*:1.2.1
. La versión 1.2.1 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un valor nulo en el inspector (b/237987764).
- Se corrigió la excepción de transmisión de clase durante la recuperación en el inspector (b/235526153).
Versión 1.2.0
27 de julio de 2022
Lanzamiento de androidx.compose.ui:ui-*:1.2.0
. La versión 1.2.0 contiene estas confirmaciones.
Cambios importantes desde la versión 1.1.0
Mejoras en el recorrido del foco:
- El desplazamiento basado en el foco de las listas diferidas ahora funciona con la nueva API principal de
BeyondBoundsLayout
- Nuevas APIs de personalización de comportamiento en
FocusOrder
yFocusProperties
- Comportamiento mejorado con el teclado físico o el control remoto de la TV
- El desplazamiento basado en el foco de las listas diferidas ahora funciona con la nueva API principal de
Nuevas APIs para lo siguiente:
- Inserción de ventana
- Primitivas básicas para animaciones infinitas, de diseño y controladas por gestos
- Capacidades de
GraphicsLayer
, lo que incluyeRenderEffect
Varias correcciones de errores y mejoras de rendimiento
Versión 1.2.0-rc03
29 de junio de 2022
Se lanzó androidx.compose.ui:ui-*:1.2.0-rc03
. La versión 1.2.0-rc03 contiene estas confirmaciones.
- No hay cambios desde la versión 1.2.0-rc02.
Versión 1.2.0-rc02
22 de junio de 2022
Se lanzó androidx.compose.ui:ui-*:1.2.0-rc02
. La versión 1.2.0-rc02 contiene estas confirmaciones.
Versión 1.2.0-rc01
15 de junio de 2022
Se lanzó androidx.compose.ui:ui-*:1.2.0-rc01
. La versión 1.2.0-rc01 contiene estas confirmaciones.
Cambios en la API
- Las interfaces en las bibliotecas de Compose ahora se compilan con métodos de interfaz predeterminados de jdk8 (I5bcf1).
- Se agregaron funciones de orden superior a
KeyInjectionScope
para insertar pulsaciones de teclas mientras otras teclas se mantienen presionadas o activadas. Estas funciones incluyenwithKeysDown
,withKeysToggled
, etc. También se agregaron propiedades para comprobar si una tecla meta específica está inactiva (por ejemplo,isCtrlDown
) para verificar si se dejó de presionar alguna de las teclas de control. ConsultaKeyInjectionScope
para ver la documentación de cada función (I9f6cd, b/229831515). - 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). - Se cambió el nombre de
runComposeUiTestWithoutActivity {}
porrunEmptyComposeUiTest {}
, para que quede alineado concreateEmptyComposeRule()
(I6fed7).
Versión 1.2.0-beta03
1 de junio de 2022
Se lanzó androidx.compose.ui:ui-*:1.2.0-beta03
. La versión 1.2.0-beta03 contiene estas confirmaciones.
Cambios en la API
- Se agregaron
pressKeyTimes
,isCapsLockOn
y amigos aKeyInjectionScope
. Además, la API ahora admite patrones de inyección combinados del mouse y el teclado, como hacer clic con el botón del mouse y presionar una tecla meta a la vez (I4c8da, b/229831515). - Se agregó compatibilidad experimental para insertar eventos clave. Usa
performKeyInput
para enviar eventos clave o envíalos a través de la propiedadkey
deMultiModalInjectionScope
durante un gesto de entrada multimodal conperformMultiModalInput
. ConsultaKeyInjectionScope
para ver la documentación disponible de la API (Ic5000, b/229831515). - Se agregó un nuevo
GoogleFont.Provider.AllFontsListUri
para recuperar la fuente de Internet canónica de Google Fonts compatible con Android. - Se mejoraron los mensajes de error que se producían cuando Google Fonts no se cargaba en Compose (I0416c).
Correcciones de errores
- Cuando se agregan 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 (I51ec3, b/216582726, b/223440806, b/227709803). - Ahora, el parámetro de configuración
Show Layout Bounds
se aplicará a los elementos componibles inmediatamente después de activar o desactivar la tarjeta de configuración rápida, sin tener que salir de la actividad y volver a ingresar. (I843d5, b/225937688). - La búsqueda de strings de accesibilidad no activa la carga de fuentes. Antes, intentaba cargar fuentes para
StyleSpans
, lo que provocaba fallas si se reemplazabaFontFamily.Resolver
(I4609d). - 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.ui:ui-*:1.2.0-beta02
. La versión 1.2.0-beta02 contiene estas confirmaciones.
Cambios en la API
- Se volvió a implementar la funcionalidad en otros tipos de vista previa (I19f39).
Correcciones de errores
- Se cambió el nombre de
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
porDisposeOnDetachedFromWindowOrReleasedFromPool
para reflejar mejor cuando se producen las eliminaciones, en lugar de solo cuando no se producen (If15ca).
Versión 1.2.0-beta01
11 de mayo de 2022
Lanzamiento de androidx.compose.ui:ui-*: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 las implementaciones personalizadas deLazyList
pueden utilizar cuando diseñan elementos que superan los límites visibles (Ifabfb, b/184670295). - Las versiones con clave de
Modifier.composed
ahora son una API estable (Ie65e4, b/229988420). - Se simplificó la API de
rememberNestedScrollConnection
para usar configuraciones regionales de composición y adquirir información sobre la vista actual (I67ca7). - La anotación
@ComposableTarget
y las anotaciones marcadas por@ComposableTargetMarker
ahora se pueden usar en el alcance del archivo con el prefijo@file
. El uso de una anotación de destino en el alcance del archivo hará que el compilador asuma que todas las funciones que admiten composición en el archivo deben orientarse al aplicador asociado. Por ejemplo, el uso de@file:UiComposable
declara que todas las funciones@Composable
están orientadas al aplicador de la IU de Compose. Una función que necesita orientarse a otro aplicador debe proporcionar explícitamente la anotación del marcador de destino para el aplicador deseado (I40804). Agregamos una nueva API experimental, independiente de la plataforma, de prueba: una
interface ComposeUiTest
y unafun runComposeUiTest(block: ComposeUiTest.() -> Unit)
, que se pueden usar para ejecutar pruebas de IU de Compose sin la necesidad de usarTestRule
. Para ejecutar una prueba sin unaComposeTestRule
, pasa la prueba como una lambda arunComposeUiTest
y usa los métodos y los miembros en laComposeUiTest
del alcance del receptor, que son los mismos que enComposeContentTestRule
.Se agregan
interface AndroidComposeUiTest
yfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
específicos de Android para brindar acceso a la actividad subyacente, similar aAndroidComposeTestRule
. Para obtener aún más control, puedes crear una instancia declass AndroidComposeUiTestEnvironment
.La implementación para computadoras de escritorio es la
class DesktopComposeUiTest
, pero, por el momento, no se ofrecen funciones de ejecución específicas para computadoras.La migración de una prueba de
ComposeTestRule
aComposeUiTest
se puede hacer de esta manera (ejemplo de Android). De:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }
A:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }
Por ahora,
ComposeContentTestRule
yComposeTestRule
no se extienden desdeComposeUiTest
, lo que significa que aún no se puede llamar a las funciones de extensión enComposeUiTest
en la interfazTestRule
. CuandoComposeUiTest
cambie a una API estable, se cambiaránComposeContentTestRule
yComposeTestRule
para extenderse deComposeUiTest
(Ib4e90).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 agregó
Brush
aTextStyle
ySpanStyle
para proporcionar una manera 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 de
trimFirstLineTop
ytrimLastLineBottom
funcionan correctamente solo cuandoincludeFontPadding
es falso (I97332, b/181155707).Se cambiaron las funciones
PlatformParagraphStyle.lerp
yPlatformSpanStyle.lerp
para que sean de nivel superior (I9a268).
Correcciones de errores
- La documentación de
PointerInputChange::copy
ahora indica correctamente que es una copia superficial (I182f5). - Se admite elipsis cuando la altura es limitada y no cabe en todas las líneas de texto (Ie528c, b/168720622).
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).
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
Se lanzó androidx.compose.ui:ui-*:1.2.0-alpha08
. La versión 1.2.0-alpha08 contiene estas confirmaciones.
Cambios en la API
- Las funciones
pluralStringResource
se marcaron como experimentales para permitir que la evolución apoye una mejor internacionalización en el futuro (If24e4). - Paragraph y MultiParagraph ahora aceptan el parámetro Constraints. Pasar
Constraints.maxHeight
es una no-op en este momento, pero te permitirá hacer algunos cálculos en el futuro, como la elipsis según la altura (I6afee, b/168720622). SubcomposeSlotReusePolicy.getSlotsToRetain()
ahora acepta una clase personalizada similar a MutableSet que no permite agregar elementos nuevos en ella (Icd314).- PointerIcon ahora es una interfaz
@Stable
(I9dafe). - 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).- Habilita la interoperabilidad de desplazamiento anidada entre Compose y View en la dirección Compose > View. Esto significa que un elemento superior de composición podrá recibir deltas de desplazamiento anidados desde una vista de desplazamiento anidada (If7949, b/174348612).
- Se agregó el nuevo
SemanticsProperty testTagsAsResourceId
, que se puede usar para que Compose cumpla con las pruebas de UIAutomator diseñadas para el sistema de View (I39c20). - 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). - Los instructores de Paragraph y Multiparagraph reordenaron los argumentos de posición antes de los argumentos opcionales (Idafaa).
AndroidFont
ahora toma typefaceLoader como parámetro de constructor (I2c971).
Versión 1.2.0-alpha07
6 de abril de 2022
Lanzamiento de androidx.compose.ui:ui-*:1.2.0-alpha07
. La versión 1.2.0-alpha07 contiene estas confirmaciones.
Cambios en la API
- Se agregó la nueva función
Snapshot.withoutReadObservation { ... }
. Permite que los usuarios ejecuten la lambda pasada sin suscribirse a los cambios de los valores de estado leídos durante este bloque. Puede resultarte útil en los casos de uso en los que quieres aprovechar las escrituras y lecturas con protección de subprocesos basadas en instantáneas, pero también deseas poder leer el valor sin causar nuevas composiciones o mediciones innecesarias (I9f365, b/214054486). - La propiedad de extensión
consumeWindowInsets
deComposeView
permite a los desarrolladores inhabilitar el consumo de AndroidWindowInsets
. Esto permite queComposeViews
independientes en la jerarquía apliquenWindowInsets
sin interferir entre sí (I0ef08, b/220943142). - Se agregó
KeyboardType.Decimal
como alternativa aKeyboard.Number
para incluir específicamente un separador decimal en IME (Iec4c8, b/209835363). PointerEventType.Scroll
yPointerEvent.scrollDelta
ahora son API estables (I574c5, b/225669674).- Se habilitó la interoperabilidad de desplazamiento anidado entre View y Compose para clases de View que cooperan. Esto significa que Compose ahora puede despachar deltas de desplazamiento a un elemento superior de View (que coopera) (I5d1ac, b/174348612).
- Se actualizó
FontFamily.Resolver
para integrar la configuración de accesibilidad de texto en negrita en todo el sistema (I6c1e7). Font(AssetManager, String, ...)
dejó de estar disponible y se reemplazó porFont(String, AssetManager, ...)
. Esta es una API experimental (I1c7a4).- Se agregó un nuevo descriptor de fuente
Font(DeviceFontFamilyName)
para buscar fuentes instaladas en el sistema de forma opcional durante las cadenas de resguardo de fuentes (I30468, b/219754572). - Se agregó una configuración de compatibilidad temporal para
includeFontPadding
en TextStyle/ParagraphStyle.includeFontPadding
se puede cambiar medianteTextStyle(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 agregó la extensión
GoogleFont.Provider.isAvailableOnDevice
para ayudar con la depuración (I64e31). - Se agregó el constructor
GoogleFont.Provider
para su uso con@ArrayRes
(Ic5ee1, b/225984280). Compose GoogleFont
ahora se llamaFont(GoogleFont)
; de lo contrario, la API permanece estable (I125f2).
Correcciones de errores
- Se agregó una comprobación de lint a material/Scaffold para garantizar que se use el padding interno (Ifb111).
Versión 1.2.0-alpha06
23 de marzo de 2022
Lanzamiento de androidx.compose.ui:ui-*: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). - 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). Se actualizaron los colores de sombras y ambientes con el objetivo de que sean parámetros finales de
Modifier.graphicsLayer
para la compatibilidad de la API (I3f864, b/160665122).Se agregaron implementaciones predeterminadas al color de sombra o ambiente en
GraphicsLayerScope
para garantizar que no se produzcan cambios de API rotundos.Se agregó la hora del evento a eventos RSB (Ief8ae).
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).La actualización de
RecyclerView
yCompose
ahora dará como resultado un rendimiento de desplazamiento mucho mejor para RecyclerViews con vistas de Compose como elementos secundarios.Se agregó
ViewCompositionStrategy.Default
como medio para recuperar la estrategia predeterminada integrada.Se agregó
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
, que es la nueva estrategia predeterminada y controla de forma correcta los contenedores de agrupación, como RecyclerView (If7282).Se agregó compatibilidad para anotar clases de anotaciones con @Preview como primer paso para incorporar la función de vista previa. Estas anotaciones se pueden usar para anotar métodos componibles u otras clases de anotaciones, que luego se podrían considerar anotaciones indirectas con el objeto @Preview determinado (I12eff).
Se agregaron dispositivos de referencia a la lista Dispositivos de @Preview (I071c9).
Correcciones de errores
- Se actualizaron las APIs de gráficos vectoriales para usar la anotación componible correcta @VectorComposable en lugar de @UiComposable (I942bc).
- Se quitó crossinline de
AnnotatedString.Builder.withStyle
(If84d5).
Contribución externa
- compose-ui: Se agregaron las propiedades
ambientShadowColor
yspotShadowColor
aGraphicsLayerScope
+ (I1ba1a, b/160665122). - Los recursos plurales ahora son compatibles con las funciones
pluralStringResource
(Ib2f23, b/191375123).
Versión 1.2.0-alpha05
9 de marzo de 2022
Lanzamiento de androidx.compose.ui:ui-*:1.2.0-alpha05
. La versión 1.2.0-alpha05 contiene estas confirmaciones.
Cambios en la API
TextToolbar
ahora toma argumentos lambda en lugar deActionCallback
(Ib2eb9, b/197950089).- Se actualizó la nulabilidad en core y appcompat para que coincida con Tiramisu DP2 (I0cbb7).
- La interfaz de Measured ahora expone la propiedad parentData (I3313f).
Modifier.onPlaced
y la interfazOnPlacedModifier
ahora son estables (Ib5482).- ¡Hip, hip, hurra! La animación de Compose ahora permite configurar la "Escala de duración de animador" desde las Opciones para desarrolladores (I5a4fc, b/161675988).
- Se agregó un modificador
BeyondBoundsLayout
local (If8b51, b/184670295). - Texto: El elemento includeFontPadding está desactivado de forma predeterminada. Se controlaron los problemas de recorte como resultado de
includeFontPadding=false
y no se deberían producir recortes para secuencias de comandos altas (I31c84, b/171394808).
Correcciones de errores
ComposeContentTestRule.setContent
ahora arrojará unaIllegalStateException
si intentas configurar contenido cuando ya existe contenido (I888a5, b/199631334).- Se corrigió la falla que causaba el contenido del portapapeles mientras se leía desde el portapapeles en Android (I06020, b/197769306).
- Se realizaron mejoras en las muestras de desplazamiento de RSB (I6a596).
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.ui:ui-*:1.2.0-alpha04
. La versión 1.2.0-alpha04 contiene estas confirmaciones.
Cambios en la API
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ónComposableTarget
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).Font(resId, ...)
ahora toma loadStrategy en una API estable (Ief3d2).FontLoadingStrategy
ahora es una API estable (I1ee35, b/174162090).Compatibilidad con la carga de fuentes asíncrona en Text (I77057, b/214587005).
Se agregó una API de puente para convertir
Font.ResourceLoader
personalizados enFontFamily.Resolver
(Ia0060).
Correcciones de errores
- Los
FontFamily.Resolver
proporcionados se pasan a subcomposiciones, como Popup. - Los
Font.ResourceLoader
proporcionados se pasan a subcomposiciones, como Popup (I48fa5).
Versión 1.2.0-alpha03
9 de febrero de 2022
Lanzamiento de androidx.compose.ui:ui-*:1.2.0-alpha03
. La versión 1.2.0-alpha03 contiene estas confirmaciones.
Cambios en la API
- Los métodos
notifyFocusedRect
deTextInputSession
yTextInputService
dejaron de estar disponibles y no se los llamará. En su lugar, usaBringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874). - Se agregó el método
destroyDisplayListData
en la clase stub deRenderNode
(I1e659, b/216660268). - Se agregó una nueva API que permite realizar una medición previa de los elementos secundarios de
SubcomposeLayout
que ya creaste (I857ea). Se agregó
movableContentOf
, que convierte una lambda componible en una que mueve su estado y los nodos correspondientes a cualquier ubicación nueva a la que se la llame. Cuando la llamada anterior sale de la composición, el estado se conserva de forma temporal y, si una llamada nueva a la lambda ingresa a la composición, el estado y los nodos asociados se mueven a la ubicación de la llamada nueva. Si no se agrega una llamada nueva, se quitará el estado de forma permanente y se notificará a los observadores.Si se llama a una lambda de
movableContentOf
varias veces en la misma composición, se crean nuevos estados y nodos para cada llamada. Además, a medida que las llamadas dejan la composición y entran en una nueva llamada, el estado se mueve desde las primeras llamadas salientes hasta las entrantes en el orden en que se llaman. Todo el estado que las llamadas nuevas no reclamen se quitarán permanentemente (Ib4850).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 agregó compatibilidad con la carga de fuentes asíncronas y opcionales, con comportamiento de resguardo. Text y TextField usan esta ruta, y se expone mediante FontFamilyResolver.
Se agregó compatibilidad con la carga previa de fuentes mediante
FontFamilyResolver.preload
.FontFamilyResolver.setAsyncLoadContext
permite configurar el contexto de corrutinas global que se usa para cargar fuentes asíncronas (I87fe8, b/174162090).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 de forma directa. Para agregar nuevos tipos de fuentes, consultaAndroidFont
.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).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).El constructor
SubcomposeLayoutState
que aceptamaxSlotsToRetainForReuse
dejó de estar disponible. En su lugar, hay un nuevo constructor que aceptaSubcomposeSlotReusePolicy
, una nueva interfaz que permite un control más detallado sobre qué ranuras se deben retener para la reutilización en el futuro. (I52c4d).Se expuso la función HSV y HSL en
Color
como API no experimental. El espacio de color de Oklab ahora es una API pública (I08fb6, b/180731008).El objeto
AndroidComposeTestRule.AndroidComposeStatement
dejó de estar disponible, ya que no estaba destinado a estar disponible en una API pública y no era de utilidad (Ibc46b).Se cambió el nombre de la clase kt que se genera internamente (Ia0b9e, b/174162090).
Se quitó
FontLoadingStrategy.values
(I42a9d, b/174162090).El cargador de fuentes global ahora se llama
FontFamilyResolver
(I4f773, b/174162090).Se usa el nuevo sistema de carga de fuentes para computadoras de escritorio (I9ce5c, b/174162090).
FontFamily.Resolver.resolve
muestraState<Any>
(I4406c, b/174162090).
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). - El tipo de entrada de teclado en pantalla ya no gira cuando se cambia el enfoque entre los campos de texto (I1bf50, b/187746439).
Versión 1.2.0-alpha02
26 de enero de 2022
Lanzamiento de androidx.compose.ui:ui-*:1.2.0-alpha02
. La Versión 1.2.0-alpha02 contiene estas confirmaciones.
Cambios en la API
- Se agregaron
Modifier.onRotaryScrollEvent()
yModifier.onPreRotaryScrollEvent()
para dispositivos Wear con un botón lateral que rota. (I18bf5, b/210748686) - Se agregó la extensión experimental
View.createLifecycleAwareRecomposer
. (I0cde6)
Contribución externa
- Ahora,
PointerEvent.scrollDelta.y
se invierte en Android (muestra 1 en lugar de -1 si se inclina la rueda del mouse hacia la derecha). (Ia9811)
Versión 1.2.0-alpha01
12 de enero de 2022
Lanzamiento de androidx.compose.ui:ui-*:1.2.0-alpha01
. La versión 1.2.0-alpha01 contiene estas confirmaciones.
Cambios en la API
FontFamily.canLoadSynchronously
quedó obsoleto. Esta propiedad no tiene significado semántico. (Ica5ef)- Se agregó el campo de identidad a
CompositionData
para generar IDs que no varían en el Inspector de diseño (Ic116e) - Se agregaron los IDs de dispositivos de Wear OS a la lista de dispositivos de vista previa (I93232).
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.ui:ui-*: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.ui:ui-*: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.ui:ui-*: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.ui:ui-*:1.1.0-rc01
. La versión 1.1.0-rc01 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un error que causaba acciones de desplazamiento de accesibilidad faltantes (I7cbfb).
SemanticsNodeInteraction.captureToImage()
ahora también funcionará siHardwareRenderer.isDrawingEnabled()
esfalse
, por lo que se habilitará durante la llamada. (Idf3d0)
Versión 1.1.0-beta04
1 de diciembre de 2021
Lanzamiento de androidx.compose.ui:ui-*: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 a los usuarios utilizar PointerInputchange en su totalidad o verificar si se consumió o no (I2e59d).
- Se agregó compatibilidad con eventos de rueda del mouse en la capa de IU (Ia14eb, b/198214718).
- Se agregaron sobrecargas experimentales de
Modifier.composed
que aceptan claves para comparar la igualdad y calificar en la optimización de omisión (Ice799, b/205851704). ComposeNotIdleException
ahora se extiende desdeException
, en lugar de hacerlo directamente desdeThrowable
. Ten en cuenta que esto significa que las cláusulas de captura que capturabanException
es posible que ahora detecten elementosComposeNotIdleException
, cuando antes no lo hacían (I9c217).
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
Lanzamiento de androidx.compose.ui:ui-*:1.1.0-beta03
. La versión 1.1.0-beta03 contiene estas confirmaciones.
Cambios en la API
- Se agregó el nuevo modificador Modifier.onPlaced para permitir que se observe el cambio de posición. Por lo tanto, se pueden realizar cambios adicionales en la compensación del modificador secundario a partir del cambio de posición observado (I558fd).
- Se quitaron
InjectionScope.flush()
yInjectionScope.dispose()
. El vaciamiento de todos los eventos y la eliminación del alcance ahora ocurren al final del método perform*Input() method al que se llama, como antes (I2bed8). - Se quitaron
MultiModalInjectionScope.Touch
yMultiModalInjectionScope.Mouse
. A fin de incorporar eventos táctiles y del mouse para los gestos multimodales, ahora puedes usarMultiModalInjectionScope.touch()
yMultiModalInjectionScope.mouse()
. Ambos aceptan una lambda que tiene el alcance del receptor de esa modalidad (Idde18).
Correcciones de errores
- El valor predeterminado para
durationMillis
enTouchInjectionScope.swipeWithVelocity
ahora se calcula de modo que el deslizamiento sea posible (I19deb).
Versión 1.1.0-beta02
3 de noviembre de 2021
Lanzamiento de androidx.compose.ui:ui-*:1.1.0-beta02
. La versión 1.1.0-beta02 contiene estas confirmaciones.
Cambios en la API
- 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).
- Nuevas APIs de Animation para herramientas de asistencia. Específicamente, permiten que las herramientas inspeccionen las animaciones y sus configuraciones en Transiciones (I4116e).
Contribución externa
- Se agregó Modifier.pointerHoverIcon. (I95f01)
Versión 1.1.0-beta01
27 de octubre de 2021
Lanzamiento de androidx.compose.ui:ui-*:1.1.0-beta01
. La versión 1.1.0-beta01 contiene estas confirmaciones.
Cambios en la API
- 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). - Nuevas APIs de Animation para herramientas de asistencia. Específicamente, permiten que las herramientas inspeccionen las animaciones y sus configuraciones en Transiciones (I4116e).
Versión 1.1.0-alpha06
13 de octubre de 2021
Lanzamiento de androidx.compose.ui:ui-*:1.1.0-alpha06
. La versión 1.1.0-alpha06 contiene estas confirmaciones.
Cambios en la API
- Se quitó
ExperimentalComposeUiApi
deViewRootForInspector
yLayoutInfo.ownerViewId
. (I5c2e3) - Se agregó una sobrecarga para Layout sin elemento secundario con eficiencia mejorada. (IB0d9a)
- Se quitó
InternalCompilerApi
de los métodos de Composer que deben llamarse entre módulos. (I1aa0b) SemanticsNodeInteraction.performSemanticsAction
ahora muestra laSemanticsNodeInteraction
en la que se llamó a la función. (I9e5db)- Se agregó LocalInputModeManager CompositionLocal para detectar TouchMode/NonTouchMode. (I6a83c, b/175899786)
- Se agregó
viewConfiguration: ViewConfiguration
aLayoutInfo
para permitir que los consumidores obtengan el valor correcto de cosas como el tiempo de espera de presión prolongada. (I76ca6)- Se agregó
viewConfiguration: ViewConfiguration
aInjectionScope
para permitir que las pruebas ajusten la inserción de entrada en función de parámetros como el tiempo de espera de presión prolongada o la inclinación táctil. - Se cambió la duración predeterminada de mantener presionado y presionar dos veces para la entrada táctil y del mouse, según los valores en
InjectionScope.viewConfiguration
.
- Se agregó
- Se implementó ExposedDropdownMenu basado en ExposedDropdownMenuBox con TextField y DropdownMenu dentro. (If60b2)
- Se agregó descarteOnOnsideClick a PopupProperties para reemplazar a descarteOnClickOutside, que dejó de estar disponible. La nueva propiedad recibe la posición del clic y los límites de anclaje, lo que brinda un control más preciso sobre si se debe invocar onDismissRequest o no. Por ejemplo, esto puede ser útil para evitar el descarte de anclajes al tocarlos.
- Se agregó updateAndroidWindowManagerFlags a PopupProperties, y ofrece un control de bajo nivel sobre las marcas que pasa la ventana emergente a WindowManager de Android. El parámetro de la lambda será las marcas calculadas a partir de los valores de PopupProperties que generen marcas de WindowManager (p. ej., enfocables). El resultado de la expresión lambda serán las marcas finales que se pasarán a Android WindowManager. De manera predeterminada, updateAndroidWindowManagerFlags dejará las marcas calculadas a partir de los parámetros sin modificar. Esta API se debe utilizar con precaución, solo en los casos en que la ventana emergente tenga requisitos de comportamiento muy específicos. (I6e9f9)
Recomposer.state
dejó de estar disponible y se reemplazó porRecomposer.currentState
para cambiar su tipo a StateFlow. (Ic2ab3, b/197773820)- Se agregaron
flush()
ydispose()
aInjectionScope
Úsalas cuando quieras limpiar todos los eventos en fila de inmediato y cuando quieras eliminar el alcance, respectivamente. (Ifb73a) - Se agregó
performScrollToNode(matcher: SemanticsMatcher)
, que desplaza un contenedor desplazable hasta el contenido que coincide con el comparador dado. (Ic1cb8) InjectionScope
ahora implementaDensity
, lo que te permite convertir fácilmente entre px y dp enperformTouchInput
y amigos. (I8fe1f)
Correcciones de errores
- AndroidView ahora propaga LocalLifecycleOwner y LocalSavedStateRegistryOwner a su vista a través de ViewTreeLifecycleOwner y ViewTreeSavedStateRegistryOwner. (I38f96, b/179708470)
- Se corrigió el problema por el que WearOS SwipeToDismissBox no controlaba los deslizamientos. (I9387e)
- El tiempo predeterminado entre los eventos de entrada inyectados cambió de 10 ms a 16 ms. Esto puede cambiar el resultado de las pruebas que realizan gestos de entrada, como un deslizamiento específico. (I829fd)
Versión 1.1.0-alpha05
29 de septiembre de 2021
Lanzamiento de androidx.compose.ui:ui-*:1.1.0-alpha05
. La versión 1.1.0-alpha05 contiene estas confirmaciones.
Cambios en la API
- Se agregó compatibilidad con la comunicación entre modificadores (Id5467, b/198826874).
- Se agregaron punteros históricos experimentales a PointerEventChange (Ic1fd8, b/197553056, b/199921305)
- Se agregaron
density: Density
ylayoutDirection: LayoutDirection
aLayoutInfo
Esto permite que los consumidores deLayoutInfo
interpreten correctamente las dimensiones y posiciones expuestas enLayoutInfo
. (I002f1) - Se agregó compatibilidad experimental para insertar eventos del mouse. Usa
performMouseInput
para comenzar a enviar eventos del mouse, o envía eventos de este mediante la propiedadMouse
deMultiModalInjectionScope
durante un gesto de entrada multimodal conperformMultiModalInput
. ConsultaMouseInjectionScope
para ver la documentación de la API disponible. (Iaa4a8, b/190493367)
Correcciones de errores
- Se corrigió la compatibilidad de la accesibilidad para elementos desplazables (diferidos y no diferidos) con respecto al desplazamiento (I6cdb0).
- Se mejoró
TouchInjectionScope.swipeWithVelocity
. Ahora acepta un rango más amplio de variables de entrada y sugerirá cambios en la entrada si no se puede crear un deslizamiento. (I40fbe, b/182477143)
Versión 1.1.0-alpha04
15 de septiembre de 2021
Lanzamiento de androidx.compose.ui:ui-*:1.1.0-alpha04
. La versión 1.1.0-alpha04 contiene estas confirmaciones.
Cambios en la API
PointerEvent
ahora tiene unPointerEventType
para admitir eventos de colocamiento del cursor sobre elementos. (I091fa)- Permite que los elementos secundarios acepten entradas de puntero fuera de los límites de entrada del elemento superior. Los elementos superiores pueden interceptar esas llamadas con una propiedad PointerInputScope.alwaysInterceptChildEventss. (I9eae3, b/192479655)
performGesture
yGestureScope
dejar de estar disponibles y se reemplazaron conperformTouchInput
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) - Se rehizo la implementación del objeto inspectable. (I927bc, b/191017532)
- Se cambió el nombre de un parámetro de inspectable para que coincida con el compuesto. (I3a482, b/191017532)
Se introdujeron
performTouchInput
yTouchInjectionScope
como reemplazo deperformTouchInput
yTouchInjectionScope
, lo que prepara el camino para otras modalidades (como el mouse).TouchInjectionScope
tiene los mismos métodos queGestureScope
, con excepción demovePointerTo
ymovePointerBy
, que cambiaron de nombre aupdatePointerTo
yupdatePointerBy
. Todos los demás métodos son iguales.El comportamiento de
TouchInjectionScope
es casi idéntico al deGestureScope
, con dos pequeñas diferencias:- Cuando se enviaba un evento de bajada cuando se habían movido los punteros sin enviar un evento de movimiento (en otras palabras, se usaba
updatePointerTo()
, pero nomove()
, y, luego, se llamaba adown()
), la implementación anterior hacía avanzar el tiempo del evento y enviaba un evento de movimiento antes de enviar el evento descendente. La nueva implementación sigue enviando el evento de movimiento, pero no avanza el tiempo del evento en esta situación específica. - Cuando se enviaba un evento de bajada cuando se habían movido los punteros sin enviar un evento de movimiento (similar al anterior), la implementación anterior hacía avanzar el tiempo del evento y enviaba un evento de movimiento antes de enviar el evento descendente. La nueva implementación no realiza ninguna de las dos acciones: las nuevas posiciones de los punteros solo se reflejarán a través del evento ascendente.
Por último,
TouchInjectionScope
presenta un nuevo métodocurrentPosition(pointerId: Int)
para obtener la posición actual del puntero determinado. (If1191, b/190493367)- Cuando se enviaba un evento de bajada cuando se habían movido los punteros sin enviar un evento de movimiento (en otras palabras, se usaba
Correcciones de errores
- Permite que el clip extienda los límites del objetivo táctil más allá de la región del clip para los fines mínimos del objetivo táctil. (I43e10, b/171509422)
- Se 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.ui:ui-*: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ó
Modifier.inspectable
para unir otros modificadores. (I1909b, b/191017532) - Se agregó la API de
BlurredEdgeTreatment
para simplificar los casos de uso de desenfoque a combinaciones de uso general de marcas de clips y TileModes. La mayoría de los casos de uso implican dejar que el contenido difuminado se renderice fuera de los límites del contenido original y difuminar las regiones fuera de estos límites con negro transparente, o bien recortar el contenido a los límites del contenido muestreando el borde más cercano para los kernels de desenfoque que se extienden más allá de los límites del contenido. (I6b4b7, b/166927547) - Se agregó compatibilidad con RenderEffect en el escritorio de Compose. Se introdujeron OffsetEffect y el modificador de desenfoque como una manera sencilla de ingresar efectos visuales de desenfoque en una parte de la jerarquía de composición. (I0f6aa, b/166927547)
- Se introdujo la API de RenderEffect que se puede configurar de forma opcional en una
Modifier.graphicsLayer
para alterar el contenido de la capa. Se puede usar para desenfocar el contenido de un elemento componible y sus elementos secundarios dentro de una jerarquía de composición (I47c4d, b/166927547) - Ahora, AwaitPointerEventScope tiene withTimeout() y withTimeoutOrNull(). (I507f0, b/179239764, b/182397793)
- 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)
- Se agregó compatibilidad con TileMode.Decal, que sirve para definir el comportamiento de borde para RenderEffects basados en desenfoques. (I7e8ed, b/166927547)
performScrollToIndex
,performScrollToKey
,hasScrollToIndexAction
yhasScrollToKeyAction
ahora son API estables. (I142ae, b/178483889)- Se agregó un método de prueba para obtener los límites recortados. (I6b28e)
Correcciones de errores
- Se quitó el método isBounded de BlurredEdgeTreatment a fin de verificar de forma explícita si el parámetro de forma es nulo. (I85d68)
Versión 1.1.0-alpha02
18 de agosto de 2021
Lanzamiento de androidx.compose.ui:ui-*:1.1.0-alpha02
. La versión 1.1.0-alpha02 contiene estas confirmaciones.
Cambios en la API
- PointerEvent ahora es compatible con la lectura del estado del botón del mouse y del estado del modificador del teclado (I6310c, b/180075467).
- Los gestos inyectados ahora usan el tiempo de MainTestClock como fuente de información de tiempo. La hora actual de los eventos inyectados en
performGesture
se inicializará en la hora actual de MainTestClock. (Ifb364, b/192064452) - Se agregó el constructor
DpRect(DpOffset, DpSize)
. (I2cf16, b/194219828) - Se agregó la clase DpSize. (I7abb1, b/194219828)
Correcciones de errores
- Se actualizó el análisis de XML de gráficos vectoriales para admitir ColorStateLists como propiedades de tono de color raíz en VectorDrawables (I86915, b/195668138)
Versión 1.1.0-alpha01
4 de agosto de 2021
Lanzamiento de androidx.compose.ui:ui-*:1.1.0-alpha01
. La versión 1.1.0-alpha01 contiene estas confirmaciones.
Cambios en la API
- Ahora
RelocationRequester.bringIntoView
acepta un rectángulo como parámetro que nos permite poner en la vista una parte de un elemento que admite composición. (Ice2c5, b/194330245) AnimatedImageVector
y las API relacionadas ahora están en el nuevo móduloandroidx.compose.animation:animation-graphics
. (I60873)- Se agregó un modificador experimental para controlar las solicitudes de reubicación. (I65a97, b/178211874)
Se introdujo la API de BrushPainter para admitir el dibujo de un Brush arbitrario dentro de un Painer, similar a ColorPainter.
Se actualizó la API de Brush para tener un parámetro de tamaño intrínseco que se consulta dentro de BrushPainter. (Ia2752, b/189466433)
Se actualizó el método DrawScope#drawImage que consume los rects de origen y destino para consumir un parámetro opcional FilterFilter. Esto es útil para el arte de píxeles que se pixela cuando se escala verticalmente para el arte basado en píxeles. Se actualizó el objeto BitmapPainter + Image que admite composición para que también consuma un parámetro opcional FilterQuality. (Ie4fb0, b/180311607)
Se agregó el método
GestureScope.advanceEventTime
para proporcionar más control sobre el tiempo de los eventos en un gesto. (Ibf3e2)
Correcciones de errores
- A fin de admitir mejor el encadenamiento de modificadores de dibujo, asegúrate de que la implementación de Modifier.Paint llame a drawsContent.
Anteriormente, se esperaba que Modifier.Paint se utilizara en un nodo de hoja del conjunto de modificadores. Sin embargo, esto evita que se configure en un contenedor que admita composición (p. ej., un cuadro) o que se agreguen decoraciones adicionales arriba como
Modifier.paint().border()
. Al hacer que el objeto Modifier.Paint llame a drawContent después de dibujar los contenidos del pintor determinado, logramos una mejor coherencia de comportamiento en el comportamiento con el patrón modificador. (Ibb2a7, b/178201337, b/186213275) - Los diálogos siguen el comportamiento del tamaño de la plataforma. Establece
usePlatformDefaultWidth
como falso para anular este comportamiento. (Iffaed, b/192682388) - Se movió
InfiniteAnimationPolicy
a :compose:ui. (I5eb09, b/160602714) - El desplazamiento a través de acciones semánticas para listas diferidas y componentes de desplazamiento normales ahora tiene animación. (Id9066, b/190742024)
Versión 1.0
Versión 1.0.5
3 de noviembre de 2021
Lanzamiento de androidx.compose.ui:ui-*:1.0.5
. La versión 1.0.5 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió una falla en el seguimiento de las instancias de derivedStateOf (aosp/1792247).
Versión 1.0.4
13 de octubre de 2021
Lanzamiento de androidx.compose.ui:ui-*: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.ui:ui-*: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.ui:ui-*: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.ui:ui-*: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.ui:ui-*: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.ui:ui-*:1.0.0-rc02
. La versión 1.0.0-rc02 contiene estas confirmaciones.
Correcciones de errores
- Los diálogos siguen el comportamiento del tamaño de la plataforma. Establece
usePlatformDefaultWidth
como falso para anular este comportamiento. (Iffaed, b/192682388)
Versión 1.0.0-rc01
1 de julio de 2021
Lanzamiento de androidx.compose.ui:ui-*:1.0.0-rc01
. La versión 1.0.0-rc01 contiene estas confirmaciones.
Nuevas funciones
- Se dividió el módulo ui-tooling en
ui-tooling
yui-tooling-preview
. (Iefa28, b/190649014)
Cambios en la API
- Se quitaron las funciones experimentales
FocusManager#moveFocusIn
yFocusManager#moveFocusOut
obsoletas. (I227d7, b/170154986, b/186567354, b/168510304)) - Canvas ahora admite un parámetro contentDescription para accesibilidad. (Ib547c)
- Se cambió el nombre de
useDefaultMaxWidth
enPopupProperties
porusePlatformDefaultWidth
. (I05710) - Ahora se pueden usar los diálogos en todo el ancho de la pantalla. (I83929, b/190810877)
- Se agregó compatibilidad experimental para las representaciones de color HSV y HSL. (Id7cf8, b/180731008)
Cambios en el comportamiento
- Compose
@Preview
ahora proporciona unLocalActivityResultRegistryOwner
que te permite obtener una vista previa de elementos componibles que usan API comorememberLauncherForActivityResult()
que dependen de que exista ese propietario. (Ib13d1, b/185693006) - Compose
@Preview
ahora proporciona unLocalOnBackPressedDispatcherOwner
que te permite obtener una vista previa de elementos componibles que usan API comoBackHandler
que dependen de que exista ese propietario. (Ia1c05, b/185693006)
Correcciones de errores
- Se movió
InfiniteAnimationPolicy
aandroidx.compose.ui:ui
. (I5eb09, b/160602714) - Se quitó temporalmente AnimatedImageVector para cambiar la estructura del módulo. (I41906, b/160602714)
Versión 1.0.0-beta09
16 de junio de 2021
Lanzamiento de androidx.compose.ui:ui-*:1.0.0-beta09
. La versión 1.0.0-beta09 contiene estas confirmaciones.
Cambios en la API
- Se cambió Role de enumeración y LiveRegionMode por clases intercaladas con un constructor privado. (Id1890)
- KeyboardCapitalization se convierte en una clase intercalada. (Id5a1c)
- Se cambió HapticFeedbackType a una clase intercalada. (I255ec)
- Modifier.pointerInteropFilter es @ExperimentalComposeUiApi. (Iede6c)
- TextAlign, FontSynthesis y TextDirection ahora son clases intercaladas. (I212fe)
- Se cambió TextOverflow a una clase intercalada. (I433af)
- Ahora, FontStyle es una clase intercalada. (I9e48b)
Correcciones de errores
- Por el momento, las constantes de clave son @ExperimentalComposeUiApi. El código de consumo puede declarar constantes privadas antes de la estabilización. (Ia5d48)
- Ahora, las pruebas de Compose se pueden ejecutar en Robolectric. Hasta ahora, se identificaron las siguientes limitaciones:
- No hay un mapa de bits nativo, por lo que
ImageBitmap()
dirige a una NullPointerException. - No hay un dibujo, por lo que
captureToImage()
esperará de forma indefinida al próximo pase de dibujos (es decir, se produce un interbloqueo). - No se cargó ninguna fuente, por lo que se medirá todo el texto de forma incorrecta. Todos los caracteres tienen una altura fija de alrededor de 20 px y un ancho de 1 px.
ComposeTestRule.waitUntil {}
no ejecuta el subproceso principal mientras espera, por lo que es prácticamente igual queComposeTestRule.mainClock.advanceTimeUntil {}
. Se espera identificar más limitaciones en el futuro. (I284fa)
- No hay un mapa de bits nativo, por lo que
Reglas de perfiles agregadas
En esta versión, se agregaron reglas de perfiles a los siguientes módulos de Compose (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
¿Qué son las reglas de perfiles?
Las reglas de perfiles de una biblioteca se especifican en un archivo de texto
baseline-prof.txt
, ubicado ensrc/main
o el directorio equivalente. El archivo especifica una regla por línea, donde una regla en este caso es un patrón para la coincidencia con métodos o clases de la biblioteca. La sintaxis de estas reglas es un superconjunto del formato de perfil ART legible que se usa cuando se implementaadb shell profman --dump-classes-and-methods ...
. Estas reglas adoptan una de dos formas para segmentar métodos o clases.Una regla de métodos tendrá el siguiente patrón:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Una regla de clases tendrá el siguiente patrón:
<CLASS_DESCRIPTOR>
Aquí,
<FLAGS>
es uno o más caracteresH
,S
yP
, los cuales indican si este método debe marcarse como "Hot" (caliente), "Startup" (inicio) o "Post Startup" (posterior al inicio).El
<CLASS_DESCRIPTOR>
es el descriptor de la clase a la que pertenece el método segmentado. Por ejemplo, la claseandroidx.compose.runtime.SlotTable
tendría un descriptor deLandroidx/compose/runtime/SlotTable;
.El
<METHOD_SIGNATURE>
es la firma del método y, además, incluye el nombre, los tipos de parámetros y los tipos de datos que muestra. Por ejemplo, el métodofun isPlaced(): Boolean
enLayoutNode
tiene la firmaisPlaced()Z
.Estos patrones pueden tener comodines (
**
,*
y?
) para tener una sola regla que abarque varios métodos o clases.
¿Para qué sirven las reglas?
Un método con la marca
H
indica que es "hot" y debe compilarse con anticipación.Un método con la marca
S
indica que se llama durante el inicio y debe compilarse con anticipación para evitar el costo de interpretarlo y compilarlo en el momento del inicio.Un método que tiene la marca
P
indica que es un método que se llama después del inicio.Una clase presente en este archivo indica que se usa durante el inicio y debe asignarse previamente en el montón para evitar el costo de cargarla.
¿Cómo funciona?
- Las bibliotecas pueden definir estas reglas que se empaquetarán en artefactos de AAR. Luego, cuando se compila 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.ui:ui-*: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 cambió el nombre de
FocusManager.clearFocus(forcedClear = true)
porFocusManager.clearFocus(force = true)
. (Ia0c41) - 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)
- Quitar
@ExperimentalComposeUiApi
dePopupProperties
. (I01fa6) - Se cambió
PointerType
de una enumeración a una clase intercalada (If5058) - 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)Modifier.onSizeChanged()
yModifier.onGloballyPositioned()
ya no son funciones intercaladas. (I727f6, b/186109675)- 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)
PlaceholderVerticalAlign
se convierte en una clase intercalada. (If6290)- TextUnitType ahora es una clase intercalada. (I4cba9)
- Las funciones
AnnotatedString.withAnnotation
ahora son ExperimentalTextApi en lugar de ExperimentalComposeApi. (I0cd0a)- El constructor TextUnit con TextUnitType ahora es ExperimentalTextApi en lugar de ExperimentalComposeApi.
Correcciones de errores
- Se corrigió el error que se introdujo en la versión beta07, en la que los elementos LazyColumn/Row se mostraban parcialmente después del desplazamiento. (I8c9ac, b/188566058).
- 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 corrigieron los LayoutModifiers que proporcionaban líneas de alineación. También se solucionó un error que provocaba que no se volviera a medir el elemento principal cuando se cambiaban las líneas de alineación de los elementos secundarios. (I4401f, b/174315652)
- Se modificó
Modifier.onGloballyPositioned()
para informar las coordenadas de este modificador en la cadena correspondiente, no 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.ui:ui-*:1.0.0-beta07
. La versión 1.0.0-beta07 contiene estas confirmaciones.
Cambios en la API
- Se agregó la interfaz
ViewRootForInspector
para usar en inspector. (Ib70df) SubcomposeLayoutState
ahora admite la configuración de recuento de ranuras reutilizables. El diseño mantendrá estos recuentos de ranuras activos, en lugar de desecharlos para reutilizar la ranura la próxima vez que necesite una nueva. (Ieb981)- Se reemplazó la enumeración KeyEventType por una clase intercalada. (Id670a, b/187055290)
- Se reemplazó la enumeración
FocusDirection
por una clase intercalada. (Ib6d03, b/187055290, b/184086802) - Se introdujo la capacidad de elevar el estado de SubcomposeLayout que te permite componer previamente el contenido en un slotID obligatorio, lo que agilizará la siguiente medición, ya que una vez que se realice la subcomposición con el slotID determinado, la próxima vez, no será necesaria la composición. (I42580, b/184940225)
- Se agregó el controlador de selección de clips. (Iff80d, b/183408447)
- Se quitaron las API relacionadas con la compatibilidad con LayoutInspector que ya no se usaban. (I2ac78)
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 aplicarán
TextGeomerticTransform
yTextDecoration
enAnnotatedString
como se indica. (I61900, b/184760917)
Versión 1.0.0-beta06
5 de mayo de 2021
Lanzamiento de androidx.compose.ui:ui-*: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).
@ComposeCompilerApi
ya no admite@RequiresOptIn
. (Iab690)- Se agregaron las API de accesibilidad CollectionInfo y CollectionItemInfo, que permiten marcar la colección y sus elementos para los servicios de accesibilidad. (Id54ef, b/180479017)
- Se 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ó
- Se agregó ownerViewId a GraphLayerLayerInfo. (I19f62)
- Se agregaron sobrecargas de Font() a fin de cargar fuentes desde recursos (File y FileDescriptor). (I5d382)
- Se agregó la API de accesibilidad
error
que permite marcar un nodo que contiene entradas no válidas. (I12997, b/180584804, b/182142737) - Se agregaron sobrecargas de
Font()
a fin de cargar fuentes desde recursos (File y FileDescriptor). (I43007) - Se agregó compatibilidad con AnnotatedString a
TextFieldValue.Saver
. Se agregaron las funciones de utilidadaddTtsAnnotation
y withAnnotation aAnnotatedString.Builder
. (I8cbdc, b/178446304) - Se agregó la función de constructor TextUnit
TextUnit(value: Float, type: TextUnitType)
(I7ecce, b/178446304).
Versión 1.0.0-beta05
21 de abril de 2021
Lanzamiento de androidx.compose.ui:ui-*:1.0.0-beta05
. La versión 1.0.0-beta05 contiene estas confirmaciones.
Cambios en la API
- Se agregaron
FocusManager.moveFocus(In)
yFocusManager.moveFocus(Out)
experimentales. (Ic5534, b/183746743) - Se agregó la API experimental de
performTextInputSelection
. (I2dcbb, b/178510628) - La interfaz de
InputEventCallback
dejó de estar disponible. No se podía usar en ninguna API pública y tampoco se utilizaba en el código. (I34a02, b/184003208) - Se dio de baja
TextLayoutResult/createTextLayoutResult
, una función pública sin uso que se había agregado para el proceso de prueba. La función no realiza ninguna acción útil en las API de texto de Compose, por lo que dejó de estar disponible y se quitará más adelante. (I80413)
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.ui:ui-*:1.0.0-beta04
. La versión 1.0.0-beta04 contiene estas confirmaciones.
Cambios en la API
- Cambia el nombre de
hideSoftwareKeyboard
yshowSoftwareKeyboard
enSoftwareKeyboardController
porhide()
yshow()
, respectivamente.- Proporciona la interfaz completa de CompositionLocal para LocalSoftwareKeyboardController, que permite que se configure (especialmente útil en pruebas). (I579a6).
- Se agregó la API de accesibilidad LiveRegion. Si el nodo está marcado como una región live, los servicios de accesibilidad notificarán automáticamente al usuario sobre los cambios. (Idcf6f, b/172590946)
- Se introdujo TextOverflow.Visible. (Ic8f89)
Correcciones de errores
- Se corrigió el problema cuando los elementos de
LazyColumn
/LazyRow
ubicados en los bordes se encontraban posicionados de forma incorrecta después de un lanzamiento rápido. (Ie4d13, b/183877420) - Ahora
AndroidViewBinding
quita correctamente los fragmentos aumentados a través deFragmentContainerView
cuando se quita elAndroidViewBinding
de la jerarquía de composición. (Ib0248, b/179915946) - Ahora
AndroidViewBinding
anida correctamente los fragmentos aumentados a través deFragmentContainerView
cuando tuComposeView
se encuentra dentro de unFragment
, lo que corrige problemas al guardar y restablecer el estado de esos fragmentos. (I70eb0, b/179915946) - Ahora, Compose ViewBinding depende del Fragmento
1.3.2
y muestra fragmentos aumentados de forma coherente a través deFragmentContainerView
después de los cambios en la configuración. (I0743d, b/179915946)
Versión 1.0.0-beta03
24 de marzo de 2021
Lanzamiento de androidx.compose.ui:ui-*:1.0.0-beta03
. La versión 1.0.0-beta03 contiene estas confirmaciones.
Cambios en la API
- Se realizó la verificación diferida para las dependencias de ViewTree de ComposeView. (I8dbbf, b/182466548)
- Se agregaron los parámetros opcionales
startX
/endX
ystartY
/endY
a las funcionesswipeUp
/swipeDown
/swipeLeft
/swipeRight
enGestureScope
. (I49e2d, b/182063305)
Versión 1.0.0-beta02
10 de marzo de 2021
Lanzamiento de androidx.compose.ui:ui-*:1.0.0-beta02
. La versión 1.0.0-beta02 contiene estas confirmaciones.
Cambios en la API
- Se agregó una nueva API local de composición de
LocalSoftwareKeyboardController
para reemplazar la interfaz 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) - Se quitaron los siguientes elementos
SemanticsMatcher
:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(If16bd)
- Se marcó el elemento
SemanticsMatchers
como @ExperimentalTestApi:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(Ia600c)
- Se agregaron los siguientes elementos
SemanticsMatcher
:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(I2f502)
Correcciones de errores
- Se aplicaron restricciones sobre el uso público de las API experimentales (I6aa29, b/174531520)
androidx.compose.ui:ui
ya no depende de AppCompat ni Fragment. Si usas ComposeView en tu aplicación y usas Fragment o AppCompat, asegúrate de usar AppCompat 1.3+ o Fragment 1.3+. Se necesitan estas versiones para establecer correctamente el ciclo de vida y los estados guardados del propietario que se requieren para ComposeView. (I1d6fa, b/161814404)- Se corrigió la falla de
rememberSaveable { mutableStateOf(0) }
cuando se usaba dentro de un destino de navigation-compose. (I1312b, b/180042685, b/180701630) - Se agregó una nueva API local de composición de
LocalSoftwareKeyboardController
para reemplazar la interfaz de SoftwareKeyboardController anterior en TextField (I658b6, b/168778053) - Se corrigió el error NoSuchElementException en
tearDownRegistry()
deComposeRootRegistry
. (Iddce1)
Versión 1.0.0-beta01
24 de febrero de 2021
Lanzamiento de androidx.compose.ui:ui-*: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 cambió el nombre de MeasurementBlocks por MeasurementPolicy, 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)
- Agrega la interfaz AccessibilityMananger y LocalAccessibilityMananger en CompositionLocals. (I53520)
- Se quitaron los métodos obsoletos de LayoutCoordinates; usa la función en lugar de la propiedad para positionInParent y boundsInParent. (I580ed, b/169874631, b/175142755)
- Se reemplazó el método typealiases por tipos subyacentes:
ColorStop
ahora esPair<Float, Color>
.SpanStyleRange
ahora es AnnotatedString.RangeParagraphStyleRange
ahora esAnnotatedString.Range<ParagraphStyle>
.StringAnnotation
ahora esAnnotatedString.Range<String>
.- (I8dd1a)
- 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)
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 quitaron los métodos obsoletos de módulos de IU. (I646f6)
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 quitó
Modifier.tapGestureFilter
. UsaModifier.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)
Ahora imageResource y vectorResource son funciones de extensión en las complementarias de ImageBitmap y ImageVector, respectivamente. Se borraron funciones
load{Image,Vector,Font}Resource
. (I89130)Se quitó AnimationClockObservable, así como sus subclases. Se quitó AnimatedFloat. (Icde52, b/177457083)
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 quitó
ComponentActivity.setContent()
de Compose:ui. Usa la deandroidx.activity:activity-compose:1.3.0-alpha01
. Se quitaronviewModel()
yLocalViewModelStoreOwner
de Compose:ui. Usa las deandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
. (I6f36b)Se modificó Modifier.scrollable. Ahora, usa la interfaz Scrollable en lugar de la clase ScrollableController. (I4f5a5, b/174485541, b/175294473)
Se quitó la compatibilidad con CustomUniforms de PointerInputModifier. (I02707, b/175294473)
SnapshotStateObserver dejó de ser experimental (Id2e6a).
Se borraron algunas APIs obsoletas (Ice5da, b/178633932).
Se quitaron longPressGestureFilter y doubleClickGestureFilter. Usa modificador.pointerInput con funciones auxiliares, como detectTapGestures. (I2fedf, b/175294473)
Se quitó la API de String.format que refactorizó los usos en varios métodos toString para no aprovechar internamente el formato String.format. (Id1290)
Se quitaron las aserciones de dp. (I798d2)
Se quitó androidx.compose.runtime:runtime-dispatch (I55feb).
Las acciones de texto ahora comprueban el enfoque automáticamente (I13777, b/179648629).
Se quitó
runBlockingWithManualClock
. (I15cdc, b/179664814)Ahora, la posición de desplazamiento en Modifier.verticalScroll()/horizontalScroll() se representa con Ints. (I81298).
Ahora, se cambió el nombre de FlingConfig por FlingBehavior para personalizar la animación de suspensión en lugar del elemento predefinido Decays (I02b86, b/175294473)
Se agregó una función auxiliar que es útil para configurar la misma acción para todas las devoluciones de llamada de ImeAction (I63447, b/179226323).
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)
Dejó de usarse FontSpan y FontWeigthStyleSpan y, por lo tanto, se quitaron. (Ie5b56, b/177423444)
Se realizaron los siguientes cambios en la API de Material:
- Se agregó el parámetro contentPadding a Top/BottomAppBar para permitir personalizar el relleno predeterminado.
- Se reorganizaron los parámetros en BackdropScaffold a fin de cumplir con los lineamientos de las API para los parámetros obligatorios antes de los parámetros opcionales.
- Se migró el parámetro
icon
en BottomNavigationItem para que sea posterior aselected
yonClick
. - Se cambió el nombre del parámetro
alwaysShowLabels
en BottomNavigationItem aalwaysShowLabel
. - Se cambiaron los nombres de los parámetros
bodyContent
en algunos componentes a solocontent
. - Se reorganizaron los parámetros en
ButtonDefaults.buttonColors()
. Ten en cuenta que, debido a que no cambió el tipo de parámetros, no se producirá un error en tu código. Asegúrate de estar usando parámetros con nombre o actualiza el orden de manera manual; de lo contrario, tu código no funcionará como antes. - Se agregó el parámetro
secondaryVariant
adarkColors()
. Por lo general, este color es el mismo que el desecondary
en el tema oscuro, pero agrega coherencia y mayor personalización. - Se quitó ElevationDefaults y animateElevation() de la superficie de la API pública, ya que no se usaban con frecuencia ni eran útiles.
- Se cambió el nombre de
onValueChangeEnd
enSlider
aonValueChangeFinished
y se hizo nulo. - Se cambió el nombre del parámetro
text
enSnackbar
acontent
para brindar coherencia. - Se agregó el parámetro
contentPadding
aDropdownMenuItem
para permitir la personalización del relleno predeterminado y se convirtiócontent
en una extensión enRowScope
. - Se cambió el nombre de
ModalDrawerLayout
aModalDrawer
. - Se cambió el nombre de
BottomDrawerLayout
aBottomDrawer
. - (I1cc66)
Correcciones de errores
- Se agregó una API para usar recursos AnimatedVectorDrawable en Compose. Usa animatedVectorResource para cargar un XML
<animated-vector>
como AnimatedImageVector y anímalo con pintorFor. (I8ea91) - 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.ui:ui-*:1.0.0-alpha12
. La versión 1.0.0-alpha12 contiene estas confirmaciones.
Cambios en la API
- Se quitó la compatibilidad con ViewGroups de UiApplier. Se quitaron los elementos emitView obsoletos que admiten composición. (Ifb214)
- 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)
- El nombre de CompositionReference cambió a CompositionContext. (I53fcb)
- El nombre de Bounds se cambió a DpRect. (I4b32a)
- Actualización de pruebas: hasText() verificará los textos de entrada y label/hint/placeholder en el campo de texto (Iab803).
- Se movieron viewModel(), que es componible, y LocalViewModelStoreOwner a androidx.lifecycle.viewmodel.compose. Para su uso, deberás agregar una nueva dependencia androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 por separado (I7a374)
- Se permite utilizar acciones anulables en AccessibilityAction, etiquetas de cambio de acción en AccessibilityAction y CustomAccessibilityAction de CharSequence a String (I0dc82).
- Para que las convenciones de nombre coincidan mejor con ImageBitmap y con ImageVector, se cambió el nombre de ImagePainter por BitmapPainter para que sea paralelo a VectorPainter (Iba381, b/174565889)
- Se mejoraron las APIs de prueba de substring con una substring como argumento (Icbe78).
- Se agregó un objeto
Modifier.focusOrder()
que acepta un elemento FocusRequester sin especificar el orden de foco personalizado para una expresión lambda. Esto es útil cuando solo se necesita especificar una referencia en lugar de un orden de foco personalizado para un objeto componible (I4f52a, b/179180978). - 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 movió el elemento Popup para que sea específico de plataformas. Se cambió el nombre de AndroidPopupProperties a PopupProperties, y se movió
isFocusable
a un parámetrofocusable
enPopupProperties
. (Ieeea5) - Se movió el elemento Dialog para que sea específico de plataformas. Se cambió el nombre de AndroidDialogProperties a DialogProperties. (I4ef69, b/179138130)
- LayoutNode ahora es un elemento interno. (I8a7b1, b/175103944)
- Se reemplazó Constraints.enforce con Constraints.constrain. (I8b8ea)
- loadFontResource dejó de estar disponible. En su lugar, usa fontResource. Los elementos 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).
- Ahora OwnerLayer/OwnerScope/OwnerSnapshotObserver es un elemento interno. (I4ffaf, b/175103944)
- Se cambió el nombre de toIntPx() a roundToPx(). (I9b7e4, b/173502290)
- Se cambió el nombre de IntBounds a IntRect y se mejoró la API. (I1f6ff)
- Se actualizó la API de Snapshot para que sea más coherente con los lineamientos de API y para ocultar las clases de implementación interna en la API pública (Id9e32)
- Se agregaron las acciones de semántica para expandir y contraer. Se agregaron los elementos expand y halfExpand en ModalBottomSheetState (Ib5064).
- Modifier.dragGestureFilter dejó de estar disponible. Usa
Modifier.pointerInput { detectDragGestures (...)}
en su lugar. De forma alternativa, puedes usar Modifier.draggable para arrastrar un eje. (I0ba93, b/175294473) - Se cambió el nombre de Ambients para que coincida con Ambient -> CompositionLocal. Los elementos Ambients se solían llamar AmbientFoo; ahora los elementos CompositionLocals se llaman LocalFoo. (I2d55d)
- Se quitó el objeto BaseTextField que dejó de estar disponible. En su lugar, usa BasicTextField. (I71368)
- Se movió la selección a la base. (I7892b)
- Se quitará el objeto componible
savedInstanceState { 0 }
, de forma similar a como se quitó el objeto componiblestate { 0 }
, y ahora se promociona el uso deremember { mutableStateOf(0) }
, por ejemplo. En su lugar, se debe usarrememberSaveable { mutableStateOf(0) }
, que se guardará y restablecerá automáticamente si el tipo usado dentro de MutableState se puede almacenar en el paquete. Si antes pasabas un objeto Saver personalizado, ahora debes usar una sobrecarga nueva de rememberSaveable, que tiene el parámetrostateSaver
. Se verá de la siguiente manera:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
. (Ib4c26, b/177338004) - Se agregó 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)
- Dejaron de estar disponibles las utilidades
emptyContent()
y(@Composable () -> Unit).orEmpty()
, dado que ya no tienen un valor ni impacto de rendimiento positivos. (I0484d) snapshotFlow
ywithMutableSnapshot
dejaron de ser experimentales. (I6a45f)- 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)
- Se cambió el nombre de UiSavedStateRegistry por SaveableStateRegistry y el de AmbientUiSavedStateRegistry por AmbientSaveableStateRegistry, y se movieron los dos elementos al paquete androidx.compose.runtime.saveable (I30224)
- Se cambió el nombre de androidx:compose:runtime:runtime-saved-instance-state por 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)
- Las clases Outline.* ya no son clases de datos. (I4879e, b/178001427)
- Se quitó
view.captureToImage()
, pero no tiene reemplazo. (I7fcd2) - Se introdujo la API de ColorMatrix para modificar valores RGB de contenido fuente y se refactorizó la API de ColorFilter para que sea una interfaz y coincida con la implementación de PathEffect. (Ica1e8)
- Se agregó el parámetro layoutDirection al objeto createOutline del elemento Shape. Esto permite crear formas que reconozcan la dirección en el diseño. (I57c20, b/152756983)
- onImeActionPerformed dejó de estar disponible. En su lugar, usa KeyboardActions. (If0bbd, b/179071523)
- 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) - Se quitó el elemento canDrag de Modifier.scrollable. (Id66e7, b/175294473)
- Se cambió el nombre de LayoutCoordinates.parentCoordinates por LayoutCoordinates.parentLayoutCoordinates para habilitar una propiedad parentCoordinates nueva. Ahora, la propiedad parentCoordinates ofrece el elemento superior LayoutCoordinates del modificador. Esto permitirá crear casos de uso más completos para onSizeChanged() y onGloballyPositioned() (Idfbfd, b/177926591).
- Los elementos tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter y pressIndicaitonGestureFilter dejaron de estar disponibles. En su lugar, usa Modifier.clickable o Modifier.pointerInput con la función detectTapGestures. (I6baf9, b/175294473)
- Se quitó el elemento unregisterProvider de SaveableStateRegistry. Ahora, registerProvider() muestra el objeto SaveableStateRegistry.Entry, que se puede usar para cancelar un registro. (Ic4274, b/178583739)
- Se cambió el nombre de rememberSavedInstanceState() a rememberSaveable() y se movió al paquete androidx.compose.runtime.saveable. (I1366e, b/177338004)
- Se quitaron los elementos CoreText y CoreTextField de la API pública.
- Se quitó la sobrecarga SelectionContainer que dejó de estar disponible.
- (I99c19)
- Las pruebas en las que se usa Compose en jerarquías que directamente se agregan a WindowManager o se quitan de allí ahora son más estables (Ie81ed, b/175765614)
- 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)
- Se movieron a androidx.compose.runtime.saveable los elementos Saver, listSaver(), mapSaver() y autoSaver de androidx.compose.runtime.savedinstancestate (I77fe6).
- El objeto EditCommands acepta AnnotatedString. Sin embargo, este cambio es solo para la API, y la edición de texto multiestilo aún no se implementó (I4c3ea)
- Se quitaron los elementos Uptime y Duration. (Ib9bf4, b/177420019)
- Se movió CompositionData.asTree() y las APIs relacionadas al módulo independiente ui-tooling-data, y se marcaron como experimentales (Ic95b8).
- Se cambió el nombre de los parámetros en RounderCornerShape, CutCornerShape y CornerBasedShape de left/right a start/end para admitir la duplicación automática de la forma en la dirección de derecha a izquierda. 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 refactorizó la API a la que 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ó la función StringBuilder.deleteAt, que se volvió pública de forma no intencional. (Id6ed9)
Correcciones de errores
- Los objetos ComposeView ubicados en jerarquías de vistas que son elementos secundarios de otra composición ahora alojan composiciones secundarias de sus entidades principales (I92883).
- Se actualizó la API de imageFromResource de Compose para volver a utilizar la caché del elemento de diseño del recurso cuando se cargan objetos ImageBitmap. (If3627, b/178751994)
Versión 1.0.0-alpha11
28 de enero de 2021
Lanzamiento de androidx.compose.ui:ui-*:1.0.0-alpha11
. La versión 1.0.0-alpha11 contiene estas confirmaciones.
Cambios en la API
- WithConstraints se rediseñó y nombró BoxWithConstraints, y se movió a foundation.layout. (I9420b, b/173387208)
- Key.DPadUp dejó de estar disponible. En su lugar, usa Key.DirectionUp. (Iab335, b/177954892)
- A partir de ahora, la interfaz de propietario es interna. (If8e35)
- Se agregó la API de FocusManager.moveFocus() para mover el enfoque de manera programática. (I045cb, b/177681839)
- Se cambió PopupPositionProvider para usar coordenadas relativas de ventana, no coordenadas globales. Se cambió el nombre de parentGlobalBounds a anchorBounds y se modificó windowGlobalBounds para que sea windowSize: IntSize. (I2994a)
- Duration y Uptime se reemplazarán por Long en milisegundos, y este paso quitará la dependencia de entrada del puntero en esas clases (Ia33b2, b/175142755, b/177420019)
- Se agregó AmbientSavedStateRegistryOwner de manera similar al AmbientLifecycleOwner y AmbientViewModelStoreOwner existentes. (I9a3e8, b/176756365)
- Se actualizó la API de gráficos vectoriales para admitir el análisis del tono aplicado a la raíz de los gráficos vectoriales (Id9d53, b/177210509)
- Se agregó toolType a PointerInputChange para diferenciar dispositivos. (Iac787, b/175142755)
- Se cambió el nombre de AmbientWindowManager por AmbientWindowInfo (I2686a, b/177084714, b/177084983).
- Los métodos de coordenadas globales dejaron de estar disponibles y se crearon nuevos métodos de coordenadas basados en ventanas. (Iee284)
- Se agregó Modifier.toolingGraphicsLayer, que agrega un modificador de capas de gráficos cuando se activa la inspección. (I315df)
- Ahora, FocusRequester.createRefs se marca como experimental, ya que podría sufrir cambios. (I2d898, b/177000821)
- Se cambió el nombre de SemanticsPropertyReceiver.hidden a invisibleToUser y se marcó como @ExperimentalComposeUiApi. Se cambió el nombre de AccessibilityRangeInfo a ProgressBarRangeInfo, y el de stateDescriptionRange a progressBarRangeInfo. Se cambió el nombre de AccessibilityScrollState a ScrollAxisRange, el de horizontalAccessibilityScrollState a horizontalScrollAxisRange, y el de verticalAccessibilityScrollState a verticalScrollAxisRange. (Id3148)
- Se 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 actualizó GraphicsLayerScope para implementar la densidad a fin de admitir las conversiones de dp en píxeles sin procesar. (Ied528, b/176819695)
- Se actualizó la API de Matrix para seguir el orden de las filas principales y proporcionar constantes de índice para ayudar con las conversiones entre diferentes representaciones de matrices y hacer coincidir la lógica de conversión de framework entre SkMatrix y Matrix4 de forma interna. (I432e6)
- Se quitaron los métodos experimentales de monotonicFrameAnimationClockOf (Ib753f, b/170708374).
- Se traslada String.fintPrecedingBreak y String.fingFollowingBreak a InternalTextApi. (I657c4)
- Se quitó androidx.compose.ui.util.isSurrogatePair de la API pública. (Ia9494)
- Se cambió el nombre de TransformedText.transformedText a TransformedText.text.
- TransformedText ya no es una clase de datos. (Ie672a)
- Se quitó
data class
de las siguientes clases:- InlineTextContent
- LocaleList (I605c7)
- Las siguientes clases ya no son clases de datos:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
- Se cambió VisualTransformation para que sea una interfaz funcional. (I3bba4)
- Se agregó un tipo de parámetro de referencia de función. (I5e1bd)
- Se agregaron límites transformados a InspectorNode. (Ice42f)
Correcciones de errores
- onCommit, onDispose y onActive dejaron de estar disponibles, y se los reemplazó por las APIs de SideEffect y DisposableEffect (If760e).
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 a 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)
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)
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)
OnSizeChanged informó el tamaño del contenido del diseño. Ahora informa el tamaño en su posición dentro de la cadena de modificador. (I36b78, b/177562900)
La API de emit() y todas las sobrecargas dejaron de estar disponibles y cambiaron de nombre a ComposeNode. Las API son idénticas; solo tienen un nombre diferente para seguir las convenciones de nomenclatura de Compose. (I4137b)
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)
CompositionLifecycleObserver dejó de estar disponible y se reemplazó por 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)Las operaciones aritméticas entre 2 o más TextUnits dejaron de estar disponibles. Las funciones TextUnit.Sp y TextUnit.Em dejaron de estar disponibles antes que las funciones de extensión, como Int.sp y Int.em. (I48369)
De forma predeterminada, los recursos de las bibliotecas sin recursos públicos declarados de manera explícita (p. ej., a través de public.xml) son privados. (Ia1dcc, b/170882230)
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. Para evitar que los usuarios sufran la ineficiencia, decidimos dar de baja ScrollableColumn y ScrollableRow para promover el uso de LazyColumn y LazyRow. Los usuarios aún pueden decidir no usar el comportamiento diferido y recurrir a los modificadores directamente de la siguiente manera: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083).
Se agregó un método de fábrica
items(count: Int)
nuevo para el alcance de LazyColumn/LazyRow/LazyVerticalGrid.items(items: List)
yitemsIndexed(items: List)
ahora son funciones de extensión, así que debes importarlas manualmente cuando las uses. Se agregaron sobrecargas de extensiones nuevas para Arrays:items(items: Array)
yitemsIndexed(Array)
. (I803fc, b/175562574)Usa ImeAction.None en lugar de ImeAction.NoAction.
- Usa ImeAction.Default en lugar de ImeAction.Unspecified. (Ie1bcc)
Se implementó TestCoroutineDispatcher en pruebas. (I532b6)
Se cambió el nombre de TextInputService.onStateUpdated a updateState. (Id4853)
La transición TransitionDefinition-based dejó de estar disponible. (I0ac57)
Se quitó TextUnitType.Inherit. En su lugar, usa TextUnitType.Unspecified. (I9ff64)
Versión 1.0.0-alpha10
13 de enero de 2021
Lanzamiento de androidx.compose.ui:ui-*:1.0.0-alpha10
. La versión 1.0.0-alpha10 contiene estas confirmaciones.
Cambio rotundo
La reestructuración del compilador interno de la API permite realizar cambios por lote en los nodos que se generan a partir de la composición a la fase "aplicar cambios", después de que se completan todas las funciones
@Composable
.Este es un cambio rotundo de comportamiento que podría afectar el código de la aplicación, dado que los nodos ya no estarán disponibles en las API internas ni en las experimentales hasta que se hayan aplicado los cambios. Por lo general, se puede evitar si se envuelve el código con esas dependencias en un elemento componible
SideEffect
para diferir la ejecución del código hasta que se hayan creado e inicializado los nodos. (I018da)
Cambios en la API
- Se agregó Modifier.focusOrder(), que se puede usar para especificar un orden de recorrido de foco personalizado (I90cf5, b/175899543, b/170155556, b/170155429).
- Se quitó focusObserver, que era obsoleto. En su lugar, utiliza onFocusChanged o onFocusEvent. (I3ecb9, b/175156387)
- 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 quitaron PxSquared, PxCubed y PxInverse sin usar. Se modificó Size.center() para que sea una propiedad. (I973f7)
- El módulo ui-test ahora podrá configurar la creación de Recomposer para las IUs que se están probando (Ibebd8).
- Se modificó Velocity para que tuviera partes de componentes y operaciones matemáticas. (Ib0447)
- Se cambió el nombre de
@ExperimentalTesting
por@ExperimentalTestApi
para que sea coherente con anotaciones de API experimentales similares (Ia4502, b/171464963). - Se cambió el nombre de Color.useOrElse() a Color.takeOrElse(). (Ifdcf5)
- Se quitaron las clases DpInverse, DpSquared y DpCubed sin usar. (I4d62b)
- Se cambió el nombre de Constraints#satisfiedBy a isSatisfiedBy. (I9cf5c)
- Agrega una devolución de llamada para notificar al propietario cuando cambian los límites de LayoutNode. (I72fd1)
- Se agregó isSpecified, isUnspecified y useOrElse para las clases intercaladas con una constante Unspecified. (I93f7b, b/174310811)
Se expandieron las APIs de [Abstract]ComposeView para permitir el reciclado de las vistas basadas en Compose, ya que se dispone la composición para volver a recrearla más adelante. Se agregaron API para instalar y descubrir elementos Recomposer y CompositionReferences aplicados a ventanas, con el objetivo de crear composiciones secundarias.
Se agregó ViewCompositionStrategy para configurar la estrategia de descarte de composición de [Abstract]ComposeViews; el comportamiento predeterminado es que se descarta cuando se desconecta la ventana. (I860ab)
Se quitó la API pública de Any.identityHashCode(). (I025d7)
Se quitó la API de toStringAsFix para dar lugar al uso de String.format directamente. (Iaba6b)
Se agregó la opción de activar o desactivar el 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 de igualdad para usar "is MyClass". (I4f734)
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 introdujo la propiedad Outline.bounds para obtener el rectángulo delimitador de varias implementaciones de contorno. (I16e74, b/175093504)
TestUiDispatcher dejó de estar disponible. En su lugar, usa Dispatchers.Main. (Ic171f, b/175385255)
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 cambió el nombre de Position a DpOffset y se quitó getDistance(). (Ib2dfd)
Se cambió la función Dp.isFinite() a un valor Dp.isFinite. (I50e00)
Correcciones de errores
- Recomposer ahora muestra un flujo de estado actual, lo que permite supervisar su actividad y la actividad de los efectos asociados. (Ifb2b9)
- Ahora se puede acceder al keyEvent nativo a través de keyEvent.nativeKeyEvent (I87c57 o b/173086397).
- 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)
- 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)
Versión 1.0.0-alpha09
16 de diciembre de 2020
Lanzamiento de androidx.compose.ui:ui-*:1.0.0-alpha09
. La versión 1.0.0-alpha09 contiene estas confirmaciones.
Cambios en la API
- Se quitó el elemento KeyEvent.Alt obsoleto. Ahora, en su lugar, usa KeyEvent.isAltPressed. (Idd695)
- Modifier.keyInputFilter y Modifier.previewKeyInputFilter dejaron de estar disponibles, por lo que se debe usar Modifier.onKeyEvent y Modifier.onPreviewKeyEvent en su lugar. (Idbf1b, b/175156384)
- Dejó de estar disponible el elemento Modifier.focusObserver. En su lugar, usa Modifier.onFocusChanged o Modifier.onFocusEvent. (I30f17, b/168511863, b/168511484)
- Se cambió el nombre de HandlePointerInputScope por AwaitPointerEventScope y el de handlePointerInput() por awaitPointerEventScope() para las APIs de entrada de puntero de suspensión (Idf0a1, b/175142755).
- Ahora la API de autocompletado es una experimental y requiere que la habilites (I0a1ec).
- Se agregaron declaraciones de desestructuración para crear instancias de FocuSRequester (I35d84, b/174817008).
- Se cambió el nombre de accessibilityLabel por contentDescription y el de accessibilityValue por stateDescription (I250f2)
- Se quitaron los eventos personalizados de la API de entrada de puntero de suspensión (Ia54d5, b/175142755).
- Se introdujeron varias funciones nuevas en SelectionRegistrar y también se cambió el nombre de onPositionChange por notifyPositionChange (Ifbaf7)
- Se marcaron más miembros de LayoutNode como internos. (I443c6)
- Se introdujo LayoutInfo para usarlo con herramientas y pruebas. (I9b190)
- AndroidOwner se hizo interno. (Ibcad0, b/170296980)
- Se quitó la anotación ExperimentalPointerInput. (Ia7a24)
- Se agregó el sistema de desplazamiento anidado. Consulta Modifier.nestedScroll para obtener más detalles. (I36e15, b/162408885)
- subcomposeInto(LayoutNode) se hizo interno. (Id724a)
Se modificó la interfaz de
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 agregaron las propiedades dismissOnBackPress y dismissOnClickOutside s AndroidDialogProperties. Estas permiten configurar el momento en el que se invocará el método onDismissRequest lambda del diálogo. (If5e17)
Se agregó la API de painterResource para controlar objetos de 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ó Modifier.clearAndSetSemantics para borrar la semántica de los derivados y establecer nuevas. (I277ca)
Se movió ContentDrawScope al módulo ui-graphics para que esté con DrawScope. (Iee043, b/173832789)
Se introdujo la API de gráficos de PathEffect para proporcionar diferentes patrones a las formas con trazos. Se dejó de usar NativePathEffect y se reemplazó por la implementación real o esperada de PathEffect. (I5e976, b/171072166)
Se agregaron interfaces de IdlingResource a Compose como variantes admitidas de los recursos inactivos de Espresso para Compose. Se pueden registrar y cancelar su registro mediante ComposeTestRule. (I433f3)
Se quitó el registro global de ComposeIdlingResource y de los relojes en ComposeIdlingResource, o bien la cancelación de sus registros (I32660).
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)
Dejaron de estar disponibles los objetos LazyColumnFor, LazyRowFor, LazyColumnForIndexed y LazyRowForIndexed. En su lugar, usa LazyColumn y LazyRow. (I5b48c)
Dejó de estar disponible BuildCompat.isAtLeastR. (Idb37e)
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)
Se quitaron métodos de extensión en los elementos Float y Double para convertir valores a radianes. Se movieron a una función privada dentro de la implementación de PathParser, que es el único lugar en el que se usaban (I25f52).
Versión 1.0.0-alpha08
2 de diciembre de 2020
Lanzamiento de androidx.compose.ui:ui-*:1.0.0-alpha08
. La versión 1.0.0-alpha08 contiene estas confirmaciones.
Cambios en la API
- Se agregó la acción de semántica Descartar. (I2b706)
- Se movieron las API de DrawModifier del paquete androidx.compose.ui a androidx.compose.ui.draw. Se creó el archivo DrawModifierDeprecated.kt para que incluya los métodos typealiases/helper para asistir en la migración de las APIs que dejaron de estar disponibles a las actuales. (Id6044, b/173834241)
- Se cambió el nombre de Modifier.drawLayer a Modifier.graphicsLayer y se actualizaron las clases relacionadas con GraphicsLayer según los comentarios de la API. (I0bd29, b/173834241)
- Se agregaron los métodos nuevos placeable.placeWithLayer() y placeable.placeRelativeWithLayer() que permiten que los diseños personalizados y los modificadores de diseño ubiquen un elemento secundario introduciendo una capa de gráficos como dibujo. En consecuencia, podemos primero optimizar los diseños nuevos de modo que, cuando se necesite trasladar un elemento secundario, no haya que volver a dibujar su contenido. Luego, se podrán aplicar transformaciones de dibujo para un elemento secundario (Ibd8f6, b/170296989, b/171493718, b/173030831).
- Se quitó
<T>
de la declaración de SubcomposeLayout. Ahora se puede usar sin especificar un tipo. (Ib60c8) - Se agregaron APIs de Modifier.scale/rotate como convenientes para drawLayer.
- Se cambió el nombre de
Modifier.drawOpacity
aModifier.alpha
. - Se cambió el nombre de
Modifier.drawShadow
aModifier.shadow
. (I264ca, b/173208140)
- Se cambió el nombre de
- Los campos de posición y tiempo de actividad de PointerInputData se hicieron 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 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 actualizó la API de TransformOrigin para obtener una sintaxis de desestructuración que muestre
pivotFractionX
ypivotFractionY
comocomponent1
ycomponent2
. (If43c4, b/173586560) - Se agregó la comprobación de lint para el nombre y la posición del parámetro lambda componibles para 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 agregó una API para verificar si se habían presionado las teclas modificadoras Alt, Ctrl, Meta o Mayúsculas cuando se enviaba KeyEvent. (I50ed9)
- Se agregó una nueva sobrecarga de
Modifier.drawLayer()
. Toma un bloqueo de lambda en un objeto GraphicsLayerScope nuevo donde se definen los parámetros de la capa de una forma que permita omitir la recomposición y la creación de un diseño nuevo cuando se produce el cambio de estado. DrawLayerModifier ahora es un elemento interno en la preparación para migrar su lógica al método placeable.placeWithLayer() de LayoutModifier (I15e9f, b/173030831). - Los entornos Ambient con el nombre
Ambient
como sufijo dejaron de estar disponibles, y se los reemplazó por nuevas propiedades con el prefijo Ambient, en función de otros lineamientos de la API de Compose y Ambients. (I33440) - Se trasladó
androidx.compose.ui.text.Typeface
aandroidx.compose.ui.text.font.Typeface
. (Ic2b81) - Se cambió el nombre del argumento de semántica mergeAllDescendants a mergeDescendants. (Ib6250)
- 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 por ImageVector y se movió VectorAsset a Builder para que sea una clase de ImageVector de acuerdo con los lineamientos de la API. Se agregó un typealias de VectorAssetBuilder para vincularlo a ImageVector.Builder por motivos de compatibilidad (Icfdc8)
- Se cambió el nombre de ImageAsset y los métodos relacionados a ImageBitmap. (Ia2d99)
- Se agregó el parámetro zIndex para el objeto place() de PlacementScope, de modo que Modifier.zIndex() ahora funciona como LayoutModifier y cualquier diseño personalizado puede establecer parámetros zIndex para sus elementos secundarios en el bloque de posición. (I711f7, b/171493718)
- Se trasladaron las propiedades de semántica básica a la IU (I6f05c).
- Dejaron de estar disponibles place(Offset) y placeRelative(Offset). En su lugar, usa sobrecargas con compensaciones de Int. (I4c5e7).
- Se quitaron APIs que dejaron de estar disponibles, como Modifier.onPositioned. En su lugar, usa Modifier.onGloballyPositioned. Se quitó Modifier.onDraw y se debe usar Modifier.onDrawBehind. Se quitó Modifier.plus y se debe usar Modifier.then. Se quitó Color.Unset y se debe usar Color.Unspecified. Se quitó la clase PxBounds. En su lugar, usa Rect. (Ie9d02, b/172562222)
- Se actualizó la interfaz de Alignment y se hizo funcional. (I46a07, b/172311734)
- 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 cambió el nombre de
id
alayoutId
paraLayoutIdParentData
. Se cambió el nombre deMeasurable.id
aMeasurable.layoutId
. (Iadbcb, b/172449643) - Se agregó un nuevo detector de gestos multitáctil que incluye asistentes para detectar acciones de rotación, zoom y desplazamiento. (Ic459d)
- Se introdujeron las APIs de SweepGradientShader y SweepGradientBrush (Ia22c1)
- El control de tiempo en las pruebas (TestAnimationClock y sus usos) ahora es experimental. (I6ef86, b/171378521)
Se agregaron APIs 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ó 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 proporcionaron implementaciones predeterminadas de métodos y propiedades en AnimationClockTestRule que se pueden delegar a su
clock
(I7ea3d, b/173399709).AndroidComposeTestRule ahora puede aceptar selectores de actividad personalizados. (Ib8288, b/153623653, b/154135019)
Dejó de estar disponible TextLayoutResult.getLineVisibleEnd. Como reemplazo, TextLayoutResult.getLineEnd ahora tiene un parámetro visibleEnd nuevo. (I73282)
Se actualizó la API de TextFieldValue.
- TextFieldValue.composition se hizo de solo lectura.
- Se quitó la excepción que se arrojaba para el rango de selección no válido. (I4a675, b/172239032)
Se agregó compatibilidad con TtsAnnotation para el motor de texto a voz. (I54cc6)
Se agregaron APIs nuevas para las animaciones que se ejecutan en corrutinas (Ied662).
Correcciones de errores
- 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ó el parámetro resetInput a TextInputService#onStateUpdated. (I3e8f5, b/172239032, b/171860947)
- Se agregó una comprobación de lint para los parámetros de modificación en funciones de componibilidad. Esta comprobación de lint verifica el nombre, el tipo de datos que se muestra, el valor predeterminado y el orden del parámetro para mantener la coherencia con los lineamientos de Compose. (If493b)
- Se agregó una opción temporal para permitir que MonotonicFrameClock controle a TestAnimationClock. (I1403b, b/173402197)
- 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 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 quitó el módulo ui-tests y sus stubs. (I3a7cb)
- Recomposer ya no acepta EmbeddingContext. Las dependencias de programación requeridas se obtienen de effectCoroutineContext. FrameManager dejó de estar disponible. Las integraciones de plataforma deben inicializar su propio manejo global de instantáneas. (I02369)
- Se pasa la información de estilo al nodo de accesibilidad. (If5e8d)
- Se cambió el nombre de TextUnit.Inherit a TextUnit.Unspecified para mantener la coherencia con otras unidades. (Ifce19)
Compose UI versión 1.0.0-alpha07
11 de noviembre de 2020
Lanzamiento de androidx.compose.ui:ui-*:1.0.0-alpha07
. La versión 1.0.0-alpha07 contiene estas confirmaciones.
Cambios en la API
- Se introdujo la clase intercalada ScaleFactor para representar factores de escala de los ejes horizontales y verticales independientes para 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 agregaron las fábricas BiasAlignment y BiasAbsoluteAlignment para crear alineaciones. (Iac836, b/169406772)
- El desarrollador puede eliminar el enfoque de manera forzada. (I90372)
- Se corrigió un error que provocaba que no se dibujara la elevación para vistas dentro de Compose. (If7782)
- Se creó la API de onDrawBehind dentro de ContentDrawScope para que la convención de nombres coincida con Modifier.drawBehind. (I4fc3a, b/171955269)
- Se agregó compatibilidad con la distancia de la cámara para complementar las transformaciones 3D rotationX/rotationY en las API de Layers. (I40213, b/171492100)
- Se agregó SelectionContainer sin la devolución de llamada. (Ibfadb)
- Se quitó la anotación ExperimentalSubcomposeLayoutApi. Ahora es posible usar SubcomposeLayout sin agregar @OptIn. (I708ad)
- Se movieron FirstBaseline y LastBaseline al paquete androidx.compose.ui.layout. (Ied2e7)
- Se quitó la opacidad del modificador drawShadow(), ya que era confusa. (I82c62, b/171624638)
- 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 quitó FocusState2, que era obsoleto. (I686cb, b/168686446)
- ZIndexModifier ahora es un objeto interno. (I1808b, b/171493718)
- Se actualizó el tipo de datos que se muestra del método lerp en los parámetros Size para mostrar un parámetro Size no nulo a fin de evitar cuadros innecesarios. (Ib0044)
- Se agregó TestMonotonicFrameClock para probar el código que se basa en MonotonicFrameClock de Compose para esperar eventos de fotogramas de composición con runBlockingTest de kotlinx-coroutines-test (I4402f).
- Se quitó GestureScope.localToGlobal (I15299, b/171462785).
- Se agregó el buscador
onAllNodesWithSubstring
. (I81dd7, b/171462889) - androidx.ui.test dejó de estar disponible. Migra a androidx.compose.ui.test y androidx.compose.ui.test.junit4 (I452e8).
Correcciones de errores
- Se movió captureToBitmap a captureToImage. (I86385)
- 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 actualizó TextFields para que acepte KeyboardOptions. (Ida7f3)
- Se cambió el nombre de KeyboardOptions a ImeOptions. (I82f36)
- Se movió KeyboardType y ImeAction a KeyboardOptions. (I910ce)
- Se agregó provideDefault como alternativa para proporcionar ambientes y se puede usar a fin de especificar valores ambientales que solo se establecerán cuando no se haya proporcionado ningún valor ambiental. (Id6635, b/171024925)
- BaseTextField dejó de estar disponible. En su lugar, usa BasicTextField. (I896eb)
- Se introdujo el módulo ui-test-junit4. (Ib91f8)
- Se cambió el nombre de
relativePaddingFrom
apaddingFrom
. Se agregó el modificadorpaddingFromBaseline
para especificar distancias de límites de diseño a la línea de base del texto. (I0440a, b/170633813) - Se cambió el nombre de LaunchedTask a LaunchedEffect para conservar la coherencia con las API de SideEffect y DisposableEffect. No se permite el uso de LaunchedEffect sin parámetros de asunto para fomentar las prácticas recomendadas. (Ifd3d4)
- Se incorporaron recursos componibles que se reescriben cuando se actualiza la configuración (I6387c, b/167352819)
- Recomposer ahora requiere CoroutineContext en la construcción. (Ic4610)
- Se suman valores
zIndex
cuando se aplican variosModifier.zIndex()
. Anteriormente, ganaba el primero. (Ic514c, b/170623936) - Se realizaron cambios en la implementación interna de SlotTable que no deberían afectar a la API pública (If9828)
- Se agregó la opción IME de corrección automática del teclado. (I57b8d)
- Se movió androidx.ui.test a androidx.compose.ui.test (I9ffdb).
- Se quitó TKeyboardOptions.toImeOptions de la API pública. (Ic2e45)
Contribución externa
- Se inhabilitó la publicación del artefacto interno androidx.compose.ui:ui-text-android. (Ib93fa)
Versión 1.0.0-alpha06
28 de octubre de 2020
Lanzamiento de androidx.compose.ui:ui-*:1.0.0-alpha06
. La versión 1.0.0-alpha06 contiene estas confirmaciones.
Cambios en la API
- Recomposer ahora es CompositionReference y es un elemento superior de composición válido. El Recomposer explícito ahora es obligatorio en menos lugares. (I4036f)
- VectorPainter dejó de estar disponible y se reemplazó por rememberVectorPainter para indicar mejor que la API componible aprovecha internamente "remember" para conservar datos entre las composiciones (Ifda43)
- Se actualizó la API de Modifier.drawWithCache para exponer ContentDrawScope como alcance del receptor en lugar de DrawScope para proporcionar a las implementaciones la capacidad de reordenar los comandos de dibujo. Esto sirve para combinar o ajustar casos de uso en los que los píxeles de contenido deben procesarse primero para que el algoritmo del modo de variación correspondiente se aplique de forma correcta (Ie7ec8)
- Se movió SimpleContainer a PopupTestUtils.kt. (I78c57)
- ConsumedData ya no es una clase de datos. Para obtener más información, consulta https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219. (I1737f)
- Se corrigió la posición del controlador Rtl. (I6e1e0)
- Se refactorizaron DrawScope y ContentDrawScope para que sean interfaces en lugar de clases abstractas.
- Se creó la implementación de CanvasDrawScope de DrawScope.
- Se refactorizaron implementaciones de DrawScope para usar CanvasScope.
- Se creó DrawContext para unir dependencias de DrawScope.
- Se quitaron los métodos obsoletos de DrawScope. (I56f5e)
- 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 dePointerInputFilter.onPointerEvent(...)
, ahora puedes mutar los datos de consumo de los objetos PointerEvents pasados. (I6acd0) - IntrinsicMeasureScope y MeasureScope se convirtieron en interfaces. (I1a087, b/170461665)
- Se ocultó la función de combinación para AlignmentLine. (I9da1a, b/170612900, b/170611568)
- Se agregó la capacidad de especificar información del inspector en un modificador compuesto. (Idee08, b/163494569)
- Se agregó la opción SelectAll al menú de selección. (Ief02b)
- Se actualizó DrawTransform.rotate para tomar un parámetro dinámico predeterminado del centro que coincida con la documentación.
- Se actualizó DrawScope.rotateRad a fin de consumir un Offset para que el punto dinámico coincida con otros métodos de transformación.
- La sobrecarga de DrawScope.rotateRad que consumía números de punto flotantes para la coordenada x e y del valor dinámico dejó de estar disponible
- (Iffcbb, b/170434992)
Correcciones de errores
- Se habilitó la comprobación de lint de API para MissingGetterMatchingBuilder en androidx. (I4bbea, b/138602561)
- Se agregó una prueba. (I6b8ae)
- 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 IME KeyboardCapitalization. (I8ac38)
- Se agregó la opción de teclado de una sola línea a CoreTextField. (I72e6d)
- Se movió SimpleContainer a PopupTestUtils.kt (I65c3e).
- 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 mejoró la interoperabilidad de Android al continuar enviando MotionEvents a vistas secundarias de Android que muestran un resultado falso para onTouchEvent en todas las acciones excepto
ACTION_DOWN
. (I94c5a, b/170320973) - Se creó Box como función intercalada. (Ibce0c, b/155056091)
Contribución externa
- Compatibilidad con diferentes configuraciones regionales para
AnnotatedString.capitalize
yAnnotatedString.decapitalize
. (I4aa7f)
Versión 1.0.0-alpha05
14 de octubre de 2020
Lanzamiento de androidx.compose.ui:ui-*:1.0.0-alpha05
. La versión 1.0.0-alpha05 contiene estas confirmaciones.
Cambios en la API
- Se agregó una DSL para especificar la información de inspección. (Ic9a22)
- Se movió LongPress a Text. (Iff2bc)
- El objeto experimental Modifier.pointerInput suspende la entrada del modificador. (Ia77d2)
- Se agregaron las acciones de accesibilidad de copiar, pegar y cortar. (I6db4f)
- Se quitó el constructor público para AndroidOwner. (Iacaef)
- Las ventanas emergentes y los diálogos ahora heredan FLAG_SECURE desde la ventana superior. También se agregó la opción de configurar esto explícitamente. (I64966, b/143778148, b/143778149)
Los datos de consumo ahora son mutables. Además, las llamadas a funciones de extensión que generan consumo ahora no muestran un nuevo objeto PointerInputChange, sino que modifican el objeto PuinterInputChange proporcionado.
Este es el primero de 2 pasos para hacer que los datos de PointerEvent sean mutables y que el código de usuario no pueda editar otros datos del puntero. El segundo paso es quitar el tipo de datos que se muestra de
List<PointerInputChange>
dePointerInputFilter.onPointerEvent(...)
. (Id067e)Se inhabilitaron Selection en Text y un objeto Demo. (Ie7e97)
Ahora, onGloballyPositioned es una función intercalada (I15830).
Se cambió el nombre de OnPositionedModifier a OnGloballyPositionedModifier y onPositioned() a onGloballyPositioned(). (I587e8, b/169083903)
Se agregó la propiedad hasPendingMeasureOrLayout a Owner para indicarle al propietario si tiene derechos de diseño pendientes (I3d9f8, b/169038599)
Se agregó una API para que borre el enfoque de manera programática (Ie1dc2, b/161487952).
Se quitó
PointerInputFilter.onPointerInput(...)
.PointerInputFilter.onPointerEvent(...)
debe usarse en su lugar. (I6f04a)Cambios a Size
- Se quitó Size.getFliped.
- Se quitó Size.rem.
- Se quitó Size.truncDiv. (Ief44d, b/169790720)
Como parte de la estandarización de los valores sentinela para las clases intercaladas, se cambia el nombre a Color.Unset a Color.Unspecified para mantener la coherencia con otras clases intercaladas. (I97611, b/169797763)
Se agregó TextOverflow.None. Cuando el desbordamiento sea None, Text ya no lo controlará y notificará su tamaño real a LayoutNode. (I175c9, b/158830170)
Se cambió el nombre del parámetro scope dentro de AnnotatedString.Builder.addStringAnnotation a tag para mantener la coherencia de la API. (I7c8cb)
Correcciones de errores
- Se mejoró el rendimiento de desplazamiento de LazyColumn/Row al hacer menos trabajo de subcomposición en cada desplazamiento. Se agregó el nuevo método hasInvalidations() para la clase Composición. Se cambió el nombre del método hasPendingChanges() de Recomposer por hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371).
- 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)
- El orden de las llamadas a place() en los diseños personalizados ahora define el orden de dibujo para los elementos secundarios. (Ibc9f6)
- Se agregó compatibilidad con la conversión de AnnotatedString a SpannableString para la accesibilidad. (Ief907)
- Se agregaron stubs para las clases de Android que se encuentran en plataformas anteriores a fin de evitar el uso de reflejo cuando sea posible. (Ia1790)
- Error corregido: Si el teclado en pantalla hacía que la app tradujera, las coordenadas de entrada del puntero se convertían en errores (Ic4cec, b/163077821)
Versión 1.0.0-alpha04
1 de octubre de 2020
Lanzamiento de androidx.compose.ui:ui-*:1.0.0-alpha04
. La versión 1.0.0-alpha04 contiene estas confirmaciones.
Cambios en la API
- Se agregó OwnerScope para permitir la recopilación de alcances de observación de diseños y dibujos cuando ya no son válidos. (Ic4cf8)
- Se agregó OnRemeasuredModifier y onSizeChanged() para recibir una devolución de llamada cuando cambió la medida y el tamaño del diseño del contenido, respectivamente. (I657cf, b/154108792)
- Se agregó la acción de semántica de clics largos. (I6281b, b/156468846)
- FocusManager ahora es privado. (I7872f)
Se actualizó la implementación para crear una implementación dedicada de DrawCacheModifier en lugar de agregar propiedades opcionales en DrawModifier.
Se actualizó la documentación para varios métodos. (Ibd166)
Se creó el intercalado de TextRange para evitar la creación de objetos. (Id034b)
Ya no se pueden leer PlacementScope#parentWidth ni PlacementScope#parentLayoutDirection desde el bloque de ubicación de un diseño personalizado. (Icc1ae, b/168295623)
Se agregó AccessibilityScrollState a las propiedades de semántica. (Ifeda9)
Se introdujo Modifier.drawWithCache para admitir la creación de un objeto de dibujo que recree condicionalmente dependencias que dependan de información de tamaño/estado. (I376dc)
Se quitó ParagraphConstraints. Ahora, el ancho se pasa directamente al párrafo. (Ica712)
Correcciones de errores
- Se actualizaron varias API de gráficos.
- Se actualizaron las API de transformación de escalamiento y rotación a fin de consumir un solo parámetro de compensación para representar la coordenada dinámica, en lugar de parámetros flotantes separados para las coordenadas x/y en DrawScope y DrawTransform.
- Se quitaron los métodos Rect.expandToInclude y Rect.join.
- Se actualizó la documentación de Radius para indicar el óvalo además del elíptico.
- Se agregó documentación para indicar que el constructor público para la clase de Radius intercalado no se debe llamar directamente, sino que se debe crear una instancia de los objetos Radius a través de sus constructores de funciones.
- Se quitaron las API de RoundRect para consultar topRight, bottomRight, bottomCenter, etc.
- Rect.shift dejó de estar disponible y se reemplazó por Rect.translate.
- Se quitaron las API de RoundRect.grow y Rect.shrink.
- Se cambió el nombre de RoundRect.outerRect a Rect.boundingRect.
- Se quitaron los métodos RoundRect.middleRect/tallMiddleRect/wideMiddleRect y Rect.isStadium.
- Se cambió el nombre de RoundRect.longestSide a RoundRect.maxDimension.
- Se cambió el nombre de RoundRect.shortestSide a RoundRect.minDimension.
- Se modificó RoundRect.center para que sea una propiedad en lugar de una función.
- Se actualizó el constructor RoundRect para consumir propiedades de Radius en lugar de parámetros individuales para valores de radio x/y.
- Se quitaron las API de tamaño que asumían que se trataba de un rectángulo con el origen en 0,0.
- Se agregó una API destructiva a Radius.
- Se migraron varias funciones de extensión de RoundRect para que sean propiedades.
- (I8f5c7, b/168762961)
- foundation.Box dejó de estar disponible. Usa foundation.layout.Box en su lugar. (Ie5950, b/167680279)
- Se cambió el nombre de Stack a Box. La función Box anterior dejará de estar disponible y se usará la nueva función Box en compose.foundation.layout. El comportamiento de la nueva función Box es apilar elementos secundarios uno encima de otro cuando existen varios, a diferencia de la anterior, cuyo comportamiento era similar al de una columna. (I94893, b/167680279)
- Los parámetros de decoración de Box dejaron de estar disponibles. Si deseas incluir decoraciones o relleno en tu cuadro, utiliza modificadores (Modifier.background, Modifier.border, Modifier.padding). (Ibae92, b/167680279)
- Se actualizaron varias API de gráficos.
- Se actualizaron las API de DrawScope con métodos de transformación con alcance para indicar que la transformación solo se aplica dentro de la devolución de llamada y se quita una vez invocada la devolución de llamada.
- Se actualizó la documentación de clipPath para hacer referencia a Path en lugar del rectángulo redondeado.
- Se corrigió el espaciado en la documentación del parámetro en clipPath.
- Se cambió el nombre de DrawScope.drawCanvas a drawIntoCanvas y se quitó el parámetro de tamaño.
- Se cambió el nombre de los parámetros dx/dy en el método de inserción a horizontal y vertical.
- Se agregó una sobrecarga de inserción que proporciona el mismo valor de inserción a los 4 límites.
- Se quitó la documentación del método de inserción que indicaba que la inserción se aplicaba a los 4 lados.
- Se actualizó la documentación de la clase Rect.
- Se actualizaron los comentarios en los parámetros Rect para que coincidan con el estilo de KDoc.
- Se quitaron Rect.join and Rect.expandToInclude.
- Se creó una sobrecarga para Rect.translate (desplazamiento), y Rect.shift dejó de estar disponible.
- (If086a, b/167737376)
- 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).
- Quita SelectionContainer de Top para inhabilitar la selección predeterminada y evitar un comportamiento inesperado. Se puede usar SelectionContainer específicamente para ajustar el contenido que debe seleccionarse. (I8dfe0, b/158459594)
Versión 1.0.0-alpha03
16 de septiembre de 2020
Lanzamiento de androidx.compose.ui:ui-*:1.0.0-alpha03
. La versión 1.0.0-alpha03 contiene estas confirmaciones.
Cambios en la API
- Se quitaron las acciones de semántica de desplazamiento hacia adelante y hacia atrás. Se agregaron pasos a AccessibilityRangeInfo. (Ia47b0)
- Se quitó
onInvalidate()
deOwner
.OwnedLayer
ahora controla la invalidación. (Ica72b, b/162061312) Se quitaron métodos de operadores de la API de Size que consumen parámetros Offset. El resultado de estas operaciones no es claro y el tipo de resultado es inesperado. Por ejemplo, no es claro si el parámetro Offset de Size debería mostrar un desplazamiento o un resultado de tamaño con la diferencia.
También se quitaron los métodos obsoletos de la clase Size. (Iec902, b/166514214)
Correcciones de errores
- Se implementó una corrección para los elementos de LazyColumn que, a veces, se presentaban de forma incorrecta y provocaban fallas en algunas condiciones (Ibcf17, b/163066980, b/165921895)
- DpConstraints y las API que usaban esas restricciones dejaron de estar disponibles. (I90cdb, b/167389835)
- Se trasladó
createAndroidComposeRule
yAndroidInputDispatcher
desdeandroidx.ui.test.android
aandroidx.ui.test
. (Idef08, b/164060572) - Se cambiaron de manera coherente los nombres de los usos de Gravity por Align o Alignment en las APIs de diseño (I2421a, b/164077038)
- Se agregaron onNode y otros métodos globales a ComposeTestRule, ya que los actuales dejarán de estar disponibles. (Ieae36)
Versión 1.0.0-alpha02
2 de septiembre de 2020
Lanzamiento de androidx.compose.ui:ui-*:1.0.0-alpha02
. La versión 1.0.0-alpha02 contiene estas confirmaciones.
Cambios en la API
- Quita la devolución de llamada para notificar al propietario cuando cambian los límites de LayoutNode. (If654e, b/166106882)
- Se agregó compatibilidad con parámetros de tipo de relleno en rutas de acceso de gráficos vectoriales para admitir recortes de formas según las reglas de relleno de la ruta de acceso pares, impares o distintas de cero. (I43dd2)
- El tiempo de actividad y la velocidad ahora son clases intercaladas. (I48f4a)
- Ahora la duración es una clase intercalada. (I565eb)
- Agrega una devolución de llamada para notificar al propietario cuando cambian los límites de LayoutNode. (Ic40b3)
Se corrigió el error por el que el constructor de la función Rect con desplazamiento y radio creaba el Rect en el orden de izquierda, derecha, arriba, abajo en lugar de izquierda, arriba, derecha, abajo.
Se quitaron los métodos complementarios obsoletos en Rect y se reemplazaron por los constructores de funciones.
Se agregaron pruebas para verificar los métodos en Rect.kt (I08460, b/165822356).
Correcciones de errores
- Se agregó MutableRect, un rectángulo que se puede modificar. (I71bd2, b/160140398)
- Se reemplazó Matrix4 con Matrix. Se quitaron todas las otras partes del paquete de vectormath. (Ibd665, b/160140398)
La convención de llamada para función de componibilidad cambió. Este es un cambio rotundo del objeto binario. Se deben volver a compilar todas las bibliotecas para que funcionen con esta versión del complemento del compilador de Compose.
Esta modificación no crea un cambio rotundo a nivel de la fuente, ya que las únicas API que cambiaron son las API del compilador que tienen una participación explícita. (I7afd2, b/158123185)
Se corrigió la falla que se producía cuando se enviaba a un PointerInputFilter que provocaba que el PointerInputFilter se quitara de forma síncrona (I58f25)
Versión 1.0.0-alpha01
26 de agosto de 2020
Lanzamiento de androidx.compose.ui:ui-*: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.ui:ui-*:0.1.0-dev17
. La versión 0.1.0-dev17 contiene estas confirmaciones.
Cambios en la API
- El objeto
emitView
dejó de estar disponible. En su lugar, si fuera posible, usaAndroidView
para emitir objetos Views dentro de Compose. Ten en cuenta que la composición directa de objetos Views y ViewGroups no se admitirá en el futuro, a menos que estos sean hojas en el árbol de la composición. En ese caso, esto se logra mediante AndroidView. (I29b1e, b/163871221) FocusState2
dejó de estar disponible y se reemplazó porFocusState
. (Ia8b79, b/160822876, b/160923332)- Se quitaron las sobrecargas de AndroidView obsoletas. (I946b9, b/163802393)
- Las emisiones personalizadas ahora pueden declarar que uno o más de sus métodos set pueden omitirse y reescribirse de forma independiente de la emisión. (Ibbd13)
Se cambiaron las clases de Vector para que ya no sean clases de datos, dado que se usa la misma instancia de objeto para la composición.
Se agregó la marca mutableStateOf en VectorPainter para volver a dibujar condicionalmente si cambia el contenido del vector.
Se refactorizó la instancia de VectorComponent para que forme parte de VectorPainter, ya que se vuelve a usar en todas las composiciones.
Se actualizaron GroupComponent y PathComponent para que sus campos de nombre puedan mutar (Ieae45, b/151378808).
Se quitaron
onChildPositioned
yOnChildPositionedModifier
. En su lugar, los desarrolladores deben usaronPositioned
yOnPositionedModifier
en el diseño secundario. (I4522e, b/162109766)Offset se convirtió en una clase intercalada. (Iaec70)
Se agregó un parámetro modificador a SelectionContainer. (I4aada, b/161487952)
Se quitó el elemento obsoleto FocusModifier. (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)
Se agregó la lambda
mergePolicy
aSemanticsPropertyKey
. 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)Constraints ahora es una clase intercalada. (I88736)
Se agregó FocusManager, que quita la lógica de enfoque común de AndroidComposeView. (I528ef, b/161487952, b/162206799)
Se actualizaron los nombres de PointerEventPass para la versión alfa. (Ifda6f)
IntOffset ahora es una clase intercalada. (Iac0bf)
IntSize ahora es una clase intercalada. (I2bf42)
Se cambió el nombre de
PlacementScope.placeAbsolute()
aPlacementScope.place()
, y el delPlacementScope.place()
anterior aPlacementScope.placeRelative()
. Como resultado, el métodoPlacementScope.place()
ya no duplicará automáticamente la posición en contextos de derecha a izquierda. Si quieres que eso ocurra, usaPlacementScope.placeRelative()
en su lugar. (I873ac, b/162916675)AlertDialog ahora usa FlowRow para los botones. (I00ec1, b/161809319, b/143682374)
Algunas herramientas de prueba ya no son públicas porque no están en el lugar correspondiente. Se harán públicas en el futuro. (I32ab1)
Se refactorizó la organización del código de entrada del puntero. (Ie3f45)
PxBounds dejó de estar disponible y se reemplazó por Rect. Se actualizaron todos los usos de PxBounds con rect y se agregaron la baja y reemplazo adecuados, con anotaciones para ayudar con la migración. (I37038, b/162627058)
Se quitó KeyEvent2 porque era obsoleto. En su lugar, usa KeyEvent. (Ied2d0, b/162097587)
KeyEvent tiene una propiedad Unicode que se puede usar para obtener el carácter Unicode generado por la combinación especificada de tecla y estado de la tecla meta. (If3afc)
Se hizo una API de habilitación con el evento personalizado DelayUp y las clases relacionadas, ya que es muy probable que se modifiquen (I56d6f)
Se quitaron 2 PointerEventPasses que ya no son necesarios. (I3dd9d)
Se agregaron los parámetros color, shadow y TextDecoration a Paragraph.paint. Esta función sirve para evitar la recreación innecesaria de Paragraph (I81689)
Correcciones de errores
- Se quitaron las devoluciones de llamada onFocusChanged de TextField. En su lugar, usa Modifier.focusObserver. (I51089, b/161297615)
- Modifier.drawBorder dejó de estar disponible. En su lugar, usa Modifier.border. Se reemplazó la clase de datos Border por BorderStroke. (I4257d, b/158160576)
Se quitaron las llamadas a FrameManager obsoletas.
Se modificaron las APIs de composición interna para reducir la sobrecarga para realizar el seguimiento de los objetos de estado, como
mutableStateof()
(I80ba6).Se quitaron VerticalScroller y HorizontalScroller. En su lugar, usa ScrollableColumn/Row. Se quitó Modifier.drawBackground. Usa Modifier.background. (I73b0d, b/163019183)
Se corrigió la falla que ocurría cuando se utilizaba dentro del bucle algo que guardaba el estado. Ahora se permite tener la misma clave en savedInstanceState(), y ya se ajustó la API de UiSavedStateRegistry en virtud de este requisito nuevo (I4ab76, (b/160042650), b/156853976, b/159026663, b/154920561).
El elemento componible
state { ... }
dejó de estar disponible y se reemplazó por 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)
Versión 0.1.0-dev16
5 de agosto de 2020
Lanzamiento de androidx.compose.ui:ui-*:0.1.0-dev16
. La versión 0.1.0-dev16 contiene estas confirmaciones.
Cambios en la API
- OnChildPositioned dejó de estar disponible. En su lugar, usa OnPositioned en el elemento secundario. (I87f95, b/162109766)
- SetViewContent dejó de estar disponible. En su lugar, usa setContent. (I7e497, b/160335130)
- Se agregó la API de AndroidViewBinding para aumentar y componer los recursos de diseño según ViewBinding. (I081c6)
- KeyEvent reemplazó a KeyEvent2. (I2d770, b/162097585)
- Se agregó compatibilidad con la tecla de hardware Alt. (I9036b)
- FocusManager ya no está disponible. En su lugar, usa Modifier.focus(), Modifier.focusObserver() y Modifier.FocusRequester(). (I74ae4, b/162211322)
- loadVectorResource admite atributos trimPath. (I808fe)
- Se movió diálogo a la IU. (I47fa6)
- Se quitaron 2 PointerEventPasses que ya no son necesarios. (I33ca7)
- Se implementó PointerInteropModifier, que permite recibir MotionEvents e interactuar con Compose como si se tratara de la implementación de una vista de Android. (Ieb08c)
- Se quitó el modificador de etiquetas obsoleto. En su lugar, usa layoutId. (Idaa05, b/162023919)
- 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)
- Compatibilidad con el recorte de ruta de acceso en gráficos vectoriales. (Ie16c9, b/158188351)
- Se agregó Modifier.layout(), que permite crear un modificador de diseño personalizado de forma práctica (I73b69, b/161355194).
- Se agregó una nueva API de AndroidView, y las que ya existen dejaron de estar disponibles. (I5bcfd)
- Modifier.plus dejó de estar disponible; en su lugar, usa Modifier.then. "Then" tiene un indicador de orden más fuerte, a la vez que prohíbe la escritura de
Modifier.padding().background() + anotherModifier
, el cual interrumpe la cadena y es más difícil de leer (Iedd58, b/161529964). - Se agregaron subclases View de [Abstract]ComposeView para alojar contenido de Compose en una jerarquía de vistas (I46357)
Row
yColumn
ahora son funciones intercaladas, lo que reduce en forma significativa la sobrecarga asociada a su uso. (I75c10)- Se agregó SubcomposeLayout. Se trata de un elemento primitivo de bajo nivel que permite componer los elementos secundarios durante la medición si queremos usar algunos valores disponibles más adelante durante la medición de la composición del subárbol. Por ejemplo, WithConstraints no se implementa mediante SubcomposeLayout. (I25cc8)
- Se agregó
SemanticsNode.positionInRoot
para obtener la posición de un SemanticsNode en relación con la raíz de la jerarquía de Compose. (Icdf26, b/161336532) - Los MotionEvents se pasaron de Android a Compose y nuevamente a Android. (I14be8, b/158034713)
- Se quitó dropdownPopup. (I00430)
- Se corrigió la posición de la ventana emergente en las pantallas cortadas. (Idd7dd)
- Se agregó una acción de accesibilidad para obtener TextLayoutResult. (I9d6e6)
- Se agregó remeasurementModifier, que permite volver a medir el diseño de forma síncrona. 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)
- Se quitó getLineEllipsisOffset/getLineEllipsisCount. En su lugar, usa getLineVisibleEnd/getLineEnd/isLineEllipsized. (I85aa2)
- Se agregaron algunas marcas/anotaciones a fin de aplicar prácticas recomendadas. (I66b20)
- Se expusieron más APIs de líneas en TextLayoutResult (I79bd2)
- Ahora se puede acceder mediante Foo.VectorConverter a los convertidores vectoriales para convertir unidades integradas (p. ej., Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter, etc.) (I3e273).
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 actualizó el consumo de la API de BlendMode de Compose para asignar correctamente entre los modos PorterDuff y BlendModes del framework de Android, según el nivel de API. Se introdujo la API de BlendMode#isSupported con el objeto de que funcione como una consulta de capacidad para determinar si BlendMode es compatible con el dispositivo antes de que se lo utilice (I0ef42)
- 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 quitó
SemanticsNodeInteraction.performPartialGesture
. Se usaSemanticsNodeInteraction.performGesture
en su lugar. (Id9b62) - Se cambió el nombre de
LazyColumnItems
aLazyColumnFor
. Se cambió el nombre deLazyRowItems
aLazyRowFor
. (I84f84) - Se acopló el paquete
foundation.shape.corner
afoundation.share
. (I46491, b/161887429) - Se cambió el nombre de
AndroidComposeTestRule
porcreateAndroidComposeRule
(I70aaf) - Se agregaron más APIs a
TextLayoutResult
. (Id7e04) - Se cambió el nombre de
FilledTextField
de Material porTextField
, y el delTextField
principal porBaseTextField
para que la API deseada resulte más fácil de encontrar y usar (Ia6242, b/155482676). - Se cambió el nombre de Modifier.drawBackground por Modifier.background (I13677).
Versión 0.1.0-dev15
22 de julio de 2020
Lanzamiento de androidx.compose.ui:ui-*:0.1.0-dev15
. La versión 0.1.0-dev15 contiene estas confirmaciones.
Actualización de dependencias
- Para usar la versión
0.1.0-dev15
de Compose, deberás actualizar tus dependencias de acuerdo con los nuevos fragmentos de código que se muestran más arriba en Cómo declarar dependencias.
Cambios en la API
- El objeto FocusModifier dejó de estar disponible y se reemplazó por los elementos Modifier.focus, Modifier.focusRequester y Modifier.focusObserver. FocusState y FocusDetailedState dejaron de estar disponibles y se los reemplazó por FocusState2 (I46919, b/160822875, b/160922136).
- Se agregó un modificador para observar el cambio de estado del enfoque. (I05866, b/160924455, b/160923326)
- Se agregó un modificador para solicitar cambios de enfoque (I8dd73, b/161182057, b/160924778).
- Se ajustó el menú de la barra de herramientas para mostrar los botones Copiar, Cortar y Pegar de forma correcta. (Id3955)
- Las propiedades semánticas de valor único ahora usan un estilo de llamada.
Por ejemplo, "semantics { hidden = true }" ahora se escribe como:
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412) - Se agregó el objeto Modifier.focus que reemplaza al elemento FocusModifier. (Ib852a, b/160924778)
- Se agregó el objeto FloatingToolbar para la selección del elemento TextField. (Ie8b07)
- Se agregó una anotación de API experimental para las API relacionadas con entradas clave. (I53c0a)
- Se agregó una anotación de API experimental para todas las APIs relacionadas con el enfoque (I53b24, b/160903352).
- Se agregó el objeto FocusState2 que reemplazará al elemento FocusDetailedState. (I0a3ba, b/160822595)
- Se agregó el elemento ExperimentalFocus, que es una anotación @OptIn para la API de Focus (I1544b, b/160820961)
- Se agregó una clase de unidad IntBounds, que representa los límites de píxeles enteros del diseño. Se actualizó la API de PopupPositionProvider para usarla. (I0d8d0, b/159596546)
- El aplicador ahora requiere un método clear() para desechar las composiciones. (Ibe697)
- KeyEvent dejó de estar disponible y se reemplazó por KeyEvent2. (I68730)
- Se agregó una nueva marca opcional useUnmergedTree a fin de probar los buscadores. (I2ce48)
- Se creó la API experimental LayoutNode. (I4f2e9)
Se agregaron métodos de copia a varios tipos de clases intercaladas, que incluye lo siguiente:
- Desplazamiento
- Tamaño
- Radio
- Movimiento
TransformOrigin
El método del objeto complementario Size.copy dejó de estar disponible para el método de copia de instancias (Ife290, b/159905651).
Los objetos Popups, Dialogs y Menus ahora heredan el elemento MaterialTheme contextual. (Ia3665, b/156527485)
Se cambió el nombre de TextDirection por ResolvedTextDirection. (I3ff38)
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).
Refactoriza el objeto SelectionHandles para reutilizar. (I420e0)
Se quitó el objeto Clickable. Usa el objeto Modifier.clickable. (I84bdf)
Se borraron los objetos TestTag y Semantics. En su lugar, usa Modifier.testTag y Modifier.semantics. (I15ff0, b/158841414)
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 cambió el nombre del objeto Modifier.tag por Modifier.layoutId para evitar confusiones con el elemento Modifier.testTag (I995f0)
El objeto Placeable#get(AlignmentLine) ya no muestra las posiciones Int de la línea de alineación como nulas. Si falta la línea de alineación consultada, se mostrará el objeto AlignmentLine.Unspecified. (I896c5, b/158134875)
Se agregó un parámetro modificable al elemento componible AndroidView (I48a88, b/158746303)
El elemento Semantics() dejó de estar disponible. En su lugar, usa el objeto Modifier.semantics(). (I72407, b/158841414)
Se agregó el elemento componible viewModel() que permite crear o conseguir el objeto ViewModel ya creado de manera similar a cómo funciona en las clases Activity o Fragment (I5fdd1).
Se reemplazó el uso del elemento IntPx con Int. Se reemplazó el objeto IntPxPosition con IntOffset. Se reemplazó el elemento IntPxSize con IntSize. (Ib7b44)
A fin de consolidar las clases utilizadas para representar la información de tamaño, se estandarizó el uso de la clase Size en lugar de PxSize. Esto habilita las ventajas de una clase intercalada que permite empaquetar 2 valores de punto flotante para representar el ancho y la altura. (Ic0191)
A fin de consolidar las clases utilizadas para representar la información de posicionamiento, se estandarizó el uso de la clase Offset en lugar de PxPosition. Esto habilita las ventajas de una clase intercalada que permite empaquetar 2 valores de punto flotante para representar los desplazamientos x e y. (I3ad98)
Se reemplazó el uso de la clase Px en varias clases de Compose como parte de un gran esfuerzo de refactorización para depender solo de los tipos Dp y primitivos para los parámetros de píxeles. Se borró por completo la clase Px. (I3ff33)
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 componente TestTag dejó de estar disponible. En su lugar, usa Modifier.testTag. (If5110, b/157173105)
Se quitó la implementación no-op predeterminada del objeto ParentDataModifier#modifyParentData, ya que equivalía a no haber implementado la interfaz. (I0deaa)
Se quitó el elemento ScaleFit, que anteriormente había quedado obsoleto. En su lugar, usa el objeto ContentScale. (Ifbc5b)
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)
Se agregó el componente DropdownMenu en ui-material, una implementación del menú de Material Design (I9bb3d)
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 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 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).
El objeto DoubleTapGestureFilter ahora desambigua el elemento SingleTapGestureFilter en todo el árbol. (If92b1)
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 modificó la API de los modificadores DrawLayer: se cambió el nombre del objeto outlineShape a shape y tiene el valor predeterminado de RectangleShape, ahora sin valores anulables. Se cambió el nombre del elemento clipToOutline a clip; se quitó el objeto clipToBounds, ya que es igual que clip == true con RectangleShape (I7ef11, b/155075735).
Se actualizaron las API de Compose de nivel superior que exponen un lienzo para mostrar el objeto CanvasScope en su lugar. Esto elimina la necesidad de que los consumidores mantengan sus propios objetos Paint. Para los usuarios que aún necesitan acceso a Canvas, pueden usar el método de extensión drawCanvas que proporciona una devolución de llamada a fin de emitir comandos de dibujo con el Canvas subyacente (I80afd)
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)
Se quitó la interfaz de LayoutModifier obsoleta. (I2a9d6)
Las funciones de medición intrínseca en los objetos Layout y LayoutModifier2 ahora tienen un receptor IntrinsicMeasureScope que proporciona una API de consulta intrínseca con dirección de diseño propagada de forma implícita (Id9945)
Se pueden medir los elementos secundarios Layout y LayoutModifier con una dirección de diseño diferente. (Ibd731)
Se agregó el elemento Modifier.zIndex() para controlar el orden de dibujo de los elementos secundarios dentro del mismo diseño de nivel superior. Se cambió el nombre de la propiedad de elevación de DrawLayerModifier por shadowElevation, y esta propiedad ya no controla el orden del dibujo. Se cambió el orden de los parámetros de DrawShadow: el primer parámetro ahora es elevation y el segundo es shape, con una configuración RectangleShape predeterminada. (I20150, b/152417501)
Se quitaron los elementos onSizeChange y onPositionChange en Owner. (I5c718)
Se agregó el objeto Constraints2, una copia del elemento Constraints que solo admite valores de restricción Int, en lugar del parámetro IntPx. Se quitará el objeto IntPx y se asumirá que todas las restricciones de número entero son píxeles como Android.
- También se agregó el objeto IntSize, que finalmente reemplazará al elemento IntPxSize. (I4b43a)
Se permitió la creación de instancias de alineación con valores arbitrarios. Se agregaron alineaciones 1D. (Ia0c05)
El objeto alignToSiblings ahora acepta un elemento Measured en lugar del parámetro Placeable. (I5788d)
-
- Se cambió el nombre del objeto ScaleFit por ContentScale
- Se trasladó el elemento ContentScale del módulo ui-graphics al módulo ui-core a fin de quede ubicado en el mismo módulo que la API de Alignment.
- Se cambió el nombre del objeto FillMaxDimension por Crop.
- Se cambió el nombre del objeto FillMinDimension por Fit.
- Se cambió el nombre del objeto Fit por Inside para que coincidan mejor.
- Equivalentes de ImageView.ScaleType
- Se agregó documentación que indica que combinar Crop y Alignment.Center genera lo mismo que ImageView.ScaleType.CENTER_CROP, que el uso de Fit con Alignment.Center genera lo mismo que ImageView.ScaleType.FIT_CENTER, y que el uso de Inside con Alignment.Center genera lo mismo que ImageView.ScaleType.CENTER_INSIDE.
Compatibilidad con lectura de derecha a izquierda para modificadores de dibujo. (I0aaf9)
Se lanzó la API para aumentar vistas de Android desde XML. Consulta la demostración de ViewInCompose para obtener más detalles. (I42916)
Mejora la API de DrawModifier:
- Se creó el alcance del receptor para el objeto draw() ContentDrawScope.
- Se quitaron todos los parámetros de draw().
- El objeto DrawScope tiene la misma interfaz que el elemento CanvasScope anterior.
- ContentDrawScope tiene el método drawContent() (Ibaced, b/152919067).
Se agregaron los objetos positionInParent y boundsInParent para el elemento LayoutCoordinates (Icacdd, b/152735784)
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)
Se agregó LayoutModifier2, una nueva API para definir modificadores de diseño; LayoutModifier quedó obsoleto (If32ac).
Se reemplazaron el modificador y el operador por funciones de extensión (I225e4).
Se agregaron propiedades translationX/Y para admitir la compensación de la lista de visualización de comandos de dibujo para una capa determinada. Esto es útil para mover contenido en respuesta a animaciones o eventos táctiles. (I8641c)
Se agregaron parámetros pivotX, pivotY a las APIs de Layers para admitir la rotación y el escalamiento en un punto específico de una capa (Icf7c3).
Se agregaron OnPositionedModifier y OnChildPositionedModifier para reemplazar las funciones de componibilidad OnPositioned y OnChildPositioned (I2ec8f)
Se agregó el objeto LayerModifier, un modificador que permite agregar un elemento RenderNode a una capa. Permite configurar el recorte, la opacidad, la rotación, el escalamiento y las sombras. Reemplazará al objeto RepaintBoundary. (I7100d, b/150774014)
Se permitió que la dirección del diseño se propagara desde el nodo de diseño de nivel superior hasta los secundarios. Se agregó un modificador de dirección de diseño. (I3d955)
El componente de pila admite la dirección de derecha a izquierda. (Ic9e00)
Asistencia inicial para lectura de derecha a izquierda en el diseño de Compose. (Ia5519)
Se combinaron Density y DensityScope en una sola interfaz. En lugar de ambientDensity(), ahora puedes usar DensityAmbient.current. En lugar de withDensity(density), usa with(density). (I11cb1)
Se modificó el objeto LayoutCoordinates para que el elemento providedAlignmentLines sea un conjunto en lugar de un mapa y para que el objeto LayoutCoordinates implemente el operador get() a fin de recuperar un valor. Esto permite que los modificadores cambien con más facilidad uno o más valores del conjunto, sin que se cree una colección nueva para cada modificador. (I0245a)
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)
Mejoras en la superficie de la API de Constraints (I0fd15)
Se creó la API de CanvasScope que une un objeto de Canvas para 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ó la API de MaskFilter sin usar, ya que se usa de manera limitada y no se optimiza para la aceleración de hardware en la mayoría de los casos de uso (I54f76).
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 valor nulo (Iabaa7).
Se ingresaron parámetros rect opcionales adicionales en ImagePainter para admitir el dibujo de una subsección de ImageAsset subyacente. (I0ea9e)
Se agregó el objeto Unset Color para representar un valor sin configurar, sin el recuadro Colors. (If901a)
Se agregaron métodos de extensión Canvas.rotate y Canvas.scale para consumir coordenadas dinámicas opcionales para las transformaciones. De forma predeterminada, estos métodos se ubican en la esquina superior izquierda de la traslación del lienzo actual.
También se trasladó el objeto Canvas.rotateRad a fin de que sea un método de extensión para mantener la coherencia. (Ibaca6)
Se creó la API de PixelMap para admitir consultas de información de píxeles desde un elemento ImageAsset. (I69ad6)
Se cambió el nombre del objeto toFrameworkRect/toFrameworkRectF por toAndroidRect/toAndroidRectF para que coincida con la convención de nomenclatura para las conversiones de objetos entre Compose y las APIs del framework de Android sobre las que están compiladas. También se actualizaron los documentos de estas API. (I86337)
Se agregó la API de VectorPainter a fin de reemplazar la API de subcomposición existente para gráficos vectoriales. El resultado de la subcomposición es un objeto VectorPainter, en lugar de un elemento DrawModifier. El objeto DrawVector anterior que admite composición dejó de estar disponible y se reemplazó por el elemento VectorPainter.
Se cambió el nombre de la API de Image(Painter) a PaintBox(Painter) Created Vector componible y que se comporta como el elemento Image componible, pero con un parámetro VectorAsset en lugar de un objeto ImageAsset (I9af9a, b/149030271).
Se cambió el nombre de Image a ImageAsset para diferenciar mejor entre los datos de Image y el próximo elemento componible Image, que se utiliza para participar en el diseño y dibujar contenido. Método de extensión _Body:Created en android.graphics.Bitmap, Bitmap.asImageAsset() para crear una instancia útil del objeto ImageAsset para combinar el desarrollo tradicional de aplicaciones para Android con el framework de Compose (Id5bbd).
Se agregó el objeto TextDirection.Content. (I48f36)
Se agregó el operador TextDecoration.plus. (I0ad1a)
De los valores de enumeración de TextDirectionAlgorithm, se quitó el objeto
Force
. (Icc944)Se cambió el nombre de TextDirectionAlgorithm a TextDirection. (I75ce8)
Se implementó el objeto LongPressAndDrag para la selección del elemento TextField. (I17919)
Se agregó el objeto AnnotatedString.getStringAnnotations que muestra todas las anotaciones dentro del rango (I1fa00)
Se cambió el nombre del paquete de androidx.ui.text por androidx.ui.intl dentro de Locale y LocaleList (I8132c).
El cursor de TextField tiene una animación intermitente. (Id10a7)
Cambio en la API: se cambió el nombre del objeto AnnotatedString(builder: Builder) a annotatedString(builder: Builder) (Ia6377)
Cambio en la API: se cambió el nombre del objeto AnnotatedString.Item por AnnotatedString.Range (I2d44d)
Se cambió el nombre del objeto AnnotatedString.Builder.addAnnotationString a addStringAnnotation. (I5059e)
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).
Se agregó el operador de adición para (Text/Paragraph/Span)Style, que delega a la función merge() (Ia1add)
El elemento FontWeight.lerp ya no se ajusta. Sigue siendo una clase de datos. (I521c2)
El constructor del elemento FontWeight ahora es público, ya no es una clase de datos. (Id6b1f)
Se agregaron los objetos getLineStart, getLineEnd, getEllipsisOffset y getEllipsisCount al elemento TextLayoutResult (Ibc801).
Se cambió el nombre del módulo ui-text a ui-text-core. (I57dec)
Se quitó la clase Size sin usar, ya que hay una clase Size duplicada en el módulo ui-geometry que se consume. (I1b602)
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)
Agrega los parámetros paddings, border, shape y background al objeto Box. (I05027, b/148147281)
Correcciones de errores
- 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 cambió el nombre de
runOnIdleCompose
arunOnIdle
. (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)
- IU de Compose ahora admite compilación dentro del objeto ViewGroups sin requerir una nueva composición. Consulta el elemento ViewInteropDemo para ver un ejemplo. (I9ab0b, b/160455080)
- Se agregaron sortWith y removeRange a MutableVector (Icccf7).
- Se implementaron controladores de selección de arrastre para cambiar la selección del elemento TextField (I27032)
- Se quitó la clase intercalada Shader que une la clase de espera NativeShader. Se cambió el nombre del objeto NativeShader por Shader. La clase intercalada Shader unida no agregó ningún valor a la superficie de la API y era una clase intercalada, así que usa la clase NativeShader directamente. (I25e4d)
Se refactorizó el objeto PainterModifier para dejar de proporcionar escalamiento según las restricciones y el parámetro ContentScale especificados. Las implementaciones del objeto Painter deben escalar el contenido de su dibujo en función del tamaño especificado del elemento DrawScope en el que están dibujados.
Se corrigió el problema por el cual se ajustaba el tamaño del mapa de bits en caché del objeto VectorPainter a su configuración predeterminada, en lugar del tamaño determinado para dibujar.
Se actualizó el objeto ImagePainter a fin de escalar su contenido en lugar de depender del elemento PainterModifier para hacerlo en su nombre. (I6ba90)
Se agregó la función withFrameNanos de nivel superior para la sincronización de la animación (Ie34c5).
La anotación @Untracked dejó de estar disponible. Reemplázala con @ComposableContract(tracked=false). (Id211e)
androidx.ui.foundation.TextFieldValue y androidx.ui.input.EditorValue quedaron obsoletos. TextField, FilledTextField y CoreTextField que admiten composición y usan dicho tipo también quedaron obsoletos. En su lugar, usa androidx.ui.input.TextFieldValue. (I4066d, b/155211005)
Se corrigió el problema por el cual el envío de la entrada de un puntero causaba una falla si se quitaba el elemento PointerInputFilters mediante la subcomposición durante el envío. Ya se corrigió ese error. (I1f48b, b/157998762)
Se corrigió el problema por el cual el envío de la entrada de un puntero causaba una falla si se quitaba el elemento PointerInputFilters mediante la subcomposición durante el envío. Ya se corrigió ese error. (Iab398, b/157998762)
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).
El elemento componible Recompose ya no es una abstracción útil. La mayor parte de la recomposición debería ocurrir como resultado de las asignaciones de MutableState. Para todo lo demás, se recomienda usar la función
invalidate
para activar una recomposición del alcance actual (Ifc992)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)
Cambia la estrategia para la generación de código del compilador de Compose. Antes del cambio, el compilador de compose transformaba las llamadas en funciones que admiten composición. Con este cambio, ahora transformamos el cuerpo de este tipo de función sin modificar (en su mayor parte) el sitio de llamada.
Esto significa que la mayor parte de la lógica que se comunica con el tiempo de ejecución de compose sucede al comienzo del cuerpo de la función, en lugar de ocurrir en el sitio de llamada.
Este cambio debería ser compatible con código fuente para cualquier uso de compose. La mayoría de los usuarios de compose no deberían tener que actualizar ningún código como resultado de este cambio.
A fin de brindar compatibilidad con este trabajo, se ha modificado la firma de JVM de todas las funciones que admiten composición. Una función que admite composición y que acepta un solo parámetro se transforma en una función que acepta 3 parámetros. Los parámetros adicionales son Composer, un objeto integer. "clave", que es un valor entero de máscara de bits que se utiliza para propagar metadatos a través de llamadas.
Ahora, Compose también transforma los argumentos predeterminados en una función que admite composición. Lo hace sin introducir una sobrecarga sintética, adicional y predeterminada de la función. Como resultado, este cambio tendrá menos funciones que se definan.
Como consecuencia, se realizarán los siguientes cambios de comportamiento intencionales conocidos:
- Algunas llamadas se omitirán en los casos en que antes no hubiese ocurrido.
- Ahora, se suscriben y se administran correctamente las expresiones que admiten composición en las expresiones de argumento predeterminados.
En este trabajo, se incluyeron algunas optimizaciones: 1. El resultado de las comparaciones de parámetros se propaga a otras funciones que admiten composición mediante el gráfico de llamadas. Como resultado, se realizarán menos comparaciones en el tiempo de ejecución, se reducirá el tamaño de la tabla de ranuras y se omitirán más funciones que admiten composición que antes no se omitían. 2. Los parámetros que se determinan "estáticos" en el tiempo de compilación ya no se comparan ni se almacenan en el tiempo de ejecución. Esto reduce la cantidad de comparaciones y el tamaño de la tabla de ranuras. 3. Se utiliza la estructura para el flujo de control del cuerpo de las funciones a fin de minimizar la cantidad de grupos que se generan. Esto reduce el tamaño de la tabla de ranuras y da como resultado menos trabajo para el tiempo de ejecución. 4. Si los parámetros de envío y recepción para las funciones no se utilizan dentro del cuerpo de la función, no se los incluye para determinar si se puede omitir la función.
La mayoría de los cambios rotundos se realizaron en las API a las que el compilador se orienta de manera directa, y el uso típico de Compose no se verá afectado: 1. Se quitó el objeto Composer::startExpr. 2. Se quitó el objeto Composer::endExpr. 3. Composer::call quedó obsoleto. 4. Se quitaron las sobrecargas del objeto
key
que no son varargs. Usa la versiónvararg
en el futuro. 5. La anotación Pivotal quedó obsoleta. Usa el objetokey
como reemplazo. 6. Se cambió el objeto ScopeUpdateScope::updateScope para esperar un elemento Function3 en lugar de Function1. 7. Se actualizaron los objetos restartableFunction y restartableFunctionN para que incluyan parámetros adicionales de tiempo de compilación. (I60756, b/143464846)Se quitaron los modificadores obsoletos LayoutAlign. (I10877)
Se quitó RepaintBoundary y se reemplazó por DrawLayerModifier. (I00aa4)
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 reemplazó ButtonStyle con funciones distintas y se quitó la sobrecarga de texto (string). Consulta muestras actualizadas para obtener información de uso. (If63ab, b/146478620, b/146482131)
Cambios rotundos en la API de ambients. Consulta el registro y la documentación de
Ambient<T>
para obtener más detalles (I4c7ee, b/143769776).Se cambió el comportamiento del objeto TextDirection predeterminado, según lo establecido por el elemento LayoutDirection. Por ejemplo, si LayoutDirection es de derecha a izquierda, el objeto TextDirection predeterminado también lo será. Anteriormente, el objeto era TextDirection.ContentOrLtr/Rtl. (I4e803)
Corrección de errores: cuando el tamaño y el estilo de la fuente estaban anidados en un objeto AnnotatedString, no se procesaba correctamente el texto. (I77a9d)
Agrega los parámetros que se usan con frecuencia al objeto 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 puede proporcionar directamente los parámetros: Text(textAlign = TextAlign.Center). (I82768)
Se cambió el nombre del módulo ui-android-text a ui-text-android (I68cbe).