Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

IU de Compose

Son los componentes fundamentales de la IU de Compose necesarios para interactuar con el dispositivo, incluidos el diseño, el dibujo y la entrada.
Actualización más reciente Versión estable actual Próxima versión potencial Versión beta Versión alfa
7 de abril de 2021 - - 1.0.0-beta04 -

Estructura

Compose es una combinación de 6 ID 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 correspondiente a cada conjunto de notas de la versión.

GrupoDescripción
compose.animationCrea animaciones en sus aplicaciones de Jetpack Compose para enriquecer la experiencia del usuario.
compose.compilerTransforma las funciones que admite @Composable y habilita las optimizaciones con un complemento de compilador de Kotlin.
compose.foundationEscribe 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.materialCompila las IU 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.runtimeSe 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.uiSon 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 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:

dependencies {
    implementation "androidx.compose.ui:ui:1.0.0-beta04"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerVersion "1.4.32"
        kotlinCompilerExtensionVersion "1.0.0-beta04"
    }
}

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
    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 en esta biblioteca antes de crear uno nuevo. Para agregar tu voto a un error existente, haz clic en el botón de la estrella.

Cómo crear un error nuevo

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

Versión 1.0.0

Versión 1.0.0-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 y showSoftwareKeyboard en SoftwareKeyboardController por hide() y show(), 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 de FragmentContainerView cuando se quita el AndroidViewBinding de la jerarquía de composición. (Ib0248, b/179915946)
  • Ahora AndroidViewBinding anida correctamente los fragmentos aumentados a través de FragmentContainerView cuando tu ComposeView se encuentra dentro de un Fragment, 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 de FragmentContainerView 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 y startY/endY a las funciones swipeUp/swipeDown/swipeLeft/swipeRight en GestureScope. (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() de ComposeRootRegistry. (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 a 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 como Button y Modifier.clickable(), usa el objeto interactionSource = 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 es Pair<Float, Color>.
    • SpanStyleRange ahora es AnnotatedString.Range
    • ParagraphStyleRange ahora es AnnotatedString.Range<ParagraphStyle>.
    • StringAnnotation ahora es AnnotatedString.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 para compositionLocalOf y staticCompositionLocalOf 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. Usa Modifier.pointerInput { detectTapGestures(...) } en su lugar. (I266ed, b/175294473)

  • Se quitó el consumo parcial del sistema de entrada del puntero. El método recomendado para coordinar el consumo parcial es Modifier.nestedScroll. (Ie9c9b)

  • Se migró Orientation al paquete de base. Se migró VelocirtTracker de ui.gesture a ui.input.pointer. (Iff4a8, b/175294473)

  • 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 de androidx.activity:activity-compose:1.3.0-alpha01. Se quitaron viewModel() y LocalViewModelStoreOwner de Compose:ui. Usa las de androidx.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 API que ya eran 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 a 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 a selected y onClick.
    • Se cambió el nombre del parámetro alwaysShowLabels en BottomNavigationItem a alwaysShowLabel.
    • Se cambiaron los nombres de los parámetros bodyContent en algunos componentes a solo content.
    • 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 a darkColors(). Por lo general, este color es el mismo que el de secondary 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 en Slider a onValueChangeFinished y se hizo nulo.
    • Se cambió el nombre del parámetro text en Snackbar a content para brindar coherencia.
    • Se agregó el parámetro contentPadding a DropdownMenuItem para permitir la personalización del relleno predeterminado y se convirtió content en una extensión en RowScope.
    • Se cambió el nombre de ModalDrawerLayout a ModalDrawer.
    • Se cambió el nombre de BottomDrawerLayout a BottomDrawer.
    • (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 admite composición, 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 ImageVector, se cambió el nombre de ImagePainter a BitmapPainter, a fin de que sea paralelo a VectorPainter. (Iba381, b/174565889)
  • Se mejoraron las API 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 que admite composición. (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ámetro focusable en PopupProperties. (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. imageResource, loadImageResource, vectorResource, y loadVectorResource dejaron de estar disponibles. En su lugar, usa fontResource 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 consistente con los lineamientos de API y a fin de 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 savedInstanceState { 0 } que admite composición, de forma similar a como se quitó state { 0 }, que también admitía composición, y ahora se promociona el uso de remember { mutableStateOf(0) }, por ejemplo. En su lugar, se debe usar rememberSaveable { 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ámetro stateSaver. 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 y withMutableSnapshot 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 a SaveableStateRegistry y el de AmbientUiSavedStateRegistry a 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 a androidx:compose:runtime:runtime-saveable. (I6dcac)
  • Se borraron muchas API que dejaron de estar disponibles en el paquete de IU. (I2f2dc)
  • El artefacto compose:runtime-dispatch dejó de estar disponible. Ahora se puede encontrar MonotonicFrameClock en compose:runtime y AndroidUiDispatcher en compose:ui. (Ib5c36)
  • 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 con ComposeTestRule. (I50ec4, b/151940543)
  • Se quitó el elemento canDrag de Modifier.scrollable. (Id66e7, b/175294473)
  • Se cambió el nombre de LayoutCoordinates.parentCoordinates a LayoutCoordinates.parentLayoutCoordinates a fin de 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 pressIndicititGestureFilter 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 API 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 con 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 a 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 a fin de ayudar con las conversiones entre diferentes representaciones de matrices para hacer coincidir la lógica de conversión del marco de trabajo 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ó con las API 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 extiende ComposeTestRule y define setContent, que se quitó de ComposeTestRule. Se agregó un método createEmptyComposeRule() de fábrica que muestra un ComposeTestRule y no inicia una Activity para ti. Usa este método cuando quieras iniciar tu Activity durante una prueba, p. ej., con ActivityScenario.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)
  • 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)

  • ComposiciónLifecycleObserver dejó de estar disponible y se reemplazó con RememberObserver.

    RememberObserver es un reemplazo de CompositionLifecycleObserver 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 a onRemembered para cada referencia en la que onEnter solo se llama una vez. Antes, se llamaba a onEnter varias veces si el objeto se usaba en subcomposiciones, como WithConstraints y Scaffold, por lo que la garantía de la única llamada a onEnter no era confiable. Por lo tanto, se quitó de RememberObserver.

    RememberObserver agrega onAbandoned, que se llama si la devolución de llamada pasada a remember muestra la instancia RememberObserver, pero como esta no se recuerda en el estado de composición, nunca se llamará a onRemembered. 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 de RememberObserver que sigue a la recomendación de referencia única anterior realiza el seguimiento de un recurso externo, tanto onForgotten como onAbandoned indicarán que el recurso ya no es necesario. Si el objeto realiza un seguimiento del trabajo que se inició o los recursos asignados en onRemembered, se puede ignorar a onAbandoned, ya que no se llamará si se llama a onRemembered. (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. A fin de 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) y itemsIndexed(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) y itemsIndexed(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 IU 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 a @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 API 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 las implementaciones de igualdades para usar "is MyClass" en su lugar. (I4f734)

  • Modifier.focus() y Modifier.focusRequester() dejaron de estar disponibles. Se recomienda usar modificador.focusModifier() y Modifier.focusReference() en su lugar. (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() con animateAsState(), que muestra State<T>, en lugar de T. 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 a AwaitPointerEventScope y el de handlePointerInput() a awaitPointerEventScope() para las API 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 a contentDescription y el de accessibilityValue a 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 a 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 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() por insertTopDown().

    Se agregó un método nuevo: insertBottomUp().

    Un aplicador inserta cualquiera de los nodos en el árbol que edita con insertTopDown() o insertBottomUp() según el que tenga mejor rendimiento.

    Algunos árboles, como LayoutNode y View, 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 elemento Applier anula insertBottomUp() para compilar un árbol de abajo hacia arriba y insertTopDown() 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 que admite composición 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 a fin de asistir en la migración de las API 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 API de Modifier.scale/rotate como convenientes para drawLayer.
    • Se cambió el nombre de Modifier.drawOpacity a Modifier.alpha.
    • Se cambió el nombre de Modifier.drawShadow a Modifier.shadow. (I264ca, b/173208140)
  • 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 y pivotFractionY como component1 y component2. (If43c4, b/173586560)
  • Se agregó la comprobación de lint para el nombre y la posición del parámetro lambda que admiten composición a fin de verificar la coherencia con los lineamientos de Compose. También se migraron algunas API que usaban children como nombre de su lambda al final a content, 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 a androidx.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 a 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 API 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 a layoutId para LayoutIdParentData. Se cambió el nombre de Measurable.id a Measurable.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 API de SweepGradientShader y SweepGradientBrush. (Ia22c1)
  • El control de tiempo en las pruebas (TestAnimationClock y sus usos) ahora es experimental. (I6ef86, b/171378521)
  • Se agregaron API de desplazamiento basadas en corrutinas:

    Se agregaron LazyListState.snapToItem y LazyListState.smoothScrollBy, al igual que API de niveles inferiores para controlar el desplazamiento. Estas API proporcionan una interfaz de suspensión para controlar el desplazamiento que espera hasta que la acción finalice antes de mostrar el resultado. (Ie5642)

  • Se agregó 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 API 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 que admiten composición. 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 de typefaceFromFontFamily() a typeface(). (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, a fin de admitir casos de uso de escalamiento no uniforme.
    • Se agregó el método computeScaleFactor a ContentScale.
    • Se agregó ContentScale.FillBounds para realizar escalamientos no uniformes a fin de estirar los límites de src y completar el destino.
    • Se agregaron métodos de operador para calcular los parámetros de ScaleFactor con los parámetros Size.
    • (Ic96a6, b/172291582)
  • Se 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 a fin de 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 a paddingFrom. Se agregó el modificador paddingFromBaseline 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 que admiten composición 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 varios Modifier.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 a fin de indicar mejor que la API de composición 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, a fin de proporcionar a las implementaciones la capacidad de reordenar los comandos de dibujo. Esto sirve para combinar y ajustar casos de uso en los que los píxeles de contenido deben procesarse primero a fin de 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 de PointerInputFilter.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 a 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 y AnnotatedString.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 modificables 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> de PointerInputFilter.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() de Owner. 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 y AndroidInputDispatcher desde androidx.ui.test.android a androidx.ui.test. (Idef08, b/164060572)
  • Se cambiaron de manera coherente los nombres de los usos de Gravity a Align o Alignment en las API de diseño. (I2421a, b/164077038)
  • Se agregaron onNode y otros métodos globales a ComposeTestRule, ya que los actuales dejarán de estar disponibles. (Ieae36)

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 funciones que admiten composición 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, usa AndroidView para emitir objetos View dentro de Compose. Ten en cuenta que en el futuro no se admitirá la composición directa de objetos View y ViewGroup, 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ó por FocusState. (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 a fin de 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 a fin de que sus campos de nombre puedan mutar. (Ieae45, b/151378808)

  • Se quitaron onChildPositioned y OnChildPositionedModifier. En su lugar, los desarrolladores deberán usar onPositioned y OnPositionedModifier 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 a SemanticsPropertyKey. Se puede usar con el fin de definir una política personalizada para la combinación de semántica de mergeAllDescendants. La política predeterminada es usar el valor del elemento superior si ya está presente; de lo contrario, se utiliza el valor secundario. (Iaf6c4, b/161979921)

  • 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() a PlacementScope.place(), y el del PlacementScope.place() anterior a PlacementScope.placeRelative(). Como resultado, el método PlacementScope.place() ya no duplicará automáticamente la posición en contextos de derecha a izquierda. Si quieres que eso ocurra, usa PlacementScope.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 API de composición interna a fin de 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 state { ... } que admite composición dejó de estar disponible y se reemplazó por cualquier llamada explícita a remember { mutableStateOf(...) } por motivos de claridad. De esta forma, se reduce la plataforma general de la API, así como la cantidad de conceptos para la administración de estados, y se hace coincidir el patrón by 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 el elemento secundario OnPositioned. (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 API 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, lo que interrumpe la cadena y es más difícil de leer. (Iedd58, b/161529964)
  • Agrega subclases View de [Abstract]ComposeView para alojar contenido de Compose en una jerarquía de vistas. (I46357)
  • Row y Column 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 API de líneas en TextLayoutResult. (I79bd2)
  • Ahora se puede acceder mediante Foo.VectorConverter a los convertidores vectoriales a fin de convertir unidades integradas (p. ej., Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter, etc). (I3e273)

Correcciones de errores

  • Se abordaron correcciones amplias de API. (I077bc)
    1. Se quitó la interfaz OffsetBase sin usar.
    2. Se alinearon las clases Offset y IntOffset a fin de tener una superficie de API coherente.
    3. Se cambió el nombre de IntOffset.Origin por IntOffset.Zero para que sea coherente con la API de Offset.
    4. 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.
    5. 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.
    6. Se cambió el nombre de las enumeraciones ClipOp para que lleven mayúsculas en la primera letra de cada palabra.
    7. Se cambió el nombre de las enumeraciones FilterQuality para que lleven mayúsculas en la primera letra de cada palabra.
    8. Se cambió el nombre de las enumeraciones StrokeJoin para que lleven mayúsculas en la primera letra de cada palabra.
    9. Se cambió el nombre de las enumeraciones PointMode para que lleven mayúsculas en la primera letra de cada palabra.
    10. Se cambió el nombre de las enumeraciones PaintingStyle para que lleven mayúsculas en la primera letra de cada palabra.
    11. Se cambió el nombre de las enumeraciones PathFillType para que lleven mayúsculas en la primera letra de cada palabra.
    12. Se cambió el nombre de las enumeraciones StrokeCap para que lleven mayúsculas en la primera letra de cada palabra.
    13. Se actualizó la implementación de DrawCache para que deje de usar parámetros lateinit.
    14. Se actualizó DrawScope a fin de que deje de usar la delegación lazy para los parámetros internos fillPaint y strokePaint.
    15. Se actualizó el objeto Image que admite composición a fin de evitar el uso de Box y lograr una sobrecarga menor.
    16. Se actualizó la clase Outline para que tenga anotaciones @Immutable.
    17. Se actualizó PathNode para que tenga anotaciones @Immutable en cada instrucción de la ruta de acceso.
    18. Se actualizó la subcomposición de Vector a fin de quitar verificaciones condicionales redundantes de igualdad dado que compose ya las administra.
    19. Los métodos de construcción complementarios de Rect dejaron de estar disponibles y se los reemplazó por constructores de funciones.
    20. Se actualizaron las clases Brush y los constructores de funciones con las API de @Immutable y @Stable.
    21. Se actualizaron las enumeraciones VertexMode para que lleven mayúsculas en la primera letra de cada palabra.
    22. Se actualizó el método selectPaint de DrawScope a fin de reemplazar condicionalmente los parámetros de trazo en la pintura si estos cambiaron.
    23. 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 a fin de que se mapee 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. Usa SemanticsNodeInteraction.performGesture en su lugar. (Id9b62)
  • Se cambió el nombre de LazyColumnItems a LazyColumnFor. Se cambió el nombre de LazyRowItems a LazyRowFor. (I84f84)
  • Se acopló el paquete foundation.shape.corner a foundation.share. (I46491, b/161887429)
  • Se cambió el nombre de AndroidComposeTestRule a createAndroidComposeRule. (I70aaf)
  • Se agregaron más API a TextLayoutResult. (Id7e04)
  • Se cambió el nombre de FilledTextField de Material a TextField, y el del TextField principal a BaseTextField para que la API deseada resulte más fácil de encontrar y usar. (Ia6242, b/155482676)
  • Se cambió el nombre de Modifier.drawBackground a Modifier.background. (I13677)

Versión 0.1.0-dev15

22 de julio de 2020

Lanzamiento de androidx.compose.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 quedaron obsoletos 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 API 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 a Modifier.layoutId para evitar confusiones con el elemento Modifier.testTag. (I995f0)

  • El objeto Placeable#get(AlignmentLine) ya no muestra las posiciones Int de la línea de alineación como nulas. Si falta la línea de alineación consultada, se mostrará el objeto AlignmentLine.Unspecified. (I896c5, b/158134875)

  • Se agregó un parámetro modificable al elemento AndroidView que admite composición. (I48a88, b/158746303)

  • El elemento Semantics() dejó de estar disponible. En su lugar, usa el objeto Modifier.semantics(). (I72407, b/158841414)

  • Agrega el elemento viewModel() que admite composición y permite crear u obtener 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 el elemento 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 a fin de implementar la interfaz de Density y proporcionar LayoutDirection. Se borró la subclase DrawScope en ContentDrawScope. Se actualizaron Painter y PainterModifier de modo que ya no mantengan una propiedad RTL, ya que DrawScope la proporciona sin hacerlo manualmente. (I1798e)

  • 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 consumidores que aún necesitan acceso a un lienzo, 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 lienzo 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)

  • (I45f09, b/152842521)

    • 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, con la combinación de los elementos Crop y Alignment.Center, se obtiene el mismo resultado que con los objetos ImageView.ScaleType.CENTER_CROP y Fit, y que, con el elemento Alignment.Center, se obtiene el mismo resultado que con los objetos ImageView.ScaleType.FIT_CENTER Inside, y que, con el elemento Alignment.Center, se obtiene el mismo resultado que con los objetos 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 a fin de 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 API 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 OnPositioned y OnChildPositioned que admiten composición. (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 a fin de exponer una superficie de API de dibujo declarativa y sin estado. Las transformaciones se contienen dentro de su propio alcance de receptor, y la información de tamaño también se define en los límites de inserción correspondientes. No requiere que un consumidor mantenga su propio objeto de estado de Paint para configurar las operaciones de dibujo.

    • Se agregó CanvasScopeSample y se actualizó la app de demostración a fin de incluir una demostración de gráficos declarativos. (Ifd86d)
  • Se quitó 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 prácticos. (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 a fin de 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 a toAndroidRect/toAndroidRectF a fin de que coincida con la convención de nomenclatura para las conversiones de objetos entre Compose y las API 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 que admite composición y que se comporta como el elemento Image que admite composición, pero con un parámetro VectorAsset en lugar de un objeto ImageAsset. (I9af9a, b/149030271)

  • Se cambió el nombre de Image a ImageAsset para destacar mejor la diferencia entre los datos de Image y el próximo elemento Image que admite composición, que se utiliza para participar en el diseño y dibujar contenido. Método de extensión _Body:Created en android.graphics.Bitmap, Bitmap.asImageAsset(), a fin de crear una instancia útil del objeto ImageAsset para combinar el desarrollo tradicional de aplicaciones para Android con el framework de Compose. (Id5bbd)

  • Se 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 a androidx.ui.intl dentro de Locale y LocaleList. (I8132c)

  • El cursor 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 a 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 a runOnIdle. (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 API 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 a Shader. La clase intercalada Shader unida no agregó ningún valor a la superficie de la API y era una clase intercalada, así que usa la clase NativeShader directamente. (I25e4d)
  • 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 para el radio en los ejes x e y. (I46d1b)

  • La función Recompose que admite composición 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 a fin de 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:

    1. Algunas llamadas se omitirán en los casos en que antes no hubiese ocurrido.
    2. 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ón vararg en el futuro. 5. La anotación Pivotal quedó obsoleta. Usa el objeto key 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 determinado 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)