Compose Foundation
androidx.compose.foundation
androidx.compose.foundation.layout
androidx.compose.foundation.gestures
androidx.compose.foundation.selection
androidx.compose.foundation.lazy
androidx.compose.foundation.interaction
androidx.compose.foundation.text
(Voir la documentation de référence de l'API pour tous les packages Compose)
| Dernière mise à jour | Version stable | Version finale | Version bêta | Version alpha |
|---|---|---|---|---|
| 22 octobre 2025 | 1.9.4 | - | 1.10.0-beta01 | - |
Structure
Compose est une combinaison de sept ID de groupe Maven dans androidx, chacun contenant un sous-ensemble ciblé de fonctionnalités. Chaque sous-ensemble est associé à son propre ensemble de notes de version.
Ce tableau décrit les différents groupes et renvoie à chaque ensemble de notes de version.
| Groupe | Description |
|---|---|
| compose.animation | Créer des animations dans les applications Jetpack Compose afin d'enrichir l'expérience utilisateur. |
| compose.compiler | Transformation de fonctions @Composable et prise en charge des optimisations avec un plug-in de compilation en Kotlin. |
| compose.foundation | Conception d'applications Jetpack Compose avec des composants prêts à l'emploi et extension de la base pour créer vos propres éléments de système de conception. |
| compose.material | Création d'UI Jetpack Compose avec des composants Material Design prêts à l'emploi. Il s'agit du point d'entrée de niveau supérieur de Compose, conçu pour fournir des composants qui correspondent à ceux décrits sur www.material.io. |
| compose.material3 | Création d'UI Jetpack Compose grâce aux composants Material Design 3, la nouvelle évolution de Material Design. Material 3 inclut des thématisations et des composants mis à jour ainsi que des fonctionnalités de personnalisation Material You telles que les couleurs dynamiques. Material 3 est conçu pour correspondre au nouveau style visuel et à l'UI du système Android 12. |
| compose.runtime | Composants fondamentaux du modèle de programmation et de la gestion d'état de Compose, et environnement d'exécution principal du plug-in Compose Compiler à cibler. |
| compose.ui | Composants fondamentaux de l'interface utilisateur de Compose nécessaires pour interagir avec l'appareil, y compris la mise en page, le dessin et la saisie. |
Déclarer des dépendances
Pour ajouter une dépendance sur Compose, vous devez ajouter le dépôt Maven de Google à votre projet. Pour en savoir plus, consultez la section Dépôt Maven de Google.
Ajoutez les dépendances correspondant aux artefacts dont vous avez besoin dans le fichier build.gradle de votre application ou de votre module :
Groovy
dependencies { implementation "androidx.compose.foundation:foundation:1.9.4" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.9.4") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Pour en savoir plus sur les dépendances, consultez Ajouter des dépendances de compilation.
Commentaires
Vos commentaires nous aident à améliorer Jetpack. N'hésitez pas à nous contacter si vous découvrez de nouveaux problèmes ou si vous avez des idées pour améliorer cette bibliothèque. Veuillez consulter les problèmes existants de cette bibliothèque avant d'en signaler un nouveau. Vous pouvez ajouter votre vote à un problème existant en cliquant sur le bouton en forme d'étoile.
Pour en savoir plus, consultez la documentation sur l'outil Issue Tracker.
Version 1.10
Version 1.10.0-beta01
22 octobre 2025
Publication d'androidx.compose.foundation:foundation-*:1.10.0-beta01. La version 1.10.0-beta01 contient ces commits.
Modifications apportées à l'API
- Mise à jour de toutes les API de saisie tactile indirecte pour utiliser le nom "API de pointeur indirect" afin de correspondre aux API d'entrée de pointeur. (I238ce, b/451607214)
PagerState.currentPageOffsetFractionannoté avec@FrequentlyChangingValue. (Idfaab)
Correction de bugs
- Correction du comportement du défilement horizontal pour les mises en page de droite à gauche. (Ib8be3)
Version 1.10.0-alpha05
8 octobre 2025
Publication d'androidx.compose.foundation:foundation-*:1.10.0-alpha05. La version 1.10.0-alpha05 contient ces commits.
Modifications apportées à l'API
PaddingValuesest désormais compatible avec l'addition et la soustraction pour simplifier les calculs de marge intérieure courants. (I327e1, b/244468479)
Correction de bugs
ComposeFoundationFlags.isPausableCompositionInPrefetchEnabledest activé par défaut. Il s'agit d'une optimisation des performances qui nous permet de mieux répartir le travail à effectuer pendant la prélecture. Par exemple, nous pouvons effectuer la composition uniquement pour certaines parties du prochain élément deLazyColumnpendant un frame d'UI, puis continuer à composer le reste dans les frames suivants. (I4c7fe)
Version 1.10.0-alpha04
24 septembre 2025
Publication d'androidx.compose.foundation:foundation-*:1.10.0-alpha04. La version 1.10.0-alpha04 contient ces commits.
Modifications apportées à l'API
- L'implémentation de
ScrollIndicatorStatea été ajoutée pourPagerState. (I113b7) - L'implémentation de
ScrollIndicatorStatea été ajoutée pourLazyStaggeredGridState. (I1028e) - L'implémentation de
ScrollIndicatorStatea été ajoutée pourLazyGridState. (I9e50c) - L'implémentation de
ScrollIndicatorStatea été ajoutée pourLazyListState. (I5ee29) - L'implémentation de
ScrollIndicatorStatea été ajoutée pourScrollState. (I27f66) - Ajout de la propriété
scrollIndicatorStatedans l'interfaceScrollableState(Idca93) - Suppression du flag
isWindowInsetsModifierLocalNodeImplementationEnabled(I15e8f, b/440964232) - Exposer le modificateur
scrollableArea()qui peut être utilisé pour rendre le composant défilable avec les comportements de contenu de clipping à ses limites et gérer automatiquement le sens de défilement du contenu en fonction de l'orientation, de RTL et de l'indicateurreverseScrolling. (I9471b, b/316559454)
Version 1.10.0-alpha03
10 septembre 2025
Publication d'androidx.compose.foundation:foundation-*:1.10.0-alpha03. La version 1.10.0-alpha03 contient ces commits.
Modifications apportées à l'API
- Suppression de
ComposeFoundationFlags.isNonComposedClickableEnabled(I0dfc0, b/406228525) - Déplacez les fonctions de fabrique pour créer des instances
FillableDatavers l'objet associé. Au lieu d'appelerFillableData(value), utilisez les nouvelles méthodes de fabrique :FillableData.createFrom(value). (I2e200, b/441719650) - Ajout d'un nouveau nœud de modificateur
BeyondBoundsLayoutModifierNodepour effectuer une mise en page hors limites pour la recherche de focus. (I39be1, b/416133658) - Marquage de
ScrollState.valuecomme propriété@FrequentlyChangingValue. (I4723d) - Introduction de
LazyLayoutKeyIndexMapet d'une fabrique pour une implémentation par défaut. (I4fd0c, b/415038029)
Correction de bugs
- Les colonnes et les lignes transmettent désormais correctement la taille réelle de l'élément à
Modifier.align. Cela résout un problème où l'implémentation personnalisée deModifier.alignrecevait une valeur 0 incorrecte. (I8194f, b/439716351)
Version 1.10.0-alpha02
27 août 2025
Publication d'androidx.compose.foundation:foundation-*:1.10.0-alpha02. La version 1.10.0-alpha02 contient ces commits.
Modifications apportées à l'API
- L'indicateur
isFlingContinuationAtBoundsEnableda été supprimé. (I6b84f) - L'indicateur
isAdjustPointerInputChangeOffsetForVelocityTrackerEnableda été supprimé. (I62380) - L'indicateur
isOnScrollChangedCallbackEnableda été supprimé. (I667dc) - L'indicateur
isAutomaticNestedPrefetchEnableda été supprimé. (I4f416) - L'indicateur
DragGesturePickUpEnableda été supprimé. (Ib8500) - Ajout de l'API
ScrollIndicatorStatepour représenter l'état de la barre de défilement (I5e229)
Correction de bugs
- Correction d'un bug qui empêchait l'invocation de
confirmValueChangelors de l'utilisation deModifier.anchoredDraggable. (Iff7cc)
Version 1.10.0-alpha01
13 août 2025
Publication d'androidx.compose.foundation:foundation-*:1.10.0-alpha01. La version 1.10.0-alpha01 contient ces commits.
Modifications apportées à l'API
- Mettez à jour la stratégie de préchargement de Pager pour utiliser la fenêtre de cache au lieu de l'élément par défaut dans le sens du défilement. Le préchargement initial est désormais activé par défaut dans Pager. Le préchargement sera basé sur la taille de la fenêtre (1 viewport). Autrement dit, nous essaierons de remplir un viewport entier avec des éléments préchargés. Les articles seront également conservés plus longtemps. (I4d45e, b/292136289)
- L'indicateur
ComposeFoundationLayoutFlags.isWindowInsetsOptimizationEnableda été ajouté pour permettre la désactivation d'une optimisation des performancesWindowInsetssi la nouvelle implémentation entraîne un changement de comportement. (I8e912) SnapFlingBehaviorpermet désormais aux spécifications d'animation d'accrochage de dépasser la cible lors de l'accrochage. Cela permet, par exemple, d'utiliser une spécification de ressort rebondissant commesnapAnimationSpecpour produire une animation d'accrochage rebondissante. Les valeurs de dépassement continuent d'être ignorées lors de l'approche avec la spécification d'accrochage. (I373c2)- Les événements pointerdown avec une souris ou un pavé tactile dans un
ComposeVieweffacent désormais automatiquement la sélection si l'événement pointerdown ne se produit pas dans les limites du nœud sélectionné. Cela se traduit par une UX "appuyer pour effacer la sélection" plus attendue que le comportement actuel lors de l'utilisation de périphériques de pointage. Vous pouvez désactiver ce comportement à l'aide d'une nouvelle APIAbstractComposeView.isClearFocusOnPointerDownEnabled. (I6322b, b/282963174) - Now Scrollable prend désormais mieux en charge les événements de défilement de la molette de la souris en deux dimensions. Une nouvelle API de test a été ajoutée pour vous aider à tester les cas d'utilisation dans
MouseInjectionScope. Nous avons également introduit une nouvelle surcharge pour les méthodes de défilement dansMouseInjectionScopeet un indicateur pour contrôler le nouveau comportement appeléisMouseWheel1DAxisLockingEnabled(I136df). - Mise à jour de
DragGestureNodepour utiliser l'entrée de pointeur brut au lieu de suspendre l'entrée de pointeur pour l'optimisation. Les modifications sont ajoutées derrière le flagisNonSuspendingPointerInputInDraggableEnabled(I0fa4b). - Annotation de certaines API
AnchoredDraggableavec@FrequentlyChangingValue.offset,requireOffsetetprogresschangent souvent et ne doivent pas être lus dans la composition. Veuillez accéder à ces valeurs à partir des phases de mise en page et de dessin, des effets ou autrement en dehors de la composition. (I05539) - Suppression des indicateurs
isOnScrollChangedCallbackEnabled,isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled,isFlingContinuationAtBoundsEnabled,isAutomaticNestedPrefetchEnabled,DragGesturePickUpEnabled,isPointerInteropFilterDispatchingFixEnabled,isNestedScrollInteropPostFlingFixEnabled,isNestedScrollDispatcherNodeFixEnabled(I36c18) - Présentez
CompositionLocalqui peut être utilisé pour modifier le pinceau de la mise en surbrillance de remplissage réussi d'Autofill. (I52329) - Ajout d'un rectangle de sélection personnalisable à
FocusProperties. Vous pouvez désormais définir une zone de mise au point personnalisée au lieu d'utiliser par défaut le cadre de sélection de l'élément pouvant être sélectionné. Ces informations sont utilisées par le système de déplacement du curseur et la logique de maintien dans la vue des conteneurs à faire défiler. (Id6555, b/368378073) - Ajout d'un nouveau
LineHeightStyle.ModeappeléTight. Ce mode permet d'appliquer des hauteurs de ligne plus petites, même si elles peuvent couper les glyphes plus grands. (Id3849) - Ajout d'une nouvelle interface Interpolatable qui permet l'interpolation automatique entre différents types, en supposant qu'un type sait comment effectuer la conversion à partir de l'autre. Cette interface est utilisée dans plusieurs types de composition tels que Brush et Shape, mais peut également être utilisée en externe. (I58eab)
- Ajoute des événements d'entrée indirecte et un moyen de spécifier l'axe de coordonnées à utiliser pour le défilement. (I58e7c)
- Ajout d'une nouvelle API
WindowInsets.cutoutPathpour obtenir le chemin d'accès à l'encoche (Ib90b1, b/279636456) - L'indicateur
isWindowInsetsDefaultPassThroughEnableda été supprimé. WindowInsets ne consomme plus par défaut, ce qui permet aux vues enfants de recevoirWindowInsetspar défaut. (I888e0, b/412469666)
Correction de bugs
isNonSuspendingPointerInputInDraggableEnableddoit être désactivé pour le moment. (Ia41c4)- Passage de la valeur par défaut de minSdk de l'API 21 à l'API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
- Mise à jour de la documentation
minPosition/maxPositionDraggableAnchorspour indiquer que ces API doivent renvoyer Float.NaN, comme les autres APIDraggableAnchors. (I0460a) - Correction d'un bug qui entraînait le plantage de
DraggableAnchors#closestAnchorsi les ancres étaient vides (I4e646) - Améliorations des performances pour
DraggableAnchors(If4065, I0460a) TextFieldState.edit { }n'efface plus l'historique des annulations. Au lieu de cela, il crée une entrée d'annulation autonome. Si le comportement souhaité est d'effacer la pile d'annulation après un appeledit, veuillez utiliserTextFieldState.undoState.clearHistory(). (I12c14)- Ajout de la prise en charge du double-tap pour sélectionner un mot dans la surcharge
SelectionContaineretBasicTextField(value, onValueChange). (Ibb06a) - Correction d'un bug mineur pour rendre
AutoboxingStateValuePropertyDetectorcompatible avec K1 et K2 (Ie81c1) - Les requêtes
requestRectangleOnScreeneffectuées par AndroidViews sont désormais correctement propagées à Compose. Cela permet aux vues telles queEditTextde rester à l'écran lorsqu'elles sont utilisées. (Ibbf4c) - Les colonnes et les lignes transmettent désormais correctement la taille réelle de l'élément à
Alignment.Vertical.alignetAlignment.Horizontal.align, ce qui résout un problème où les implémentations d'alignement personnalisé recevaient une valeur 0 incorrecte. (I3e460, b/349722072)
Version 1.9
Version 1.9.4
22 octobre 2025
Publication d'androidx.compose.foundation:foundation-*:1.9.4. La version 1.9.4 contient ces commits.
Version 1.9.3
8 octobre 2025
Publication d'androidx.compose.foundation:foundation-*:1.9.3. La version 1.9.3 contient ces commits.
Version 1.9.2
24 septembre 2025
Publication d'androidx.compose.foundation:foundation-*:1.9.2. La version 1.9.2 contient ces commits.
Version 1.9.1
10 septembre 2025
Publication d'androidx.compose.foundation:foundation-*:1.9.1. La version 1.9.1 contient ces commits.
Correction de bugs
- Correction du plantage qui se produisait lors de l'utilisation de
LazyLayoutCacheWindowdansLazyLists(c39f5f3)
Version 1.9.0
13 août 2025
Publication d'androidx.compose.foundation:foundation-*:1.9.0. La version 1.9.0 contient ces commits.
Changements importants depuis la version 1.8.0
- Les vérifications Lint fournies avec Compose nécessitent désormais une version minimale d'AGP 8.8.2. Si vous ne parvenez pas à mettre à niveau AGP, vous pouvez mettre à niveau Lint seul en utilisant
android.experimental.lint.version=8.8.2(ou une version plus récente) dans votregradle.properties. Pour exécuter les vérifications lint de Compose dans l'IDE, vous devez disposer d'Android Studio Ladybug ou version ultérieure. - Modification majeure : les surcharges
clickable,combinedClickable,selectable,toggleableettriStateToggleablesans paramètre d'indication ne sont désormais compatibles qu'avec les instancesIndicationNodeFactoryfournies à l'aide deLocalIndication. Cette modification s'appliquera lorsque vous recompilerez vos utilisations de ces modificateurs avec cette version de Compose. Les dépendances binaires / transitives ne sont pas affectées. Si vous fournissez une implémentation d'indication obsolète àLocalIndicationet que vous utilisez ces API, cela entraînera un plantage lors de l'exécution. Ce changement de comportement est nécessaire pour améliorer les performances et permettre aux fonctions composables utilisant ces modificateurs d'être ignorées lors de la recomposition. Vous pouvez utiliserComposeFoundationFlags.isNonComposedClickableEnabled=falsepour désactiver temporairement ce changement de comportement, afin de pouvoir mettre à niveau Compose sans être bloqué par cette migration. Cette option sera supprimée après une version stable. Pour résoudre ce problème, migrez toutes les implémentations d'indication obsolètes afin d'utiliserIndicationNodeFactoryà la place. Vous pouvez également utiliser les surcharges avec un paramètre d'indication explicite. Ces surcharges continueront à prendre en charge les instances d'indication non-IndicationNodeFactory, bien que cela ne soit pas recommandé pour des raisons de performances. (I6bcdc, b/316914333) - Ajout de
isFlingCancellationWithNestedScrollFixEnabledpour résoudre un problème de propagation du déplacement rapide dans le défilement imbriqué. Dans cette CL, nous restaurons le comportement de continuation du balayage supprimé dans I9326a. Nous annulerons toujours l'animation de balayage si l'enfant est supprimé de la composition. (I467f4, b/405910180, b/419049142, b/416784125) - Ajoutez à nouveau l'utilisation de
scrollAnimationSpecdansContentInViewNode. Ce comportement a été supprimé lors de l'abandon descrollAnimationSpec, ce qui a entraîné la rupture de certains cas d'utilisation. (I1436a, b/403301605) - Stabilisation de
LazyLayout. (If5db4),LazyLayoutPrefetchStateet sa méthode de planificationschedulePrecompositionetschedulePrecompositionAndPremeasure. (I4362f, b/252853717) etLazyLayoutItemProvider(Icce09,b/261565751) - Autorisez Compose à déclencher
ViewTreeObserver.OnScrollChanged. Ce comportement est introduit avec l'indicateurisOnScrollChangedCallbackEnabled. Nous avons également introduit une fonction d'extension deDelegatableNode dispatchOnScrollChanged. (I34b9d, b/238109286) - Présentation des API
Modifier.scrollable2D,Scrollable2DStateet associées pour la création d'états. Ajout de fonctions d'extension de défilement courantes. (Ic61c8, b/214410040) PrefetchScheduleret la personnalisation ont été abandonnés au profit de l'implémentation interne qui effectue tout le travail automatiquement. (I3a9a6, b/420551535)TextFieldState.edit { }n'efface plus l'historique des annulations. Au lieu de cela, il crée une entrée d'annulation autonome. Si vous souhaitez effacer la pile d'annulation après un appel de modification, veuillez utiliserTextFieldState.undoState.clearHistory(). (I12c14)- Le menu contextuel et la barre d'outils de sélection sont désormais compatibles avec les éléments intelligents (sélection intelligente).
- Ajout du texte stylisé
OutputTransformationpour permettre de styliser la sortie deTextFieldà l'aide de la surchargestate. TextField: menu contextuel (menu accessible par un clic droit).- Le texte copié à partir de plusieurs composables Text dans un
SelectionContainercomporte désormais un séparateur de ligne "\n" entre le texte provenant des différents composables Text. (I25332, b/285036739) - Introduction d'une API pour créer des listes à puces personnalisées via
AnnotatedString(I1d066, b/383269496, b/139326648) - La surcharge
statedeBasicTextFieldpermet de maintenir le curseur visible lorsqu'il change de taille. (I0eb41, b/406187741) - Modification destructive : les nœuds de modificateur
backgroundetborderimplémentent désormaisSemanticsModifierNode. Cela peut entraîner l'ajout de nouveauxSemanticsNodesà l'arborescence sémantique et, par conséquent, entraîner des échecs de tests qui font des hypothèses sur la structure de l'arborescence sémantique. Par exemple, les tests qui utilisentonChild,onParent,onSiblinget d'autres méthodes similaires pour effectuer des assertions peuvent échouer si un nouveau nœud est ajouté entre les nœuds actuels et cibles. La meilleure façon de résoudre ces échecs consiste à ajouter untestTagdirectement au nœud cible. Vous pouvez également utiliser un outil de mise en correspondance moins strict, tel queonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)
Version 1.9.0-rc01
30 juillet 2025
Publication d'androidx.compose.foundation:foundation-*:1.9.0-rc01. La version 1.9.0-rc01 contient ces commits.
Correction de bugs
TextFieldState.edit { }n'efface plus l'historique des annulations. Au lieu de cela, il crée une entrée d'annulation autonome. Si le comportement souhaité est d'effacer la pile d'annulation après un appeledit, veuillez utiliserTextFieldState.undoState.clearHistory(). (I12c14)
Version 1.9.0-beta03
16 juillet 2025
Publication d'androidx.compose.foundation:foundation-*:1.9.0-beta03. La version 1.9.0-beta03 contient ces commits.
Correction de bugs
- Correction d'un bug de régression qui cassait le comportement des en-têtes fixes dans les grilles lazy lorsqu'un contenu d'en-tête vide était fourni. (e3e3400)
Version 1.9.0-beta02
2 juillet 2025
Publication d'androidx.compose.foundation:foundation-*:1.9.0-beta02. La version 1.9.0-beta02 contient ces commits.
Nouvelles fonctionnalités
- Prise en charge des éléments intelligents dans le menu contextuel et la barre d'outils de sélection.
Modifications apportées à l'API
- Correction d'un bug qui empêchait certains claviers matériels ou télécommandes TV de déplacer le curseur dans le nouveau
TextFieldsà l'aide des touches directionnelles, et qui faisait passer le focus sur un autre composable. Ajout deComposeFoundationFlag.isTextFieldDpadNavigationFixEnabledpour pouvoir désactiver ce correctif pour le moment s'il provoque un comportement indésirable de manière irrécupérable. (Ie1922)
Correction de bugs
- Correction d'un problème qui empêchait les en-têtes fixes de rester en place si un élément épinglé était présent. (I9198d, b/385006133)
TextObfuscationMode.RevealLastTypedsuit désormais le paramètre système "TEXT_SHOW_PASSWORD". (I41c0c)- Correction d'un bug qui affichait à tort un avertissement "Texte collé depuis le presse-papiers" lorsque la barre d'outils de texte s'ouvrait pour la première fois dans
BasicTextField. (I5fda2)
Version 1.9.0-beta01
18 juin 2025
Publication d'androidx.compose.foundation:foundation-*:1.9.0-beta01. La version 1.9.0-beta01 contient ces commits.
Modifications destructives
- Les nœuds de modificateur
backgroundetborderimplémentent désormaisSemanticsModifierNode. Cela peut entraîner l'ajout de nouveauxSemanticsNodesà l'arborescence sémantique et, par conséquent, entraîner des échecs de tests qui font des hypothèses sur la structure de l'arborescence sémantique. Par exemple, les tests qui utilisentonChild,onParent,onSiblinget d'autres méthodes similaires pour effectuer des assertions peuvent échouer si un nouveau nœud est ajouté entre les nœuds actuels et cibles. La meilleure façon de résoudre ces échecs consiste à ajouter untestTagdirectement au nœud cible. Vous pouvez également utiliser un outil de mise en correspondance moins strict, tel queonNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)
Modifications apportées à l'API
Modifier.addTextContextMenuComponentsa été renomméappendTextContextMenuComponents. (I4c43f)- Suppression de
AnnotatedOutputTransformationet transfert des fonctionsaddStyleversTextFieldBuffer.addStylene peut toujours être appelé que depuisOutputTransformation. (I9930a, b/417991824) - Clickable est réécrit pour ne pas utiliser la suspension de l'entrée du pointeur comme optimisation. Cette fonctionnalité est activée par un indicateur. Vous pouvez la désactiver si vous rencontrez un bug dans la nouvelle implémentation :
ComposeFoundationFlags.isNonSuspendingPointerInputInClickableEnabled. (I85b65) - Ajout de
isFlingCancellationWithNestedScrollFixEnabledpour résoudre un problème de propagation du déplacement rapide dans le défilement imbriqué. Dans cette CL, nous restaurons le comportement de continuation du balayage supprimé dans aosp/3260391. Nous annulerons toujours l'animation de balayage si l'enfant est supprimé de la composition. (I467f4, b/405910180, b/419049142, b/416784125) WindowInsetsRulers:rulersIgnoringVisibilityest passé à "maximum".getDisplayCutoutBounds()est désormais une fonction d'extension dePlacementScope.WindowInsetsAnimationPropertiesa été remplacé parWindowInsetsAnimationetgetAnimationProperties()a été remplacé pargetAnimation(). (I3816f)InsetsRulersa été modifié pour être dans le code commun avec le nomWindowInsetsRulers. L'API a été simplifiée pour que toutes les encarts soientWindowInsetsRulers. Les propriétés d'animation non liées aux règles ont été extraites dans une classeAnimationProperties.WindowInsetsRulers.innermostOf()peut être utilisé pour fusionner plusieursWindowInsetsRulers. (I2f0c6, b/415012444)
Correction de bugs
- Ajoutez à nouveau l'utilisation de
scrollAnimationSpecdansContentInViewNode. Ce comportement a été supprimé lors de l'abandon descrollAnimationSpec, ce qui a entraîné la rupture de certains cas d'utilisation. (I1436a, b/403301605)
Version 1.9.0-alpha04
4 juin 2025
Publication d'androidx.compose.foundation:foundation-*:1.9.0-alpha04. La version 1.9.0-alpha04 contient ces commits.
Modifications apportées à l'API
PrefetchScheduleret la personnalisation ont été abandonnés au profit de l'implémentation interne qui effectue tout le travail automatiquement. (I3a9a6, b/420551535)- Mise à jour de
Scrollable2DStatepour utiliser un décalage dans la méthodecanScrollau lieu d'un angle. (I28694, b/417268474) addAnnotationdansAnnotatedOutputTransformationa été remplacé paraddStyle. (I91c6f, b/417991824)- Stabilisation de
LazyLayout. (If5db4) - Stabilisation d'un constructeur vide pour
LazyLayoutPrefetchStateet de sa méthode de planificationschedulePrecompositionetschedulePrecompositionAndPremeasure. (I4362f, b/252853717) - Introduction de
ProcessTextKeysur Android, utilisé pour les éléments de menu contextuel ajoutés pour les actions d'intentPROCESS_TEXT. (If0ac4) - Rendre publiques les API de menu contextuel. Exposition de
Modifier.addTextContextMenuComponentsetModifier.filterTextContextMenuComponentspour ajouter et supprimer des éléments dans le menu contextuel. Nous avons également rendu publiques les API élémentaires suivantes afin que vous puissiez créer un menu contextuel personnalisé :TextContextMenuProviderTextContextMenuDataProviderTextContextMenuDataTextContextMenuComponentLocalTextContextMenuDropdownProviderLocalTextContextMenuToolbarProvider(I1b7b0)
- Rendre
LazyLayoutItemProviderstable (Icce09, b/261565751) - Ajout de fonctionnalités de sélection intelligente Android pouvant être activées/désactivées via
ComposeFoundationFlags.isSmartSelectionEnabled. Il a également exposé unLocalTextClassifierCoroutineContextcompositionLocalstatique qui peut être utilisé pour spécifier leCoroutineContextdans lequel le jobTextClassificationest lancé. (I1dbaa, b/139321320)
Version 1.9.0-alpha03
20 mai 2025
Publication d'androidx.compose.foundation:foundation-*:1.9.0-alpha03. La version 1.9.0-alpha03 contient ces commits.
Modifications apportées à l'API
- Ajout de
AnnotatedOutputTransformationqui permet d'ajouter des annotations àTextFieldavant le rendu. (Ibc6f0, b/389978748) - Introduction de
LazyLayoutMeasurePolicyet stabilisation deLazyLayoutMeasureScope. (I8c5df, b/252853717) BasicSecureTextFieldhisse désormais ScrollState de sonBasicTextFieldinterne. (I6e576)- Les modificateurs
Modifier.onFirstVisibleetModifier.onVisibilityChangedont été introduits. Il s'agit de modificateurs de haut niveau basés surModifier.onLayoutRectChanged. Ces modificateurs sont conçus spécifiquement pour gérer de nombreuses exigences courantes des applications, telles que l'enregistrement des impressions, la lecture automatique des vidéos, etc. Ils ont été conçus dans un souci de performances afin de pouvoir être utilisés dans des scénarios critiques basés sur des listes sans risque de sacrifier les performances de défilement. En plus de ces API de modificateurs, d'autres API pourRelativeLayoutBoundsont été ajoutées afin de prendre en charge ces cas d'utilisation et de permettre aux développeurs de créer facilement des modificateurs personnalisés similaires qui correspondent exactement à leur cas d'utilisation. (I759b8) - Introduction d'une surcharge
detectDragGesturesqui contrôle la marge de déplacement tactile et le verrouillage de l'orientation. (Iadb0d) - Présentation des API
Modifier.scrollable2D,Scrollable2DStateet associées pour la création d'états. Ajout de fonctions d'extension de défilement courantes. (Ic61c8, b/214410040) - Les valeurs de couleur 64 bits de Compose ne sont pas directement comparables à
ColorLongsAndroid, car les ID d'espace colorimétrique ne sont pas dans le bon ordre pour certains espaces colorimétriques. Deux nouvelles API sont ajoutées pour convertir les espaces colorimétriques Android :toColorLong()etfromColorLong(). (I36899)
Correction de bugs
- Le texte copié à partir de plusieurs composables Text dans un
SelectionContainercomporte désormais un séparateur de ligne\nentre le texte provenant des différents composables Text. (I25332, b/285036739)
Version 1.9.0-alpha02
7 mai 2025
Publication d'androidx.compose.foundation:foundation-*:1.9.0-alpha02. La version 1.9.0-alpha02 contient ces commits.
Modifications apportées à l'API
- Correction de la façon dont les modifications de l'entrée du pointeur sont ajoutées à
VelocityTrackerdansDragGestureNode. Cela peut être contrôlé avec le nouveau flagisOffsetPositionBeforeAddingToVelocityTrackerEnabled. (Ic7992, b/292556787, b/236451818) - Rendre
await[Vertical/Horizontal]PointerSlopOrCancellationpublic (I6968b, b/298903681) AbstractComposeView.consumeWindowInsetsest désormais défini par défaut sur "false".WindowInsetssera automatiquement ajusté à la taille et à la position de l'enfant lorsqu'il est défini sur "false". Il n'est donc plus nécessaire de le définir sur "true" par défaut. Cela corrige le problème qui empêchait les vues enfants de recevoir les mises à jourWindowInsetspar défaut. Les développeurs peuvent désactiver la mise à jour en définissant la valeur expérimentaleComposeFoundationLayout.isWindowInsetsDefaultPassThroughEnabledsur "true" ou, de préférence, en définissantAbstractComposeView.consumeWindowInsetssur "true" sur toutes les instances de vue Compose. (I6fa0a, b/411868840)
Contribution externe
- Correction du plantage de Pager avec des valeurs beyondViewportPageCount extrêmement élevées (Idb2db)
Version 1.9.0-alpha01
23 avril 2025
Publication d'androidx.compose.foundation:foundation-*:1.9.0-alpha01. La version 1.9.0-alpha01 contient ces commits.
Nouveaux comportements
Les vérifications Lint fournies avec Compose nécessitent désormais une version minimale d'AGP 8.8.2. Si vous ne parvenez pas à mettre à niveau AGP, vous pouvez mettre à niveau Lint seul en utilisant
android.experimental.lint.version=8.8.2(ou une version plus récente) dans votregradle.properties. Pour exécuter les vérifications lint de Compose dans l'IDE, vous devez disposer d'Android Studio Ladybug ou version ultérieure.Modification majeure : les surcharges
clickable,combinedClickable,selectable,toggleableettriStateToggleablesans paramètre Indication ne sont désormais compatibles qu'avec les instancesIndicationNodeFactoryfournies à l'aide deLocalIndication. Cette modification s'appliquera lorsque vous recompilerez vos utilisations de ces modificateurs avec cette version de Compose. Les dépendances binaires / transitives ne sont pas affectées. Si vous fournissez une implémentation d'indication obsolète àLocalIndicationet que vous utilisez ces API, cela entraînera un plantage lors de l'exécution. Ce changement de comportement est nécessaire pour améliorer les performances et permettre aux fonctions composables utilisant ces modificateurs d'être ignorées lors de la recomposition. Vous pouvez utiliserComposeFoundationFlags.isNonComposedClickableEnabled=falsepour désactiver temporairement ce changement de comportement, afin de pouvoir mettre à niveau Compose sans être bloqué par cette migration. Cette option sera supprimée après une version stable. Pour résoudre ce problème, migrez toutes les implémentations d'indication obsolètes afin d'utiliserIndicationNodeFactoryà la place. Vous pouvez également utiliser les surcharges avec un paramètre d'indication explicite. Ces surcharges continueront à prendre en charge les instances d'indication non-IndicationNodeFactory, bien que cela ne soit pas recommandé pour des raisons de performances. (I6bcdc, b/316914333)
Modifications apportées à l'API
- Introduction d'une API pour créer des listes à puces personnalisées via
AnnotatedString(I1d066, b/383269496, b/139326648) - Autorisez Compose à déclencher
ViewTreeObserver.OnScrollChanged. Ce comportement est introduit avec l'indicateurisOnScrollChangedCallbackEnabled. Nous avons également introduit une fonction d'extension deDelegatableNode dispatchOnScrollChanged. (I34b9d, b/238109286) - Les projets publiés avec Kotlin 2.0 nécessitent KGP 2.0.0 ou version ultérieure pour être utilisés (Idb6b5).
- Ajout de la prise en charge de la vérification lint pour
TextFieldStateafin de s'assurer qu'il est mémorisé dans la composition. Utilisez plutôtrememberTextFieldState. (I53d74) - Ajout de la prise en charge de la vérification lint pour
FocusRequesterafin de s'assurer qu'il est mémorisé dans la composition (I6bf91) - Ajout de la prise en charge de la vérification lint pour
BringIntoViewRequesterafin de s'assurer qu'il est mémorisé dans la composition. (Ibfba6) - Nous avons introduit des portées pour les appels
schedulePrefetchdans les stratégies de grilles et de listes afin de les aligner sur les capacités deLazyListPrefetchState, qui fournissent des informations sur la taille et l'index. (Iad80c) - Modification majeure : les surcharges
clickable,combinedClickable,selectable,toggleableettriStateToggleablesans paramètre Indication ne sont désormais compatibles qu'avec les instancesIndicationNodeFactoryfournies à l'aide deLocalIndication. Cette modification s'appliquera lorsque vous recompilerez vos utilisations de ces modificateurs avec cette version de Compose. Les dépendances binaires / transitives ne sont pas affectées. Si vous fournissez une implémentation d'indication obsolète àLocalIndicationet que vous utilisez ces API, cela entraînera un plantage lors de l'exécution. Ce changement de comportement est nécessaire pour améliorer les performances et permettre aux fonctions composables utilisant ces modificateurs d'être ignorées lors de la recomposition. Vous pouvez utiliserComposeFoundationFlags.isNonComposedClickableEnabled=falsepour désactiver temporairement ce changement de comportement, afin de pouvoir mettre à niveau Compose sans être bloqué par cette migration. Cette option sera supprimée après une version stable. Pour résoudre ce problème, migrez toutes les implémentations d'indication obsolètes afin d'utiliserIndicationNodeFactoryà la place. Vous pouvez également utiliser les surcharges avec un paramètre d'indication explicite. Ces surcharges continueront à prendre en charge les instances d'indication non-IndicationNodeFactory, bien que cela ne soit pas recommandé pour des raisons de performances. (I6bcdc, b/316914333) - Ajout d'un indicateur pour contrôler le comportement de préchargement imbriqué automatique :
isAutomaticNestedPrefetchEnabled(I8d448) - Ajout d'une surcharge pour
LazyGridStateetrememberLazyGridStatequi prend unLazyLayoutCacheWindow. (I51151) - Ajoute des règles pour les encarts de fenêtre. Ajoute
DerivedRulerpour permettre de calculer une règle à partir d'une autre règle. ModifiePlacmentScopepour implémenter la densité. (I658bc, b/359260964) - Ajout d'une fonction de fabrique
WindowInsets()sans argument pour créer facilement desWindowInsetsvides. (I65f62, b/395311689) - Ajout de
PaddingValues.Zeropour unPaddingValuesvide. (If193e, b/386255688)
Correction de bugs
- La surcharge
statedeBasicTextFieldpermet de maintenir le curseur visible lorsqu'il change de taille. (I0eb41, b/406187741) - Mise à jour des API
onVisibleItemsUpdateddansLazyListPrefetchStrategyetLazyGridPrefetchStrategypour informer sur l'état initial. (If2cfa)
Version 1.8
Version 1.8.3
18 juin 2025
Publication d'androidx.compose.foundation:foundation-*:1.8.3. La version 1.8.3 contient ces commits.
Version 1.8.2
20 mai 2025
Publication d'androidx.compose.foundation:foundation-*:1.8.2. La version 1.8.2 contient ces commits.
Correction de bugs
- Correction d'un bug qui empêchait le calcul du nombre d'éléments à charger pour la recherche par focus, ce qui entraînait une division par zéro. Appliqué le contrôle à toutes les mises en page qui utilisent
LazyLayoutBeyondBoundsState. (8e6dc8)
Version 1.8.1
7 mai 2025
Publication d'androidx.compose.foundation:foundation-*:1.8.1. La version 1.8.1 contient ces commits.
Correction de bugs
- Correction d'un bug dans
BasicTextetTextAutoSizequi entraînait une taille de texte inférieure à l'optimum lors de l'utilisation deTextOverflow.Ellipsize. (I1e1d8, b/396582066) - Correction d'un bug dans
BasicTextFieldqui entraînait divers plantages lorsqueTextFieldDecoratorignorait l'appel deinnerTextField. (I2638c), b/308398612 - Correction d'un bug dans
TextFieldqui entraînait la disparition complète de la barre d'outils de texte et des poignées de sélection lorsque l'instanceTextFieldStateétait modifiée. (I8068a), b/390477786 - Correction d'un bug dans
BasicTextoù la modification de la contrainte de largeur minimale ne mettait pas à jour l'emplacement du texte lorsquetextAlignétait défini sur une valeur non définie par défaut. (I77a96), b/406305552
Version 1.8.0
23 avril 2025
Publication d'androidx.compose.foundation:foundation-*:1.8.0. La version 1.8.0 contient ces commits.
Version 1.8.0-rc03
9 avril 2025
Publication d'androidx.compose.foundation:foundation-*:1.8.0-rc03. La version 1.8.0-rc03 contient ces commits.
Version 1.8.0-rc02
26 mars 2025
Publication d'androidx.compose.foundation:foundation-*:1.8.0-rc02. La version 1.8.0-rc02 contient ces commits.
Version 1.8.0-rc01
12 mars 2025
Publication d'androidx.compose.foundation:foundation-*:1.8.0-rc01. La version 1.8.0-rc01 contient ces commits.
Version 1.8.0-beta03
26 février 2025
Publication d'androidx.compose.foundation:foundation-*:1.8.0-beta03. La version 1.8.0-beta03 contient ces commits.
Correction de bugs
- Ajout d'une nouvelle propriété sémantique
InputTextqui capture la valeur d'un champ de texte avant l'application de la transformation de sortie. (Iae46a, b/395911609, b/176949051) - Suppression des surcharges
AutoSizeobsolètes. Veuillez utiliser les APITextAutoSizequi remplissent la même fonction. (I2c90f) - Correction d'un problème de mise en cache avec
TextAutoSize, où un deuxième passage de mise en page avec les mêmes contraintes pouvait entraîner l'utilisation de la deuxième taille de police la plus adaptée au lieu de la plus grande. (Id367f)
Version 1.8.0-beta02
12 février 2025
Publication d'androidx.compose.foundation:foundation-*:1.8.0-beta02. La version 1.8.0-beta02 contient ces commits.
Correction de bugs
- Correction d'un problème qui empêchait les implémentations d'overscroll utilisant
LayoutModifierNodede fonctionner correctement dans les conteneurs de défilement.
Version 1.8.0-beta01
29 janvier 2025
Publication d'androidx.compose.foundation:foundation-*:1.8.0-beta01. La version 1.8.0-beta01 contient ces commits.
Modifications apportées à l'API
SemanticsNodeInteraction.semanticsId()a été supprimé. UtilisezSemanticsNodeInteraction.fetchSemanticsNode().idà la place. (Ie397a)- Réécrivez l'API
requestAutofillpour qu'elle existe en dehors du gestionnaire de saisie automatique. (Id1929) ContextualFlowRowetContextualFlowColumnont été marqués comme obsolètes. Ce composant expérimental a été introduit dans la version 1.7 et n'avait pas encore été stabilisé. L'implémentation a été jugée indésirable. À l'avenir, un composant permettant de résoudre les cas d'utilisation pour lesquels ce composant était prévu pourra être fourni.FlowRowetFlowColumndisposent de surcharges expérimentales introduites dans la version 1.7, qui incluent un paramètreoverflow. L'utilisation de ce paramètre a été abandonnée. Vous pouvez utiliser les surcharges sans ce paramètre à la place. Le comportement de débordement par défaut de ces surcharges sera "Clip", comme c'était le cas depuis son introduction.- De nombreux cas d'utilisation de
ContextualFlowRowpeuvent être réalisés à l'aide deFlowRow, mais nous reconnaissons que cela n'est pas vrai dans tous les cas.ContextualFlowRowest entièrement implémentable dans l'espace utilisateur. Vous pouvez essayer de copier son implémentation et de l'adapter si vous le souhaitez. À l'avenir, nous espérons résoudre ces cas d'utilisation d'une autre manière. (Ibafec)
Correction de bugs
- Correction de la mise en page du texte avec des points de suspension qui sont parfois traduits de manière incorrecte pendant les animations. Pour en savoir plus, consultez b/389707025. (Ie55b1, b/389707025)
- Correction d'un bug dans
BasicTextavecTextAutoSizeetmaxLinesdéfinis sur 1. (Ic0450, b/376834366) - La hauteur intrinsèque minimale du texte tient désormais compte du paramètre
minLines. Cela signifie que la hauteur intrinsèque minimale signalée ne sera pas inférieure à la hauteur requise pour satisfaire le paramètreminLines(I225f9, b/388299762).
Version 1.8.0-alpha08
15 janvier 2025
Publication d'androidx.compose.foundation:foundation-*:1.8.0-alpha08. La version 1.8.0-alpha08 contient ces commits.
Modifications apportées à l'API
- AutoSize :
AutoSizea été renomméTextAutoSize, et les API permettant de créer des implémentationsTextAutoSizepersonnalisées ont été publiées. ConsultezTextAutoSizeSamplepour obtenir un exemple d'implémentation de la taille automatique du texte personnalisé. (I85756) - L'indicateur de fonctionnalité
DetectTapGesturesEnableNewDispatchingBehaviora été déplacé versComposeFoundationFlagset renomméisDetectTapGesturesImmediateCoroutineDispatchEnabled. L'ancien indicateur est obsolète et sera désormais délégué àComposeFoundationFlags.isDetectTapGesturesImmediateCoroutineDispatchEnabled. (I62932)
Correction de bugs
DetectTapGesturesEnableNewDispatchingBehavioractivé par défaut. Les APITapGestureDetectorutilisent désormais le nouveau comportement de distribution (distribution immédiate) par défaut. (I9f2bc, b/369648479)- Correction des modificateurs
requiredWidth/Height/Sizepour gérer correctement les tailles intrinsèques. (Ie3d7d, b/368113212)
Contribution externe
BasicTooltipa été commonisé dans foundation etBasicTooltip/Tooltipdans material3. (Ifc2e6)- Ajout d'une nouvelle interface Clipboard et d'une composition locale pour celle-ci. (I80809)
Version 1.8.0-alpha07
11 décembre 2024
Publication d'androidx.compose.foundation:foundation-*:1.8.0-alpha07. La version 1.8.0-alpha07 contient ces commits.
Modifications apportées à l'API
- Suppression de l'indicateur
ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabledqui permettait d'annuler la suppression degraphicsLayerinterne deBasicText. Si vous utilisiez cet indicateur, veuillez nous en indiquer les raisons en signalant un bug. Vous pouvez également simplement transmettreModifier.graphicsLayer()à vos appelsBasicTextpour obtenir le même comportement qu'avant. (Id9f90) - Ajout d'une implémentation par défaut pour le nouveau DSL
stickyHeader. (I68986) - La composition locale
LocalAutofillHighlightColorutilise un type "Color". (I0e05b) - Changement de nom :
OverscrollEffect#withoutDrawingdevientOverscrollEffect#withoutVisualEffect. (I1a154)
Correction de bugs
- Correction d'un problème de calcul de la cible dans
AnchoredDraggable, qui pouvait se fixer à la mauvaise ancre pour certains balayages. (I23b87, b/367660226)
Contribution externe
- Ajout de
BringIntoViewResponderModifierNodeà l'UI, qui offre une nouvelle façon d'implémenter la fonctionnalité "Afficher" et permet également de l'implémenter au niveau de la plate-forme (Ia6dd8) - Nous modifions légèrement la façon dont le curseur est dessiné. Vous pouvez utiliser
LocalCursorBlinkEnabledpour désactiver le dessin du curseur dans les tests. (I4c697)
Version 1.8.0-alpha06
13 novembre 2024
Publication d'androidx.compose.foundation:foundation-*:1.8.0-alpha06. La version 1.8.0-alpha06 contient ces commits.
Modifications apportées à l'API
- Ajoute le modificateur
stylusHoverIcon. (Iff20a, b/331289114) - Abandon de
confirmValueChangedeAnchoredDraggableState. Au lieu d'opposer leur veto aux changements d'état, les ancres non autorisées ne doivent pas figurer dans l'ensemble d'ancres actives, et unOverscrollEffectdoit être utilisé pour indiquer l'indisponibilité de l'action demandée. (Ia717f) - Transforme le gestionnaire de saisie automatique en interface. (I84914, b/376080755)
- Ajout des API
OverscrollEffect#withoutDrawingetOverscrollEffect#withoutEventHandling. Ces API créent une instance encapsulée de l'effet de dépassement de défilement fourni qui ne dessine pas / ne gère pas les événements respectivement, ce qui permet de rendre le dépassement de défilement dans un composant distinct de celui qui distribue les événements. Par exemple, désactiver le dessin du dépassement de la limite de défilement à l'intérieur d'une liste lazy, puis dessiner le dépassement de la limite de défilement séparément en haut ou ailleurs. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244) - Ajout de la prise en charge de la saisie semi-automatique dans la barre d'outils de texte. (Ie6a4c)
- Déprécie
OverscrollConfigurationetLocalOverscrollConfiguration, et ajouterememberPlatformOverscrollFactorypour créer une instance ou personnaliser les paramètres de l'implémentation par défaut de l'overscroll. Pour désactiver le défilement au-delà des limites, utilisezLocalOverscrollFactory provides nullau lieu deLocalOverscrollConfiguration provides null. Pour modifier la couleur ou la marge intérieure de la lueur, utilisezLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)au lieu deLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding). (Ie71f9, b/255554340, b/234451516) - La propriété
effectModifierdeOverscrollEffectest désormaisnode: DelegatableNode, comme dans les autres API. (Ic0b46, b/255554340) - Suppression de l'API expérimentale
GlobalAssertions. Son utilisation prévue était d'exécuter des vérifications d'accessibilité. Pour cela, consultez plutôtenableAccessibilityChecks(). (I59322)
Version 1.8.0-alpha05
30 octobre 2024
Publication d'androidx.compose.foundation:foundation-*:1.8.0-alpha05. La version 1.8.0-alpha05 contient ces commits.
Nouvelles fonctionnalités
- Prise en charge du dimensionnement automatique du texte. Transmettez une instance
AutoSize(par exemple,AutoSize.StepBased) à votre composable de texte préféré (commeBasicText) et voyez la taille de votre texte s'adapter à l'espace disponible. (Ice7e0, b/139320827) - Ajout des API
OverscrollFactoryetLocalOverscrollFactorypour permettre la configuration du défilement hors limites dans une hiérarchie. La valeur fournie par le biais deLocalOverscrollFactorysera utilisée par défaut pour créer unOverscrollEffect. Pour créer et mémoriser un effet à partir de l'usine fournie actuellement, utilisezrememberOverscrollEffect(). (I51ca4, b/255554340)
Modifications apportées à l'API
- Ajout de
CompositionLocalqui peut être utilisé pour modifier la teinte de la mise en surbrillance de la saisie automatique. (I32092) ScrollableDefaults.overscrollEffecta été supprimé. Vous devez utiliserrememberOverscrollEffectà la place. Cela créera une instance de l'implémentation actuelle de l'overscroll fournie avecLocalOverscrollFactory. (I1651a, b/255554340),(b/234451516)- Présentation de la nouvelle interface
AutofillManagerqui peut être utilisée pour affiner le parcours de saisie automatique des utilisateurs et d'un indicateurisSemanticAutofillEnabledpour activer cette nouvelle version de la saisie automatique. (I9d484) - Supprime
CombinedClickableNode. Cette API expérimentale a été temporairement exposée pour débloquer le travail sur les performances, mais elle n'est plus nécessaire. Vous devez plutôt utiliser directementModifier.combinedClickablecomme avec les autres API de modificateurs. (I4b658) - Ajoute des surcharges à
horizontalScroll,verticalScroll,LazyColumn,LazyRow,LazyHorizontalGrid,LazyVerticalGrid,LazyHorizontalStaggeredGrid,LazyVerticalStaggeredGrid,HorizontalPageretVerticalPageravec la possibilité de spécifier unOverscrollEffectpersonnalisé. LeOverscrollEffectfourni recevra les événements et sera affiché dans les limites de ces composants. Notez que le dessin du mêmeOverscrollEffectdeux fois n'est pas pris en charge. Vous ne pouvez donc pas dessiner le mêmeOverscrollEffectfourni à l'un de ces composants séparément avecModifier.overscroll. Le cas d'utilisation du dessin du défilement hors des limites de ces composants sera traité séparément à l'avenir. (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)
Version 1.8.0-alpha04
16 octobre 2024
Publication d'androidx.compose.foundation:foundation-*:1.8.0-alpha04. La version 1.8.0-alpha04 contient ces commits.
Modifications apportées à l'API
- Ajoute les rappels
DelegatableNode#onDensityChangeetDelegatableNode#onLayoutDirectionChangepour permettre la mise à jour de l'état du nœud lorsque ceux-ci changent. (I04f3e, b/340662451) - Les paragraphes et
ParagraphIntrinsicsprennent désormais en compte la liste de toutes les annotations appliquées àAnnotatedString. Auparavant, ils ne prenaient en compte qu'une liste deSpanStyles. (I12f80) - Introduction de
PointerInputModifierNode#touchBoundsExpansion, qui peut être utilisé pour agrandir les limites tactiles d'un modificateur d'entrée de pointeur unique. (Iccf02, b/335339283)
Correction de bugs
- Correction d'un bug qui empêchait la prise en compte correcte des seuils de position transmis à
AnchoredDraggableDefaults.flingBehaviordans certains cas. (Ifdf0d, b/367660226) - Correction des éléments défilants imbriqués qui sont supprimés de l'arborescence des nœuds lors d'un défilement rapide en cours. Ces nœuds annuleront désormais le balayage et enverront correctement l'événement
onPostFlingavec la vitesse restante. Nous introduisons également le flagNewNestedScrollFlingDispatchingEnabledpour contrôler le comportement en cas de régression. L'indicateur sera supprimé avant la version bêta. (I05c37, b/371168883) - Correction d'un bug qui entraînait la réception de deltas 2D au lieu de deltas 1D par
OverscrollEffectstransmis àModifier.anchoredDraggable. (Ie52c0)
Version 1.8.0-alpha03
2 octobre 2024
Publication d'androidx.compose.foundation:foundation-*:1.8.0-alpha03. La version 1.8.0-alpha03 contient ces commits.
Modifications apportées à l'API
- Mise à jour de la version de Kotlin vers la version 1.9 (I1a14c)
- Introduction de l'indicateur
DraggableAddDownEventFixEnabled(I848d5) - Ajout d'un nouveau rôle sémantique appelé "Carrousel" pour émuler le comportement de liste dans les composants de pagination pour les services d'accessibilité. (Id354b, b/354109776, b/239672673)
- Suppression du modificateur
graphicsLayerimplicite du composableBasicText. Ajout de l'indicateur expérimentalComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabledpour pouvoir revenir à l'ancien comportement. (Ie478d) - Ajout de
Modifier.recalculateWindowInsets()pour permettre aux enfants de la hiérarchie d'utiliserinsetsPaddingmême lorsque les parents les ont alignés sansconsumeWindowInsets(). (I7f9e4)
Correction de bugs
- Implémentez la prise en charge des gestes dans
detectDragGestures, les éléments déplaçables et les éléments défilables. Désormais, si un élément enfant déplaçable renonce à un geste, l'élément parent a la possibilité de le reprendre. Cela permet une gestion des gestes plus continue et intégrée. (Ic88fe) - Mise à jour du comportement d'annulation du défilement rapide dans les éléments défilables. Désormais, si un défilement rapide atteint les limites, la vitesse de défilement rapide est correctement transmise au prochain élément défilable de la chaîne au lieu de continuer à entraîner le défilement rapide. (I9326a)
Version 1.8.0-alpha02
18 septembre 2024
Publication d'androidx.compose.foundation:foundation-*:1.8.0-alpha02. La version 1.8.0-alpha02 contient ces commits.
Modifications apportées à l'API
TextOverflow.StartEllipsisetTextOverflow.MiddleEllipsissont désormais disponibles, ce qui permet de placer des points de suspension au début ou au milieu de la ligne de texte sur une seule ligne. (I38913, b/185418980)
Version 1.8.0-alpha01
4 septembre 2024
Publication d'androidx.compose.foundation:foundation-*:1.8.0-alpha01. La version 1.8.0-alpha01 contient ces commits.
Version 1.7
Version 1.7.8
12 février 2025
Publication d'androidx.compose.foundation:foundation-*:1.7.8. La version 1.7.8 contient ces commits.
Correction de bugs
- Correction du plantage dans
BasicTextFieldavec la transformation d'entrée lors du remplacement d'une partie du texte collé. (I73702)
Version 1.7.7
29 janvier 2025
Publication d'androidx.compose.foundation:foundation-*:1.7.7. La version 1.7.7 contient ces commits.
Correction de bugs
- Correction du plantage de
IndexOutOfBoundavec l'annotation de lien. (Ic96d2) - Correction de la recomposition infinie dans certains cas extrêmes avec des liens. (I04a03)
Bugs connus
- Un bug a été identifié. Il peut entraîner un retour à la ligne inattendu dans de rares cas sur Android au niveau d'API 35. Il ne peut pas être corrigé dans la version 1.7, mais le sera dans la version 1.8. (b/391378120)
Version 1.7.6
11 décembre 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.6. La version 1.7.6 contient ces commits.
Correction de bugs
- Correction du problème lié au contenu intégré au texte fixe qui n'était pas visible par les services d'accessibilité.
- Correction d'un problème qui empêchait
AndroidEmbeddedExternalSurfacede se réinitialiser correctement et le bloquait lors de sa réutilisation dans une liste lazy.
Version 1.7.5
30 octobre 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.5. La version 1.7.5 contient ces commits.
Correction de bugs
- Assurez-vous que les éléments épinglés ne sont pas sous-composés deux fois dans la zone de marge intérieure du contenu. (Ic6224)
Version 1.7.4
16 octobre 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.4. La version 1.7.4 contient ces commits.
Correction de bugs
- Correction d'un bug qui provoquait un plantage rare dans les champs de texte. (I475c6, b/313010266)
- Suppression de
ReusableContentHostà la racine des éléments de mise en page Lazy. Il s'agissait d'une cause racine potentielle des plantages "mesure appelée sur un nœud désactivé". (Id6e60)
Version 1.7.3
2 octobre 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.3. La version 1.7.3 contient ces commits.
Correction de bugs
- Correction d'une fuite de mémoire avec
BasicTextlorsque minLines est défini sur une valeur non définie par défaut.
Version 1.7.2
18 septembre 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.2. La version 1.7.2 contient ces commits.
Correction de bugs
- Correction d'un problème lié à l'élément déplaçable qui manquait d'événements de déplacement vers le bas, ce qui entraînait des balayages plus lents que la normale.
Version 1.7.1
10 septembre 2024
- Aucune modification n'a été apportée aux artefacts Android. Les artefacts
-desktopont été supprimés, et les artefacts-jvmStubset-linuxx64Stubsont été ajoutés. Aucune de ces cibles n'est censée être utilisée. Elles servent d'espace réservé pour aider les efforts de Jetbrains Compose.
Version 1.7.0
4 septembre 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.0. La version 1.7.0 contient ces commits.
Changements importants depuis la version 1.6.0
- Les performances de
Modifier.clickable,Modifier.focusable,Modifier.indication,Modifier.scrollableetModifier.draggableont été considérablement améliorées. Dans le cadre de cet effort, les modifications d'API suivantes ont été apportées en plus des modifications internes :- Ajout d'une nouvelle API d'indication,
IndicationNodeFactory. Cela permet des implémentations d'indication plus performantes par rapport à l'ancienne APIrememberUpdatedInstance(désormais obsolète). Pour en savoir plus sur la migration, consultez developer.android.com. clickable/combinedClickable/selectable/toggleableaccepte désormais un paramètreMutableInteractionSourcepouvant être nul. Si la valeur est nulle et que l'indication fournie estIndicationNodeFactory, l'indication ne peut être créée à la demande que lorsque cela est nécessaire, ce qui améliore les performances. Si vous n'effectuez pas d'hoisting et que vous utilisezMutableInteractionSource, nous vous recommandons de transmettre "null" au lieu deremember { MutableInteractionSource() }.Indication#rememberUpdatedInstanceest maintenant obsolète. Elle entraîne une pénalité de performances élevée et inévitable, et empêche d'autres optimisations. Vous devez plutôt utiliser la nouvelle APIIndicationNodeFactory.
- Ajout d'une nouvelle API d'indication,
BasicTextFieldutilisantTextFieldStateest désormais stable. Nous conseillons à tous les sites d'appel de commencer la migration deBasicTextField(value, onValueChange)versBasicTextField(TextFieldState).ClickableTextest obsolète. Pour ajouter des liens cliquables à votre texte, utilisezBasicTextavec la nouvelle annotationLinkAnnotationdans votreAnnotatedString.LinkAnnotationpermet une mise en forme personnalisée en fonction de l'état du lien (par exemple, sélectionné, survolé).- Découvrez
ContextualFlowRowetEnhanced FlowRow/ColumnavecMaxLinesetOverflow. Nous sommes heureux d'annoncer des améliorations apportées auxFlowRowetFlowColumnexpérimentaux, qui incluent désormais la prise en charge demaxLineset du dépassement, ainsi que le lancement deContextualFlowRowetContextualFlowColumn. Cette mise à jour est conçue pour fournir des composants aux performances optimales, oùContextualFlow*est parfait pour un grand nombre d'éléments utilisant une petite configuration maxLines et des boutons dynamiques "+N Afficher plus", etFlowRowetFlowColumnsont parfaits pour un petit nombre d'éléments, moins de 100 éléments. Important : Pour conserver le comportement existant dansFlowRowouFlowColumnoù tous les éléments sont composés, qu'ils correspondent ou non à la taille maximale de l'axe transversal, définissez le débordement surFlowRowOverflow.VisibleouFlowColumnOverflow.Visiblelors de l'initialisation. DécouvrezContextualFlowRowSampleetFlowRowSamplepour voir des exemples de ces nouvelles fonctionnalités en action. (Ib9135, b/293577082) - La prise en charge de l'animation d'apparition et de disparition des éléments a été ajoutée à
LazyColumnetLazyRow. Auparavant, il était possible d'ajouter un modificateurModifier.animateItemPlacement()pour prendre en charge les animations de placement (réorganisation). Nous avons abandonné ce modificateur et introduit un nouveau modificateur non expérimental appeléModifier.animateItem(), qui vous permet de prendre en charge les trois types d'animation : apparition (fondu entrant), disparition (fondu sortant) et réorganisation. (I2d7f7, b/150812265) - Implémentation d'une prise en charge expérimentale des longues captures d'écran dans les conteneurs de défilement Compose à l'aide de l'API Android officielle (
ScrollCaptureCallback). - Les sources
NestedScrollDrag and Fling sont remplacées parUserInputetSideEffectpour tenir compte de la définition étendue de ces sources, qui incluent désormais les animations (Side Effect), ainsi que la molette de la souris et le clavier (UserInput). - Les requêtes de préchargement
LazyLayoutpeuvent désormais être marquées comme urgentes. Cela signifie que nous prévoyons que cet élément sera nécessaire dans la prochaine frame et que nous souhaitons ignorer le budget de frame pour nous assurer d'effectuer plus de travail à l'avance (Id513f). - Prise en charge de la fonctionnalité d'écriture manuscrite au stylet sur les appareils équipés d'Android U et versions ultérieures. (I002e4)
- Plusieurs API sont désormais stables.
- Pagers, ancrage, encarts de fenêtre
Version 1.7.0-rc01
21 août 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.0-rc01. La version 1.7.0-rc01 contient ces commits.
Correction de bugs
- Correction d'une régression où le plantage se produisait lorsqu'un élément était sélectionné à l'intérieur d'un parent qui était sélectionnable (ou cliquable) et désactivé. (b/317561689)
Version 1.7.0-beta07
7 août 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.0-beta07. La version 1.7.0-beta07 contient ces commits.
Correction de bugs
- Les fonctions
performTextReplacement,performTextInputetperformTextClearanceliées à la saisie de texteSemanticsNodeInteractiongénéreront désormais des erreurs d'assertion lorsqu'elles seront appelées sur desTextFieldsen lecture seule. (I4ae8f) - Correction d'un problème d'affichage dans les liens hypertextes. (I23311)
- Correction du problème lié au modificateur
contentReceiverqui ne fonctionnait pas avec certains IME. - Génération de la vélocité : empêchez la propagation des valeurs NaN dans Compose UI et Foundation.
Version 1.7.0-beta06
24 juillet 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.0-beta06. La version 1.7.0-beta06 contient ces commits.
Version 1.7.0-beta05
10 juillet 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.0-beta05. La version 1.7.0-beta05 contient ces commits.
Correction de bugs
- Correction du traitement des valeurs NaN dans
SnapFlingBehavioret Pager.
Version 1.7.0-beta04
26 juin 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.0-beta04. La version 1.7.0-beta04 contient ces commits.
Correction de bugs
- Éviter les plantages lors de la mesure de très longues lignes de texte (par exemple, 10 000 caractères) (8157ab)
- Correction de la mesure de très grands textes entraînant un plantage dans le nouveau
BasicTextField(6b7575) - Rétablit un changement de comportement dans la mesure des lignes/colonnes qui interrompt l'utilisation du texte dans certains scénarios (69e8ba)
Version 1.7.0-beta03
12 juin 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.0-beta03. La version 1.7.0-beta03 contient ces commits.
Version 1.7.0-beta02
29 mai 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.0-beta02. La version 1.7.0-beta02 contient ces commits.
Modifications apportées à l'API
- Ajoute une API expérimentale pour configurer le comportement de préchargement de
LazyGrids, semblable à l'API expérimentale existante pourLazyLists. Cela inclut la prise en charge du préchargement des éléments dans lesLazyGridsimbriqués. Comme pourLazyListPrefetchStrategy, l'implémentation par défaut consiste à précharger les deux premiers éléments imbriqués de chaque grille, mais cela peut être configuré par les nouvelles APILazyGridPrefetchStrategy(nestedPrefetchItemCount)etLazyListPrefetchStrategy#onNestedPrefetch. (I591c4) - Remplacement du nom
SemanticsProperties.EditableparIsEditableet deSemanticsPropertyReceiver.editablepar la valeurisEditable. La propriété est désormais un booléen et est toujours spécifiée par des champs de texte. (I8acd8) - Les valeurs par défaut de
basicMarqueeont été déplacées dans l'objetMarqueeDefaults. (I12ff6) - Le paramètre
basicMarqueedelayMillisa été renommérepeatDelayMillis. (I12ff6) - Mise à jour de l'API pour styliser les liens : déplacement de
TextLinkStylesversTextStyleet suppression deTextDefaultsde material (I5477b)
Correction de bugs
LayoutCoordinates.introducesFrameOfReferencea été renomméLayoutCoordinates.introducesMotionFrameOfReferencepour mieux refléter son objectif. La fonction associée a été renommée pour calculer les coordonnées en fonction de cet indicateur. (I3a330)- Suppression de "Par défaut" des propriétés
MarqueeDefaults. (I1d8a0) - La propriété "Marquee" a été supprimée des propriétés
MarqueeDefaults. (Iad4f4) - Suppression de
TextLinkStylesde la classeTextStyle.TextLinkStylesfait partie du constructeurLinkAnntationet de la méthodeAnnotatedString.fromHtml(I90b2b). - Correction d'un bug qui provoquait un saut de Pager lors d'un balayage vers une limite alors qu'il était déjà fixé à cette limite. (I9f373, b/339171222)
- BTF2 dispose désormais des bons gestes de sélection à la souris. (Ibe8c6)
Contribution externe
- Renvoyer "Make compose/measure time calculation content-type based in prefetch to improve accuracy" (Iea622)
- Rendre le type de contenu de calcul du temps de composition/mesure basé sur le préchargement pour améliorer la précision (Ibccb1)
- Rendre les modificateurs
WindowInsetsPaddingdisponibles à partir de l'ensemble de sources commun (I070b2)
Version 1.7.0-beta01
14 mai 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.0-beta01. La version 1.7.0-beta01 contient ces commits.
Modifications apportées à l'API
- Ajout de la propriété
KeyboardOptions.shouldShowKeyboardOnFocusen tant que propriété masquée obsolète pour la compatibilité binaire. (I15cfe) Modifier.anchoredDraggableinverse désormais les deltas de déplacement par défaut pour les composants à orientation horizontale lorsqu'ils sont utilisés dans une mise en page RTL. (I3c6d9)AnnotatedString.hasEqualsAnnotationsest désormaishasEqualAnnotations. (I685c0)- Mise à jour de l'API pour obtenir des liens à thème Material dans le texte. Plus précisément, les méthodes ont été supprimées de
TextDefaultspour construire desLinkAnnotationsthématiques et analyser le code HTML avec des liens thématiques. À la place, une classeTextLinkStylesa été ajoutée pour permettre de styliser les liens en tant que paramètre du composable Text. (I31b93) - Remplacement de
onDragStartedetonDragStoppedpar des rappels sans suspension. (I59de8)
Correction de bugs
- Correction d'un bug qui entraînait le plantage de Pager lorsque
contentPaddingétait supérieur aux contraintes entrantes. Le Pager force désormais les valeurs négatives renvoyées parPageSizeà 0. (Iba5d8, b/314008560)
Version 1.7.0-alpha08
1er mai 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.0-alpha08. La version 1.7.0-alpha08 contient ces commits.
Nouvelles fonctionnalités
- Ajout d'un menu contextuel accessible par clic droit aux éléments
BasicTextFieldetSelectionContainer, avec des options pour couper, copier, coller et tout sélectionner. (If8c93, Ia2b49, I6f268)
Modifications apportées à l'API
- Les requêtes de préchargement
LazyLayoutpeuvent désormais être marquées comme urgentes. Cela signifie que nous prévoyons que cet élément sera nécessaire dans la prochaine frame et que nous souhaitons ignorer le budget de frame pour nous assurer d'effectuer plus de travail à l'avance (Id513f). - Changement de nom :
isPositionedByParentWithDirectManipulationdevientintroducesFrameOfReference. Notez qu'il a désormais l'effet inverse. Cela signifie que, par défaut, la plupart desLayoutCoordinatesintroduisent un cadre de référence et que la propriété n'est définie sur "false" que lorsqu'elle est placée sous manipulation directe. Pour interroger la position uniquement avec celles qui introduisent un cadre de référence, utilisezpositionInLocalFrameOfReference(...). OupositionInLocalLookaheadFrameOfReferenceà partir d'unLookaheadScope. (Ifc5f7) - Changement de nom :
onClickeddevientonClickdansLinkInteractionListener(Iaa35c) - Modifier le lambda d'action pour
getScrollViewportLengthselon les commentaires du conseil API. (Ibc74a) - Renommage des API de délégation de l'écriture manuscrite au stylet. (Ica45f, b/327271923)
TextInclusionStrategy.isInsidea été renomméisIncluded. Définissez le type renvoyé deParagraph/MultiParagraph#getRangeForRect()comme non nul. (I51f26)
Correction de bugs
- Ajout de l'option "Tout sélectionner" à tous les menus contextuels de texte dans
SelectionContainer. (Ib750e, b/240143283) - Correction de la capture de longues captures d'écran pour les conteneurs de défilement avec
reverseScrolling=true. (I7c59c) - Correction d'un problème qui entraînait la modification de
currentValuedeAnchoredDraggableStateà l'approche des limites de l'état. (Iea30b, b/333846848)
Contribution externe
PrefetchExecutordevientPrefetchSchedulerpour mieux refléter ses responsabilités. (Ib9154)- Ajout de la prise en charge du préchargement des éléments dans les
LazyListsimbriqués (par exemple, unLazyColumnqui affiche desLazyRowsimbriqués). Cette modification devrait réduire les pertes d'images lors du défilement de cesLazyLists. L'implémentation par défaut consiste à précharger les deux premiers éléments imbriqués. Toutefois, ce comportement peut être contrôlé par les nouvelles APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)etLazyListPrefetchStrategy#onNestedPrefetch. (I51952)
Version 1.7.0-alpha07
17 avril 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.0-alpha07. La version 1.7.0-alpha07 contient ces commits.
Nouvelles fonctionnalités
- Ajout d'un objet
TextDefaultscontenant des méthodes permettant de construire unLinkAnnotationet d'analyser une chaîne avec des balises HTML qui appliquentMaterialThemeaux liens. (I98532, b/139312671) - La prise en charge de l'animation d'apparition et de disparition des éléments a été ajoutée à
LazyVerticalGridetLazyHorizontalGrid. Auparavant, il était possible d'ajouter un modificateurModifier.animateItemPlacement()pour prendre en charge les animations de placement (réorganisation). Nous avons abandonné ce modificateur et introduit un nouveau modificateur non expérimental appeléModifier.animateItem(), qui vous permet de prendre en charge les trois types d'animation : apparition (fondu entrant), disparition (fondu sortant) et réorganisation. (Ib7d12, b/330510929) - La prise en charge de l'animation d'apparition et de disparition des éléments a été ajoutée à
LazyVerticalStaggeredGridetLazyHorizontalStaggeredGrid. Auparavant, il était possible d'ajouter un modificateurModifier.animateItemPlacement()pour prendre en charge les animations de placement (réorganisation). Nous avons abandonné ce modificateur et introduit un nouveau modificateur non expérimental appeléModifier.animateItem(), qui vous permet de prendre en charge les trois types d'animation : apparition (fondu entrant), disparition (fondu sortant) et réorganisation. (I69bc9, b/330511290)
Modifications apportées à l'API
- Ajoute
ContextMenuColorset leLocalContextMenuThemeProvidableCompositionLocalassocié. Les couleurs du menu contextuel dans les champs de texte et le texte sélectionnable peuvent être modifiées en fournissant la composition locale. (Ifa154) - L'option de style d'état enfoncé est désormais disponible pour les liens textuels, en plus des styles normal, survolé et sélectionné. (I5f864, b/139312671)
- Introduction de
ViewConfiguration.HandwritingGestureLineMarginpour les gestes d'écriture manuscrite. Prise en charge du geste d'écriture manuscrite pourBasicTextField. (Ie6e13, b/325660505) - Suppression de
DelegatableNode.scrollIntoViewpour la version 1.7, car nous n'avons pas eu le temps de finir de stabiliser le reste de la surface d'API associée. Cette fonction sera réintroduite dans la version 1.8. (I6cf61, b/333421581, b/332900232) - Lorsque vous interrogez les coordonnées de mise en page, vous pouvez désormais utiliser l'argument
excludeDirectManipulationOffsetpour exclure le décalage défini par les mises en page parentes qui ont placé leurs enfants à l'aide dePlaceable.PlacementScope.withDirectManipulationPlacement. De même, une mise en page qui modifie fréquemment la position de ses enfants peut désormais les placer à l'aide dewithDirectManipulationPlacement(comme Scroll, implémenté par défaut). Cela permet aux animations basées surapproachLayoutd'être plus intuitives, en offrant la possibilité de différencier le décalage à animer et celui à appliquer directement lors de l'animation de l'approche. (I60ec7) - Présentez
requestScrollToItempourLazyStaggeredGrid. Pour chaque mesure réussie, le client peut désormais choisir de ne pas conserver l'index basé sur la clé en appelantrequestScrollToItem. Cela ne modifie en aucun cas le comportement existant, sauf sirequestScrollToItemest appelé. (I63983) - Ajout de
requestScrollToPagedans Pager. Pour chaque mesure réussie, le client peut désormais choisir de ne pas conserver l'index basé sur la clé en appelantrequestScrollToPage. Cela ne modifie en aucun cas le comportement existant, sauf sirequestScrollToPageest appelé. (Ic4213) - Introduction de
requestScrollToItempourLazyGrids. Pour chaque mesure réussie, le client peut désormais choisir de ne pas conserver l'index basé sur la clé en appelantrequestScrollToItem. Cela ne modifie en aucun cas le comportement existant, sauf sirequestScrollToItemest appelé. (I0a7a0) ClickableTextest marqué comme obsolète. Pour ajouter des liens au texte, créez unAnnotatedStringavec unLinkAnnotationcorrespondant à votre lien et transmettez ceAnnotatedStringau composableText(I34d4b, b/323346994).UrlAnnotationest obsolète. Utilisez plutôtLinkAnnotation.Url. Si vous utilisez le thème Material, utilisez l'objetTextDefaultspour créer l'annotation avec le thème Material appliqué (I8d180, b/323346545).String.parseAsHtmlrenommé enAnnotatedString.Companion.fromHtml(I43dcd)- Ajout d'arguments de style (
linkStyle,focusedLinkStyle,hoveredLinkStyle) et d'un écouteur d'interaction de lien à la méthodeparseAsHtml. Lors de l'analyse de la chaîne avec balises HTML et balises<a>, la méthode construit unLinkAnnotation.Urlpour chaque balise et transmet les objets de style et l'écouteur d'interaction de lien à chaque annotation. (I7c977) LinkAnnotationaccepte désormais les arguments de style basés sur l'état et unLinkInteractionListener. Ajoutez cette annotation àAnnotatedStringpour obtenir un lien hypertexte. En transmettantfocusedStateet/ouhoveredState, vous pouvez définir la configuration visuelle des liens lorsqu'ils sont sélectionnés et/ou survolés. (I81ce4, b/139312671)- Le flag de fonctionnalité pour les captures d'écran longues a été supprimé. (I28648, b/329128246)
LazyColumnaffiche désormais correctement les en-têtes fixes dans les longues captures d'écran. (I8d239, b/329296635)- Stabilisation de la majorité des API expérimentales restantes introduites avec le nouveau
BasicTextField. (I714e2) - Ajout du paramètre
textObfuscationCharacteràBasicSecureTextField, qui contrôle le caractère à utiliser lors de l'obscurcissement du contenu. (I0588b) - Les sources
NestedScrollDrag and Fling sont remplacées parUserInputetSideEffectpour tenir compte de la définition étendue de ces sources, qui incluent désormais les animations (effet secondaire) ainsi que la molette de la souris et le clavier (UserInput). (I40579) - Introduction de
LocalBringIntoViewSpec, un comportement de défilement de la mise au point dépendant de la plate-forme qui est appliqué au niveau du modificateur Scrollable. (I27aa5, b/317453911) - Suppression de
TextFieldCharSequence.TextFieldBuffer.originalValuesest remplacé parTextFieldBuffer.originalTextetTextFieldBuffer.originalSelection. (I2c7d6) ImeOptions.hintLocalesn'est plus nullable. Si vous souhaitez transmettre une liste de paramètres régionaux vide, veuillez utiliserLocaleList.Empty. (Ic5bc4)- Changement de nom :
getOffsetFractionForPagedevientgetOffsetDistanceInPages. (Ia05e2)
Correction de bugs
- Lorsque des
InputTransformationssont associés à desnext, leursKeyboardOptionssont désormais correctement fusionnés par options individuelles à l'aide de la nouvelle méthodeKeyboardOptions.merge. (Ie5304, b/295951492) - Le
targetValuedeAnchoredDraggableStatene tient plus compte des seuils de position. Il dispose désormais d'un seuil implicite de 50 %, ce qui signifie quetargetValuechange à mi-chemin entre deux ancres. (I82c2c)
Contribution externe
- Renommage de deux API de défilement (I56a75)
Version 1.7.0-alpha06
3 avril 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.0-alpha06. La version 1.7.0-alpha06 contient ces commits.
Nouvelles fonctionnalités
- La prise en charge de l'animation d'apparition et de disparition des éléments a été ajoutée à
LazyColumnetLazyRow. Auparavant, il était possible d'ajouter un modificateurModifier.animateItemPlacement()pour prendre en charge les animations de placement (réorganisation). Nous avons abandonné ce modificateur et introduit un nouveau modificateur non expérimental appeléModifier.animateItem(), qui vous permet de prendre en charge les trois types d'animation : apparition (fondu entrant), disparition (fondu sortant) et réorganisation. (I2d7f7, b/150812265) - Les clients de
LazyColumn/LazyRowpeuvent désormais choisir de ne pas conserver d'index basé sur la clé pour le prochain pass de mesure en appelant unLazyListState.requestToScrollnon suspendu. (I98036, b/209652366) - Ajout de la méthode
parseAsHtmlpour les chaînes stylisées : elle permet de convertir une chaîne marquée avec des balises HTML enAnnotatedString. Notez que toutes les balises ne sont pas compatibles. Par exemple, vous ne pourrez pas encore afficher de listes à puces. (I84d3d) - Implémentation d'une prise en charge expérimentale des captures d'écran longues dans les conteneurs de défilement Compose à l'aide de l'API Android officielle (
ScrollCaptureCallback). Cette fonctionnalité est expérimentale et peut ne pas gérer correctement tous les cas pour le moment. C'est pourquoi elle est actuellement désactivée par défaut. Pour activer cette option, définissez l'indicateurComposeFeatureFlag_LongScreenshotsEnabledsur "true". Cette option sera supprimée avant la version bêta 1.7. (I2b055, b/329296471) - Ajout d'une nouvelle API
GraphicsLayerpour offrir plus de flexibilité dans le placement et le rendu des instancesGraphicsLayer, et pour prendre en charge les fonctionnalités de rendu intrinsèque sans avoir à coordonner avec les implémentations composables pour spécifier les instances de modificateurGraphicsLayer.
Modifications apportées à l'API
- Tous les paramètres
KeyboardOptionsont désormais une valeur non spécifiée par défaut. Ajout de la méthodeKeyboardOptions.merge. - Changement de nom :
KeyboardOptions.autoCorrectdevientautoCorrectEnabled, et peut désormais être nul (ce qui indique qu'aucune valeur n'a été spécifiée). (Ia8ba0, b/295951492) - Changement de nom :
outOfBoundsPageCountdevientbeyondViewportPageCount. (I129c6) fun ClipEntry.getMetadata()devientval ClipEntry.clipMetadata. (I50155)- Suppression de
TextFieldState.valueAsFlow(). Utiliser de préférencesnapshotFlow { state.text }ousnapshotFlow { TextFieldCharSequence(state.text, state.selection) }(I7d629) - Réorganisation des paramètres
InputTransformation.transformInput.originalValue: TextFieldCharSequencesupprimé. Au lieu de cela,TextFieldBufferporte désormais cette valeur avec le même nom. Le paramètrevalueWithChanges: TextFieldBuffera également été supprimé.TextFieldBufferest désormais le champ d'application du récepteur sur la fonction. (I919cc) - Les variantes
BasicTextField(state)etBasicSecureTextFieldutilisent désormaisKeyboardActionHandlerau lieu deKeyboardActionspour traiter les actions effectuées par le clavier logiciel. (I58dda) - API de délégation de l'écriture manuscrite au stylet pour prendre en charge l'écriture manuscrite au stylet dans les "faux" champs de saisie de texte. (I9c09c, b/327271923)
- Changement de nom :
KeyboardOptions.shouldShowKeyboardOnFocusdevientshowKeyboardOnFocus. (Ib4b7a, b/295951492) - Suppression du paramètre
hintMediaTypesdeModifier.contentReceiver. Nous avons déjà encouragé les développeurs à vérifier le type de contenu multimédiaTransferableContentreçu, car il peut être incompatible avec lehintMediaTypesconfiguré. (I82f99) - Réorganisation des paramètres de
BasicSecureTextField. Suppression des paramètreskeyboardTypeetimeActionau profit de la classeKeyboardOptionscomplète, tout en conservant les mêmes valeurs par défaut adaptées àBasicSecureTextField. Le paramètrescrollStatea également été supprimé. (Ibbfa9) - Le type de
TextFieldState.textest passé deTextFieldCharSequenceàCharSequence. Par conséquent, nous avons ajoutéTextFieldState.selection: TextRangeetTextFieldState.composition: TextRange?pour lire les valeurs de sélection et de composition actuelles directement à partir de l'objet d'état. - Suppression de
TextFieldState.forEachTextValue. (Idb2a2) - Suppression des fonctions
ClipboardManager.getClipMetadataetClipboardManager.hasClip. Veuillez utiliserclipEntry.getMetadata()pour lire les métadonnées de l'entrée de clip actuelle. Vérifiez également si le résultat deClipboardManager.getClipest nul ou non pour savoir si le presse-papiers contient un extrait actuel. (I50498) ClipboardManager.setClipaccepte désormais la valeur "null" pour pouvoir vider le presse-papiers. (I7d2e9)ReceiveContentListenerest converti en interface de fonction. La surchargeModifier.receiveContentqui accepte un lambda est également supprimée, carReceiveContentListenerest désormais une interface de fonction.Modifier.receiveContenta été renomméModifier.contentReceiver. (I1e6af)- Changement de nom :
TransferableContent.consumeEachdevientTransferableContent.consume. (I1e462) rememberTextFieldStateest passé à une API stable. (I37999)
Correction de bugs
- Correction d'un bug qui empêchait la variante
BasicTextField(state)de fonctionner avec les claviers CJK(basés sur la composition). (I54425) - Correction d'un bug qui pouvait entraîner la référence de données obsolètes par
Modifier.dragAndDropTarget()dans certains cas avec la réutilisation deModifier.Node. (I05bb1) - Rétablissement d'une modification récente du contrat, où les appels
AnchoredDraggableState#anchoredDrags'arrêtaient à la fin d'une opérationanchoredDrag. (I95715)
Version 1.7.0-alpha05
20 mars 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.0-alpha05. La version 1.7.0-alpha05 contient ces commits.
Modifications apportées à l'API
- Suppression de la composition locale expérimentale
LocalTextLinkStylepour styliser les liens hypertexte. (Iebfa7) - Suppression du remplacement expérimental de
BasicTextavec l'argumentonLinkClicked. Une API de remplacement pour la prise en charge des liens hypertexte sera disponible ultérieurement. (I107d5) - Suppression des méthodes et propriétés liées aux points de code sous
TextFieldStateetTextFieldBuffer. Les suffixesinCharsont également été supprimés des API restantes liées à la sélection et à la composition. (Ief7ce) - La
currentValuedeAnchoredDraggableest désormais mise à jour lors du passage par un point d'ancrage. UtilisezsettledValuepour recevoir la sémantiquecurrentValueprécédente, en mettant à jour uniquement lors de l'ancrage. La progression est désormais exposée en tant que fonction (nécessitant un point de départ et un point d'arrivée) au lieu d'une propriété. (Ibe6e8, b/318707189, b/298271489, b/294991954) BasicTextField(state),TextFieldState,InputTransformation,OutputTransformation,TextFieldLineLimitsetTextFieldDecoratorsont passés à la version stable. (I9582b)InterceptPlatformTextInputa été introduit pour aider à écrire des tests de bas niveau liés aux IME et d'autres cas d'utilisation d'IME de bas niveau.PlatformTextInputTestOverrideest obsolète. (I862ed, b/322680547)- Séparation de
restrictedConstraints()en deux méthodes :fitPrioritizingWidth()etfitPrioritizingHeight()(I6d7fd)
Contribution externe
- Ajout de deux nouvelles API
isLastScrollForward/isLastScrollBackwardpour vérifier le sens de défilement de la dernière action de défilement. Renvoie "false" si aucune action de défilement n'a encore été effectuée. (I63a0e)
Version 1.7.0-alpha04
6 mars 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.0-alpha04. La version 1.7.0-alpha04 contient ces commits.
Modifications apportées à l'API
- Prise en charge de la fonctionnalité d'écriture manuscrite au stylet sur les appareils équipés d'Android U et versions ultérieures. (I002e4)
- Ajout de
hintLocalesàKeyboardOptionspour permettre àTextFieldsde suggérer des paramètres régionaux spécifiques aux IME afin de prédéfinir une langue préférée. (Id18c2) - Suppression des surcharges expérimentales
BasicTextField2etBasicSecureTextFieldqui acceptaient les paramètresvalue: StringetonValueChange: () -> String. (I568b4) - Ajoutez une fonction
applySemanticsfacultative àInputTransformationpour influencer la sémantique duBasicTextField2auquel elle est appliquée. (I74a2f, b/170648072) - Dans cette CL, nous ajoutons l'action sémantique
GetScrollViewportLengthafin de pouvoir transmettre des informations sur les composants en cours de défilement dans Compose au système d'accessibilité. Cette CL applique également l'utilisation de ladite propriété dans les listes déroulantes Foundation. (Ic5fa2) BasicTextField2a été renomméBasicTextField. (Ie5713)FocusRequester.createRefsest désormais stable (I4d92c, b/261436820).- Ajout de
DelegatableNode.scrollIntoView()pour permettre aux nœuds de modificateur d'effectuer directement des requêtesscrollIntoView. (I2b3b7, b/299939840) - Introduction de
DelegatableNode.requireView()pour permettre aux nœuds de modificateur d'obtenir leViewAndroid actuel sans lire de composition locale. (I40768) - Présentation des informations de mise en page contextuelles dans les portées de ligne et de colonne du flux contextuel, avec l'index de ligne, la position et les contraintes de largeur et de hauteur maximales pour rester à la position spécifiée. Les éléments qui dépassent la largeur ou la hauteur maximales peuvent passer à la ligne suivante ou être omis en fonction des paramètres de dépassement. (Id13f8, b/292114798)
Correction de bugs
- Correction d'un bug qui entraînait un plantage dans certaines conditions lors de l'activation/désactivation des attributs
enabledoureadOnlydeTextField. (Iae17b)
Version 1.7.0-alpha03
21 février 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.0-alpha03. Liste des commits de la version 1.7.0-alpha03
Modifications apportées à l'API
- Ajout de
DelegatableNode.requireLayoutCoordinates()pour obtenir leLayoutCoordinatesactuel d'unModifier.Nodesans avoir à remplaceronPlacedni à stocker vous-même les coordonnées dans une propriété. (Ia8657) - Ajout de
DelegatableNode.currentLayoutCoordinatespour obtenir leLayoutCoordinatesactuel d'unModifier.Nodesans avoir à remplaceronPlacedni à stocker vous-même les coordonnées dans une propriété. (Iaebaa) - Optimisations des performances dans
DraggableAnchorsutilisées parAnchoredDraggable. (I89cff) BasicTextField2et les API associées du packageandroidx.compose.foundation.text2sont déplacées versandroidx.compose.foundation.text. (I9f635)BasicTextField2n'accepte plus le paramètreCodepointTransformation. UtilisezBasicSecureTextFieldouOutputTransformation. (Id34ff)- Ajout d'une méthode pour comparer uniquement les annotations de deux
AnnotatedStrings. (I32659) - Découvrez
ContextualFlowRowetFlowRow/Columnamélioré avecMaxLinesetOverflow. Nous sommes heureux d'annoncer des améliorations apportées auxFlowRowetFlowColumnexpérimentaux, qui incluent désormais la prise en charge demaxLineset du dépassement, ainsi que le lancement deContextualFlowRowetContextualFlowColumn. Cette mise à jour est conçue pour fournir des composants aux performances optimales, oùContextualFlow*est parfait pour un grand nombre d'éléments utilisant une petite configurationmaxLineset des boutons dynamiques "Voir plus", et oùFlowRowetFlowColumnsont parfaits pour un petit nombre d'éléments, moins de 100. Important : Pour conserver le comportement existant dansFlowRowouFlowColumn, où tous les éléments sont composés, qu'ils correspondent ou non à la valeur maximale de l'axe transversal, définissezoverflowsurFlowRowOverflow.VisibleouFlowColumnOverflow.Visiblelors de l'initialisation. DécouvrezContextualFlowRowSampleetFlowRowSamplepour voir des exemples de ces nouvelles fonctionnalités en action. (Ib9135, b/293577082)
Correction de bugs
- L'animation du curseur ne demande plus de frames entre les états "on" et "off". (Ia2253)
- Les constructeurs de copie obsolètes de
KeyboardOptionscopient désormais correctement toutes les propriétés. (If12de)
Version 1.7.0-alpha02
7 février 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.0-alpha02. Liste des commits de la version 1.7.0-alpha02
Modifications apportées à l'API
HorizontalPager,VerticalPageretPagerStatesont passés en version stable. (I67660, b/316966909)- Ajout du local de composition
LocalTextLinkStylequi permet de modifier le style des liens dans le texte de l'application. Si vous utilisez votre propre thème dans l'application, vous devez définir ce local de composition en fonction de votre thème. Lorsque vous utilisez le thème Material, la couleur du lien est définie par défaut sur la couleur principale de Material. (I7eb10) - Ajout du modificateur
receiveContentqui permet aux développeurs de recevoir du contenu enrichi dans Jetpack Compose. receiveContents'intègre àBasicTextField2pour accepter le contenu enrichi fourni par le clavier logiciel ou via l'action de collage du presse-papiers. (I81b72)- Dans ce changement, nous remplaçons
SnapFlingBehaviorparTargetedFlingBehaviordans le pager pour débloquer d'autres cas d'utilisation et offrir une plus grande flexibilité. (I762ea) - Dans cette modification, nous rendons les API d'accrochage stables. Nous nettoyons également une partie du code de test et ajoutons d'autres exemples à l'accrochage. (Id8da9)
- Présentation de
TargetedFlingBehavior, unFlingBehaviorqui permet de propager des informations sur l'état de l'animation en cours et son décalage de défilement cible. (I6a207)
Correction de bugs
BasicTextField2maintient désormais le curseur dans le champ de saisie lorsqu'il a été déplacé hors de vue par défilement ou par saisie. (Ieb856, b/237190748)
Contribution externe
- Ajout d'une API expérimentale pour configurer le comportement de préchargement des LazyLists. (I022a4)
Version 1.7.0-alpha01
24 janvier 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.0-alpha01. Liste des commits de la version 1.7.0-alpha01
Nouvelles fonctionnalités
- Ajout d'un nouveau
Indication API,IndicationNodeFactory. Cela permet des implémentationsIndicationplus performantes que l'ancienne APIrememberUpdatedInstance(désormais obsolète). Pour en savoir plus sur la migration, consultez developer.android.com. clickable / combinedClickable / selectable / toggleableaccepte désormais un paramètreMutableInteractionSourcepouvant avoir une valeur nulle. Si la valeur est nulle et que leIndicationfourni est unIndicationNodeFactory, leIndicationpeut être créé de manière différée uniquement en cas de besoin, ce qui améliore les performances. Si vous n'effectuez pas de hoisting et que vous n'utilisez pasMutableInteractionSource, nous vous recommandons de transmettre la valeur "null".
Modifications apportées à l'API
- Ajout de
DecayAnimationdansAnchoredDraggable. Cette modification ajoute un paramètredecayAnimationSpecàAnchoredDraggable, ce qui permet d'utiliser une animation de diminution lors de l'établissement sur l'une des ancres. Le changement inclut également le renommage deanimationSpecensnapAnimationSpecpour vous aider à comprendre le cas d'utilisation de chaque spécification. BasicTextField2est disponible à des fins de tests. Il doit être à peu près équivalent àBasicTextFielden termes de fonctionnalités et son comportement doit être prêt pour la production. Toutefois, l'API reste expérimentale pour le moment. Avant d'être stabilisé, il sera renomméBasicTextFieldet déplacé dans le même package.- Première version de l'API
OutputTransformationpourBasicTextField2. Cette API remplace la plupart des cas d'utilisation deVisualTransformationdans l'ancienneBasicTextField. Toutefois, elle n'est pas encore complète et certaines choses ne fonctionneront pas correctement. Nous vous serions reconnaissants de nous faire part de vos commentaires sur la facilité d'utilisation de l'API pour vos cas d'utilisation. (aosp/2708848) - Introduction de
LinkAnnotationqui permet d'ajouter des liens et des éléments cliquables dans le texte. La fonctionnalité de liens n'est pas encore complète et d'autres modifications de l'API sont à venir. - Ajout du modificateur
receiveContentqui permet aux développeurs de recevoir du contenu enrichi dans Jetpack Compose. receiveContents'intègre àBasicTextField2pour accepter le contenu enrichi fourni par le clavier logiciel ou collé depuis le presse-papiers.KeyboardOptions.shouldShowKeyboardOnFocusvous permet de désactiver le comportement par défaut deBasicTextFieldqui consiste à demander un clavier logiciel lors de la sélection.TextInputServiceetLocalTextInputServicesont désormais obsolètes. Utilisez plutôtPlatformTextInputModifierNodepour intégrer directement les API IME de la plate-forme. (aosp/2862698)Indication#rememberUpdatedInstanceest maintenant obsolète. Elle entraîne une pénalité de performances élevée et inévitable, et empêche d'autres optimisations. Vous devez plutôt utiliser la nouvelle APIIndicationNodeFactory.
Correction de bugs
BasicTextFieldprévalide désormais une petite sélection de mappages de décalage lorsqueVisualTransformationest transmis. Cela permet de détecter les erreurs de codage courantes qui entraînent des exceptions irrécupérables lors des passes de mesure ou de dessin ultérieures. En générant des exceptions lors de la composition, les développeurs sont plus susceptibles de voir ces erreurs pendant le développement, ce qui permet d'éviter les plantages en production. (I0fd42)VisualTransformationne génère pas d'erreur si vous renvoyez un index non valide pour un index non valide (b/316401857 ).
Version 1.6
Version 1.6.8
12 juin 2024
Publication d'androidx.compose.foundation:foundation-*:1.6.8. La version 1.6.8 contient ces commits.
Version 1.6.7
1er mai 2024
Publication d'androidx.compose.foundation:foundation-*:1.6.7. La version 1.6.7 contient ces commits.
Version 1.6.6
17 avril 2024
Publication d'androidx.compose.foundation:foundation-*:1.6.6. La version 1.6.6 contient ces commits.
Correction de bugs
- Correction d'un bug qui entraînait un plantage dans certaines conditions lors de l'activation/désactivation des attributs
enabledoureadOnlydeTextField. (Iae17b)
Version 1.6.5
3 avril 2024
Publication d'androidx.compose.foundation:foundation-*:1.6.5. La version 1.6.5 contient ces commits.
Correction de bugs
- Ajout de journaux de débogage pour les bugs difficiles à reproduire dans Row/Column : (b/300280216 et b/297974033)
Version 1.6.4
20 mars 2024
Publication d'androidx.compose.foundation:foundation-*:1.6.4. La version 1.6.4 contient ces commits.
Correction de bugs
- Le plantage qui survenait lorsqu'un geste de sélection par appui prolongé et déplacement sortait des limites de mise en page du texte dans la première frame du déplacement a été corrigé. (Icdf90, b/325307463)
Version 1.6.3
6 mars 2024
Publication d'androidx.compose.foundation:foundation-*:1.6.3. La version 1.6.3 contient ces commits.
Version 1.6.2
21 février 2024
Publication d'androidx.compose.foundation:foundation-*:1.6.2. Liste des commits de la version 1.6.2
Correction de bugs
- Correction du problème de non-réinitialisation de
AnimateContentSize. (I07051) - Correction d'un problème qui entraînait une mise en cache excessive de
intrinsicHeightde texte dans certaines circonstances. (3cd398, b/217910352)
Version 1.6.1
7 février 2024
Publication d'androidx.compose.foundation:foundation-*:1.6.1. Liste des commits de la version 1.6.1
Correction de bugs
- Correction de la mesure de la grille échelonnée lorsque la limite de défilement est dépassée. (bffc39)
- Ajoutez une vérification de la mise en page avec de grandes dimensions. (e74af5)
- Correction du placement des éléments de taille 0 au début de la grille échelonnée. (785f94)
- Appelez le rappel onRelease dans le même ordre que onForgotten. (31ce3b)
Version 1.6.0
24 janvier 2024
Publication d'androidx.compose.foundation:foundation-*:1.6.0. Liste des commits de la version 1.6.0
Changements importants depuis la version 1.5.0
- Nouveau modificateur
Modifier.anchoredDraggablequi permet de faire glisser et d'animer des éléments entre un ensemble prédéfini d'ancres. Ce modificateur est destiné à remplacerModifier.swipeable. Découvrez comment l'utiliser et migrer depuisModifier.swipeabledans le guide de migration. - La fonctionnalité de glisser-déposer entre les applications et les composants a été ajoutée. Consultez
DragAndDropTarget,Modifier.dragAndDropSourceet d'autres API pour commencer. Modifier.draggable2Dest le nouveau modificateur qui permet de faire glisser facilement des éléments en 2D. Consultez Exemple.AndroidExternalSurfaceetAndroidEmbeddedExternalSurfaceont été ajoutés pour faciliter l'ajout de composants pilotés par la surface dans Compose.- Diverses modifications et améliorations de l'API dans
PageretsnapFlingBehaviour - Plusieurs API de mise au point, de texte et d'encarts sont passées au stade d'API stables.
Version 1.6.0-rc01
10 janvier 2024
Publication d'androidx.compose.foundation:foundation-*:1.6.0-rc01. Liste des commits de la version 1.6.0-rc01
Modifications apportées à l'API
- Le constructeur d'extension
DragAndDropTarget()a été supprimé. Créez une instance à l'aide deobject: DragAndDropTarget {}. (I32318)
Version 1.6.0-beta03
13 décembre 2023
Publication d'androidx.compose.foundation:foundation-*:1.6.0-beta03. Liste des commits de la version 1.6.0-beta03
Correction de bugs
- Correction d'un plantage qui affectait les textes très volumineux mesurés avec des contraintes infinies. (I1a7df, b/312294386)
PlatformImeOptionsest désormais une classe concrète au lieu d'une interface. (If40a4)
Version 1.6.0-beta02
29 novembre 2023
Publication d'androidx.compose.foundation:foundation-*:1.6.0-beta02. Liste des commits de la version 1.6.0-beta02
Correction de bugs
- Correction de
canScrollqui n'était pas mis à jour après un défilement avec réorganisation uniquement. (I60a86) - Correction pour
Modifier.animateItemPlacement()etLookaheadScopeaprès de petits défilements. (I3a2b7)
Version 1.6.0-beta01
15 novembre 2023
Publication d'androidx.compose.foundation:foundation-*:1.6.0-beta01. Liste des commits de la version 1.6.0-beta01
Modifications apportées à l'API
- Le modificateur
DragAndDropTargetaccepte désormais explicitement leDragAndDropTargetde réception et possède un lambda pour activer une session de glisser-déposer. Il existe désormais deux fonctions de fabrique pour unDragAndDropModifierNode. Un pour recevoir les transferts et un pour transférer les données (I69481) - Mise à jour de
maximumFlingVelocitypour qu'il soit représenté sous la forme d'un float. Mise à jour de la documentation pour clarifier l'unitémaximumFlingVelocity. (I8adc7) onDragAndDropStartdans la fabriqueDragAndDropModifierNodea été renomméacceptDragAndDropTransfer.acceptsDragAndDropTransfera été ajouté àdragAndDropTargetModifierpour accepter une session de glisser-déposer. Ce lambda renvoie unDragAndDropTargetviable si une session de glisser-déposer vous intéresse. Les autres lambdas pour le traitement des événements de déplacement ont été remplacés par celui-ci.Une fonction de fabrique
DragAndDropTargeta été ajoutée pour recevoir des sessions de glisser-déposer (Iebf3a).L'exposition de
startDragImmediatelydansAnchoredDraggablepermet de contrôler la détection des gestes de déplacement lors de son utilisation. Il est utile de le définir lorsque le widget est en cours d'animation vers une ancre cible. Consultez Exemple. (Ie6d13, b/285139987)Les API d'info-bulle de base sont désormais
@ExperimentalFoundationApi(I30b0b).Suppression de
DragAndDropInfoen tant que typeDragAndDropModifierNode.drag, qui accepte désormais les paramètres pour le lambdaDrawScopedetransferData, la taille de la décoration et la décoration de déplacementDragAndDropTargetcomporte des méthodes pour des événements de glisser-déposer spécifiques au lieu d'être une seule méthode abstraite.onDragAndDropEventdans la fonction factory pour unDragAndDropModifierNodea été renomméonDragAndDropStartpour mieux indiquer que leDragAndDropTargetfourni n'est valable que pour une session de glisser-déposer donnée.Suppression de
DragAndDropEventType(I645b1)Changement de nom :
PlatformTextInputModifierNode.runTextInputSessiondevientestablishTextInputSession. (I03cd0)Remplacez
OriginalTextparTextSubstitution. (Ifa5a8)Changement de nom :
PlatformTextInputModifierNode.textInputSessiondevientrunTextInputSession. (Ie9c6b)Les enfants de
SubcomposeLayout(et les mises en page commeLazyColumnqui en dépendent) qui sont conservés pour être réutilisés ultérieurement sont considérés comme désactivés. Une nouvelle API de testassertIsDeactivated()a été introduite pour tester ces nœuds. Le reste des API de test filtrera les nœuds désactivés par défaut. (I2ef84, b/187188981)Le paramètre
clippingEnableddeModifier.magnifiera été renomméclip.Le paramètre
magnifierCenterdeModifier.magnifierest défini sur "nullable" (autorise la valeur "null") tout en conservant le même comportement par défaut. (I6aa66)Les API
SwipeToRevealMaterial (pour les cartes et les chips) s'appuient désormais sur une API basée sur des emplacements (comme recommandé par Compose) au lieu d'instances basées sur des classes de données pour créer ces emplacements. Il s'agit d'un changement incompatible. Veuillez consulter la démo et l'exemple de code pour découvrir comment utiliser la nouvelle API. (Ia8943)
Correction de bugs
- Implémentez equals et hashCode pour
PageSize.Fixed. (Ie3ede, b/300134276) - Correction d'un bug qui empêchait la réduction de la mise en page
BasicTextlorsqueminWidthchangeait et queminWidthétait inférieur aux contraintes de mesure initialemaxWidth(Idb19c). - Ajout de la prise en charge du moteur de rendu pour le dégradé de balayage dans
ArcLine. (I4d5bb) - Correction d'un problème de compatibilité binaire avec la modification de l'encart de fenêtre (Iee695)
- Supprimez la couche de base Material pour le composant Chip/Button Material3, car les microbenchmarks montrent de meilleures performances sans elle. (I55555)
Version 1.6.0-alpha08
18 octobre 2023
Publication d'androidx.compose.foundation:foundation-*:1.6.0-alpha08. Liste des commits de la version 1.6.0-alpha08
Nouvelles fonctionnalités
Modifier.draggable2Dest le nouveau modificateur qui permet de faire glisser facilement des éléments en 2D. Voir Exemple (Id95f5, b/214412658)
Modifications apportées à l'API
- Le lambda
onDrawDragShadowdeModifier.dragAndDrawSourcea été renommédrawDragDecoration, et le paramètre de taille deDragAndDropInfoa été renommédragDecorationSize. (Id0e30, b/303904810) - Le paramètre
decorationBoxdeBasicTextField2a été renommédecorator. Son type est également remplacé par une interface amusante équivalenteTextFieldDecorator. (I23c1c)
Correction de bugs
- Amélioration de la documentation sur
BasicTextFieldconcernant les exigencesonValueChange. (I90fc9, b/160257648)
Version 1.6.0-alpha07
4 octobre 2023
Publication d'androidx.compose.foundation:foundation-*:1.6.0-alpha07. Liste des commits de la version 1.6.0-alpha07
Modifications apportées à l'API
- Ajout de
PlatformTextInputMethodTestOverridepour écrire des tests pour les éditeurs de texte personnalisés. (Id159b) - Changement de nom :
GraphicsSurfacedevientAndroidExternalSurface. (I11680) - Ajout de l'indicateur temporaire
DisableNonLinearFontScalingInComposepour désactiver la mise à l'échelle non linéaire de la police. DéfinissezDisableNonLinearFontScalingInCompose = truedans vos tests si vous avez besoin de temps pour les nettoyer. Cet indicateur sera supprimé dans Compose 1.6.0-beta01. (Ic9486) - Ajout des collections
ColorListetColorSetqui évitent les allocations. (I744bd) - Cette modification supprime
shortSnapVelocityThreshold, qui est devenu un détail d'implémentation des implémentations deSnapLayoutInfoProvider. (I65f6d) - Ajout du modificateur
dragAndDropSourcepour démarrer les sessions de glisser-déposer et du modificateurdragAndDropTargetpour recevoir les éléments des sessions de glisser-déposer (Ib7828, b/286038936) - Mise à jour de la documentation
SnapPositionInLayoutet de la méthode de position. Ajoutez des marges intérieures de contenu à la méthode de position dansSnapPositionInLayout. (Id7938, b/300116110) - Ajout de
UndoStateàTextFieldState, qui permet d'annuler/rétablir les modifications apportées par l'utilisateur. (Icc024)
Correction de bugs
- Correction de
basicMarqueequi ne s'animait pas après un changement de vitesse. (Id2e77, b/297974036)
Version 1.6.0-alpha06
20 septembre 2023
Publication d'androidx.compose.foundation:foundation-*:1.6.0-alpha06. Liste des commits de la version 1.6.0-alpha06
Nouvelles fonctionnalités
- Nouveaux wrappers composables pour
SurfaceView,TextureView: GraphicsSurface()etEmbeddedGraphicsSurface(). Il s'agit d'une API expérimentale qui est susceptible d'être modifiée. (I9ddb2) Modifier.magnifier()est désormais une API stable. Cela inclut la suppression deMagnifierStyleau profit des paramètres intégrés dans le modificateur lui-même. (I83bec, b/298381260, b/262367109, b/261438887)
Modifications apportées à l'API
- Les méthodes
updateCurrentPageetupdateTargetPageont été introduites dansScrollScope. Elles constituent les derniers éléments nécessaires pour permettre la personnalisation du défilement animé viaPagerState.scroll. (I9cad5, b/267744105, b/243786897) - Supprimez la densité de
SnapFlingBehavior. Toutes les implémentations deSnapLayoutInfoProvideront déjà un moyen d'accéder à la densité. La portée du récepteur peut être supprimée, ce qui entraînera une implémentation moins complexe deSnapFlingBehavioretSnapLayoutInfoProviders. (I153c3) - Plus de modificateurs marqués comme stables. (I56af1, b/298046462)
SnapStepSizea été supprimé deSnapLayoutInfoProvider. Le calcul doit être effectué à l'aide des informations de mise en page et fourni par le biais des décalages d'approche ou d'accrochage. (If320c)
Nouveaux comportements
- Compose utilise désormais une mise à l'échelle non linéaire des polices pour améliorer la lisibilité et l'accessibilité. Lorsque l'échelle de police est supérieure à 100 % dans les paramètres système, la taille du texte petit augmente normalement, mais celle du texte déjà grand n'augmente que légèrement. De plus, les hauteurs de ligne définies en SP s'ajustent automatiquement pour rester proportionnelles à la hauteur prévue à l'échelle 100 %. Pour en savoir plus, consultez les bonnes pratiques concernant la mise à l'échelle des polices. (I11518)
Correction de bugs
- Supprimez l'utilisation de
rememberSaveablepour les info-bulles. (Icc131, b/299500338)
Version 1.6.0-alpha05
6 septembre 2023
Publication d'androidx.compose.foundation:foundation-*:1.6.0-alpha05. Liste des commits de la version 1.6.0-alpha05
Modifications apportées à l'API
- Ajoutez des surcharges pour
BasicSecureTextFieldqui acceptent une valeur immuable et un rappel pour modifier cette valeur, tout comme l'APIBasicTextFieldactuelle. (Ia4882) - Ajoutez
Modifier.preferKeepClear()pour marquer le composable comme préférant rester à l'écart des fenêtres flottantes sur l'API 33 et les versions ultérieures. (Ib51d5, b/297260115) - Les vitesses de balayage dans les composants View tels que
ScrollViewetRecyclerViewsont limitées àViewConfiguration.ScaledMaximumFlingVelocity. Compose contient désormais sa propre version demaximumFlingVelocity, qui s'applique désormais àDraggable. (Ibf974) - Suppression des surcharges
PageretPagerState, devenues obsolètes. (Iea07e) - Ajout de
BasicTooltipBoxàcompose.foundationet mise à jour dePlainTooltipBoxetRichTooltipBoxpour utiliserTooltipBoxavec les nouveaux composablesPlainTooltipetRichTooltip. (I79e1d)
Version 1.6.0-alpha04
23 août 2023
Publication d'androidx.compose.foundation:foundation-*:1.6.0-alpha04. Liste des commits de la version 1.6.0-alpha04
Modifications apportées à l'API
- Ajout de l'interface
ReusableCompositionpour gérer le cycle de vie et la réutilisation des sous-compositions. (I812d1, b/252846775) Modifier.focusGroupest désormais une API stable. (I7ffa3)- Ajoutez des surcharges pour
BasicTextField2qui acceptent une valeur immuable et un rappel pour modifier cette valeur, tout comme l'APIBasicTextFieldactuelle. (I3f2b8) GridItemSpan::currentLineSpanest désormais une API stable. (Icc29c)- Le canevas qui accepte
contentDescriptionest désormais une API stable. (Ib3d29) viewportSizea été introduit dansScrollState. Il permet de connaître la tailleviewPortdu composant qui utiliseScrollStateaprès la mesure. (I8b85a, b/283102682)- Correction d'un problème où la prélecture dans Pager ne correspondait pas au comportement dans Views. (I93352, b/289088847)
Modifier.consumeWindowInsets(PaddingValues)est désormais stable.- L'API
Deprecated Modifier.consumedWindowInsetsa été supprimée. UtilisezModifier.consumeWindowInsetsà la place. (Id72bb)
- L'API
Version 1.6.0-alpha03
9 août 2023
Publication d'androidx.compose.foundation:foundation-*:1.6.0-alpha03. Liste des commits de la version 1.6.0-alpha03
Modifications apportées à l'API
- Ajout de la surcharge
LazyLayout, qui accepte un lambda deLazyLayoutItemProvider, qui n'est plus un objet brut comme auparavant. La surcharge précédente est obsolète. (I42a5a) - Ajout de la prise en charge de la configuration de
privateImeOptions(Idb772)
Correction de bugs
- Correction des champs de texte affichant le clavier et étant modifiables lorsque
readOnlyest défini sur "true". Correction également du problème de clavier qui ne s'affichait pas lorsquereadOnlypassait de "true" à "false" pendant la sélection. (I34a19, b/246909589)
Version 1.6.0-alpha02
26 juillet 2023
Publication d'androidx.compose.foundation:foundation-*:1.6.0-alpha02. Liste des commits de la version 1.6.0-alpha02
Modifications apportées à l'API
PagerLayoutInfointroduit avec les informations collectées après un résultat de mesure dansPager. Nous avons également introduitPageInfo, les informations sur une seule page mesurée dansPager. (Iad003, b/283098900)- Annotations supplémentaires pour spécifier les entrées autorisées pour les composables (I51109)
- Ajout de
SemanticsNodeInteraction.requestFocuscomme moyen plus pratique et plus facile à découvrir pour demander la mise au point dans les tests. (Ie8722) - L'API
PlatformTextInput*a été entièrement repensée. (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardControlleretLocalSoftwareKeyboardControllerne sont plus au stade expérimental.LocalSoftwareKeyboardControllerest désormais unCompositionLocalapproprié. (I4c364)Modifier.transformablefournit désormais le delta de panoramique dans le paramètrecanPanpour aider à déterminer la direction du panoramique afin de l'autoriser ou de l'interdire. (I692aa, b/266829800)- Mise à jour du modificateur
consumeWindowInsetspour étendre la superclasseAbstractComposeView(Iacd74, b/269479941)
Version 1.6.0-alpha01
21 juin 2023
Publication d'androidx.compose.foundation:foundation-*:1.6.0-alpha01. Liste des commits de la version 1.6.0-alpha01
Nouvelles fonctionnalités
- Introduction d'une nouvelle API
AnchoredDraggabledans Foundation. Il peut être utilisé pour créer des composants pouvant être déplacés entre des états distincts, comme des feuilles inférieures modales. Cette API remplace l'APISwipeablede Material. (I4a2ed)
Modifications apportées à l'API
- Prise en charge de
InputConnection#requestCursorUpdates(I0c69b) - Introduction de
scrollAnimationSpecpour autoriser les spécifications d'animation personnalisées.BringIntoViewCalculatorremplacé parBringIntoViewScroller. (Idb741) - Ajoutez le type
ResourceResolutionExceptionpour encapsuler les throwables générés lors de la tentative de chargement des éléments bitmap avec une description du chemin d'accès à l'élément qui n'a pas pu être chargé. (I19f44, b/230166331, b/278424788) - Ajout de propriétés et d'actions sémantiques pour prendre en charge la traduction de texte. (I4a6bc)
- Ajout d'une API
BringIntoViewCalculatorpermettant de personnaliser la façon dont les composants tels queScrollablerépondent aux requêtesbringIntoView. Modification de la surcharge de scrollable pour accepter éventuellement une instance deBringIntoViewCalculator. (Iaf5af)
Correction de bugs
- Ajout d'une vérification lint pour vous avertir si vous créez un
MutableInteractionSourcedans la composition sans vous en souvenir, comme pour les vérifications lint pour la création d'un état mutable /Animatable. (I5daae) - Ajout de la prise en charge de la sélection à la souris. La sélection tactile s'étend par mot et se réduit par caractère. (Ic0c6c, b/180639271)
- Ajout de l'interface
FocusTargetModifierNode, qui permet de créer unFocusTargetpersonnalisé. (I9790e)
Version 1.5
Version 1.5.4
18 octobre 2023
Publication d'androidx.compose.foundation:foundation-*:1.5.4. Liste des commits de la version 1.5.4
Version 1.5.3
4 octobre 2023
Publication d'androidx.compose.foundation:foundation-*:1.5.3. Cette version ne comporte aucune modification.
Version 1.5.2
27 septembre 2023
Publication d'androidx.compose.foundation:foundation-*:1.5.2. Liste des commits de la version 1.5.2
Correction de bugs
- Correction d'un bug dans le texte qui entraînait des plantages dans certaines circonstances lorsque la sémantique était invalidée.
Version 1.5.1
6 septembre 2023
Publication d'androidx.compose.foundation:foundation-*:1.5.1. Liste des commits de la version 1.5.1
Correction de bugs
- Correction des champs de texte affichant le clavier et étant modifiables lorsque
readOnlyest défini sur "true". Correction également du problème de clavier qui ne s'affichait pas lorsquereadOnlypassait de "true" à "false" pendant la sélection. (I34a19, b/246909589)
Version 1.5.0
9 août 2023
Publication d'androidx.compose.foundation:foundation-*:1.5.0. Liste des commits de la version 1.5.0
Changements importants depuis la version 1.4.0
- De nombreux modificateurs de base, y compris
Modifier.clickable,Modifier.draggable,Modifier.scrollable, le modificateur de mise en page et plus encore, ont été migrés vers l'APIModifier.Node, ce qui réduit la surcharge sur la composition initiale. - Améliorations apportées à la stabilité des pages. De nombreux bugs ont été corrigés.
- Les paramètres
pageCountse trouvent désormais dansPagerStateau lieu du Pager lui-même.
Version 1.5.0-rc01
26 juillet 2023
Publication d'androidx.compose.foundation:foundation-*:1.5.0-rc01. Liste des commits de la version 1.5.0-rc01
Correction de bugs
Une inspection facultative est disponible pour recommander la migration des appels
mutableStateOf()vers leurs types spécialisés correspondants pour les primitives. Son ID lint estAutoboxingStateCreation. Auparavant, cette inspection était activée par défaut pour tous les projets. Pour afficher cet avertissement dans l'éditeur d'Android Studio et dans les sorties Lint de votre projet, remplacez sa gravité de "informationnel" par "avertissement" (ou une valeur supérieure) en déclarantwarning "AutoboxingStateCreation"dans la configurationbuild.gradleoubuild.gradle.ktsde votre module, comme indiqué (I34f7e) :android { lint { warning "AutoboxingStateCreation" } ... }
Version 1.5.0-beta03
28 juin 2023
Publication d'androidx.compose.foundation:foundation-*:1.5.0-beta03. Liste des commits de la version 1.5.0-beta03
Version 1.5.0-beta02
7 juin 2023
Publication d'androidx.compose.foundation:foundation-*:1.5.0-beta02. Liste des commits de la version 1.5.0-beta02
Version 1.5.0-beta01
24 mai 2023
Publication d'androidx.compose.foundation:foundation-*:1.5.0-beta01. Liste des commits de la version 1.5.0-beta01
Modifications apportées à l'API
- Implémentez
PlatformDataProviderpour fournir la fréquence cardiaque et le nombre de pas quotidiens. L'interfaceSensorGatewayest supprimée de l'API publique. (I55b84)
Correction de bugs
- Réduire les allocations lors des mesures de listes/grilles différées, etc. (Iaf9e2)
- Réduction des allocations lors de l'application d'instantanés (I65c09)
- Suppression des allocations des animations de ressort (Ie9431)
- Suppression de l'allocation de
TextLayout. (I0fd11) - Suppression de plusieurs allocations dans le suivi de la vitesse du pointeur (I26bae)
Version 1.5.0-alpha04
10 mai 2023
Publication d'androidx.compose.foundation:foundation:1.5.0-alpha04 et d'androidx.compose.foundation:foundation-layout:1.5.0-alpha04. Liste des commits de la version 1.5.0-alpha04
Modifications apportées à l'API
- Ajout de
TextStyle.merge(...)optimisé avec la liste complète des paramètres. (Iad234, b/246961787) - Présentez un
SnapLayoutInfoProviderpouvant être utilisé avecLazyGridState. (I92134, b/269237141, b/260914964) - Ajout d'un
Modifier.animateItemPlacement()expérimental pour le champ d'application des éléments de grilles échelonnées différées. Vous pouvez l'appliquer aux éléments pour obtenir les animations de changement de position/réorganisation automatisées. (I4b62d, b/257034719) - Promotion de
GridCells.FixedSizeen version stable.FixedSizedéfinit unLazyGridoù chaque cellule prend une taille exacte sur l'axe transversal, l'espace restant étant réparti par l'arrangement de l'axe transversal. (I8542f) - Ajout de la portée du récepteur
PagerScopepour le pager et d'une fonction utilitaire pour calculer un décalage de page donné. (If2577) - Présentez
snapPositionalThresholdlors de la création d'un comportement de déplacement rapide. Utilisez ce paramètre pour spécifier un seuil de positionnement pour l'accrochage court dans Pager. (If8f7f) SnapLayoutInfoProvider.calculateSnappingOffsetBoundsa été remplacé parcalculateSnappingOffset. Dans cette nouvelle méthode, nous demandons simplement le prochain décalage auquel s'accrocher. Le calcul des limites doit être effectué au niveau de l'implémentation, car il peut varier en fonction de la manière dont l'accrochage doit se produire. (I923a4)- Les API
LazyStaggeredGridsont désormais stables. (I633a5) - Suppression de
pageCountdeHorizontal/VerticalPager. Cette valeur doit être fournie lors de la création de l'état. Mise à jour dePagerStateetrememberPagerStatepour accepterpageCount. (Ieb52d, b/266965072) - Suppression de
pageCountdeHorizontal/VerticalPager. Cette valeur doit être fournie lors de la création de l'état. Mise à jour dePagerStateetrememberPagerStatepour accepterpageCount. (Ifa3cb, b/266965072) - Présentez
shortSnapVelocityThresholddansSnapFlingBehaviorde Pager. (I7379e, b/275579012) - Ajoute un
FlowRowScopeet unFlowColumnScope. (I54fe2)
Correction de bugs
- Les appels pour obtenir la sémantique sur le texte lorsque les contraintes ont
minWidthetminHeightne plantent plus. (Ibd072) - Correction de la régression où le clavier ne s'affichait pas pour les champs de texte à l'intérieur des boîtes de dialogue non créées par le composable
Dialog. (I82551, b/262140644)
Version 1.5.0-alpha03
19 avril 2023
Publication d'androidx.compose.foundation:foundation:1.5.0-alpha03 et d'androidx.compose.foundation:foundation-layout:1.5.0-alpha03. Liste des commits de la version 1.5.0-alpha03
Cette version active la nouvelle pile de rendu de texte pour Compose. La nouvelle pile est optimisée pour les performances. Vous ne devriez donc pas constater de changements visibles.
Si vous constatez des modifications dans le texte affiché, vous pouvez effectuer un débogage en définissant NewTextRendering1_5 = false pour confirmer la différence de comportement. Si vous définissez cette valeur, la recomposition sera forcée. Veuillez signaler toute différence de comportement en tant que bug.
L'indicateur de débogage sera supprimé avant la version 1.5 beta01.(Iada23, b/246960758)
Modifications apportées à l'API
- Rendez
FlowColumn/FlowRowen ligne. (Idab37)
Version 1.5.0-alpha02
5 avril 2023
Publication d'androidx.compose.foundation:foundation:1.5.0-alpha02 et d'androidx.compose.foundation:foundation-layout:1.5.0-alpha02. Liste des commits de la version 1.5.0-alpha02
Modifications apportées à l'API
- Ajout de la compatibilité avec les cellules de taille fixe dans
LazyGridet leur organisation avec l'arrangement de l'axe transversal. (I83ed9, b/235121277, b/267942510) - Ajout de la prise en charge des voies de taille fixe dans
LazyStaggeredGridet de leur organisation avec l'arrangement de l'axe transversal. (I7d519) - Les
UrlAnnotationdans lesAnnotatedStringpeuvent désormais être ouverts via des services d'accessibilité tels queTalkBack. (If4d82, b/253292081) - Ajout de l'action de sémantique
InsertTextAtCursorpour les champs de texte. (I11ed5) - Les actions de test liées au texte (par exemple,
performTextInput) demandent désormais directement à ce que le champ soit sélectionné à l'aide de l'action de sémantique, au lieu de cliquer sur le champ. (I6ed05) - Ajout de la prise en charge de l'espacement/de l'arrangement de l'axe transversal à l'aide de
verticalArrangementdansFlowRowethorizontalArrangementdansFlowColumn. Nous supprimons également lesverticalAlignmentethorizontalAlignmentde premier niveau dansFlowRow/FlowColumn. Les développeurs peuvent utiliserModifier.alignà la place. Cela permet d'éviter toute confusion entre les conventions de dénomination deverticalAlignmentetverticalArrangement. (I87b60, b/268365538)
Version 1.5.0-alpha01
22 mars 2023
Publication d'androidx.compose.foundation:foundation:1.5.0-alpha01 et d'androidx.compose.foundation:foundation-layout:1.5.0-alpha01. Liste des commits de la version 1.5.0-alpha01.
Modifications apportées à l'API
- Le texte et
BasicTextsont refactorisés pour utiliser le nouveau système de modificateurs. Cela permet d'améliorer considérablement les performances dans de nombreux cas. Aucune modification ne devrait être visible. (If1d17, b/246961435) - Ajout de l'action de sémantique
PerformImeActionpermettant d'appeler l'action IME sur les nœuds de l'éditeur de texte. (Ic606f, b/269633506)
Correction de bugs
- Mise à jour des éléments internes de
Modifier.hoverable. Le modificateurhoverablene s'affiche dans l'inspecteur que s'il est activé. (I82103)
Version 1.4
Version 1.4.3
3 mai 2023
Publication d'androidx.compose.foundation:foundation:1.4.3 et d'androidx.compose.foundation:foundation-layout:1.4.3 sans aucune modification (seule la version a été mise à jour).
Version 1.4.2
19 avril 2023
Publication d'androidx.compose.foundation:foundation:1.4.2 et d'androidx.compose.foundation:foundation-layout:1.4.2. Liste des commits de la version 1.4.2.
Version 1.4.1
5 avril 2023
Publication d'androidx.compose.foundation:foundation:1.4.1 et d'androidx.compose.foundation:foundation-layout:1.4.1. Liste des commits de la version 1.4.1
Version 1.4.0
22 mars 2023
Publication d'androidx.compose.foundation:foundation:1.4.0 et d'androidx.compose.foundation:foundation-layout:1.4.0. Liste des commits de la version 1.4.0.
Changements importants depuis la version 1.3.0
- Ajout de l'intégration de la compatibilité avec les emoji dans
TextetTextField, ainsi que dans le paragraphe de niveau inférieur. Activé par défaut lorsque emojicompat est configuré. EmojiCompatpeut être configuré sur un texte spécifique en utilisantPlatformParagraphStyle.- Ajout de la prise en charge complète de l'étendue de la ligne dans
LazyStaggeredGrid(I28252) - Ajout de l'attribut
onHoverexpérimental dansClickableText(I6938f) - Introduction de surcharges expérimentales pour les fonctions
runComposeUiTestetcreate*ComposeRulequi acceptent les paramètresCoroutineContext. Le contexte sera utilisé pour la composition de test, ainsi que pour les appelsLaunchedEffectetrememberCoroutineScope()dans la composition. (I10614, b/265177763) FlowRowetFlowColumnsont désormais disponibles en tant que@ExperimentalFoundationApi, ce qui permet une mise en page plus flexible des composants basée sur des lignes et des colonnes. Si l'espace sur l'axe principal est insuffisant, un saut de ligne est inséré. (I3a7b2)Modifier.basicMarquee()est disponible à titre expérimental et permet d'afficher du contenu avec un effet de rectangle de sélection à défilement. (I2df44, b/139321650)
Version 1.4.0-rc01
8 mars 2023
Publication d'androidx.compose.foundation:foundation:1.4.0-rc01 et d'androidx.compose.foundation:foundation-layout:1.4.0-rc01. Liste des commits de la version 1.4.0-rc01.
Modifications apportées à l'API
- Introduction d'une nouvelle API
PlatformTextInputAdapterde bas niveau pour créer des implémentations personnalisées de saisie de texte qui communiquent directement avec les API de la plate-forme. (I58df4) - Ajout de la prise en charge de la mise en page inversée à
LazyStaggeredGrid. (I3ef4a)
Correction de bugs
- L'action sémantique
SetTextdeBasicTextFieldmettra désormais à jour le tampon de texte en utilisant le même chemin de code que les mises à jour IME et les fonctions de test (par exemple,performTextReplacement). - Les fonctions de test de texte
performTextClearance,performTextReplacementetperformTextSelectionutilisent désormaisSemanticsActions. (I0807d, b/269633168, b/269624358)
Version 1.4.0-beta02
22 février 2023
Publication d'androidx.compose.foundation:foundation:1.4.0-beta02 et d'androidx.compose.foundation:foundation-layout:1.4.0-beta02. Liste des commits de la version 1.4.0-beta02
Modifications apportées à l'API
- Ajout d'un rappel
Modifier.Node.onReset()vous permettant de réinitialiser un état local pour traiter correctement la demande lorsqueLayoutest réutilisé (par exemple, en tant qu'élément deLazyColumn). Correction deFocusTargetModifierNodepour réinitialiser correctement l'état sélectionné. (I65495, b/265201972) - Ajout des paramètres
BlendModeaux méthodesDrawScope.drawText,Paragraph.paintetMultiParagraph.paintpour accepter différents algorithmes de combinaison lors du tracé de texte sur Canvas. (I57508) - Suppression de l'API
modifierElementOf(). Utiliser directementModifierNodeElementà la place. (Ie6d21)
Correction de bugs
- L'ajustement des poignées de sélection ne permet plus de sélectionner un caractère partiel. (Idedd1)
- Résolution du plantage qui avait lieu lorsque l'utilisateur appuyait sur Ctrl+Retour arrière sur un écran
TextFieldvide. (I0427f, b/244185537)
Version 1.4.0-beta01
8 février 2023
Publication d'androidx.compose.foundation:foundation:1.4.0-beta01 et d'androidx.compose.foundation:foundation-layout:1.4.0-beta01. Liste des commits de la version 1.4.0-beta01
Nouvelles fonctionnalités
- Depuis la version 1.3, ajout de l'intégration de la compatibilité avec les emoji dans
TextetTextField, ainsi que dans le paragraphe de niveau inférieur. Activé par défaut lorsque emojicompat est configuré. EmojiCompatpeut être configuré sur un texte spécifique en utilisantPlatformParagraphStyle.
Modifications apportées à l'API
- Ajout d'une implémentation courante de l'API
PinnableContainerutilisée dans tous lesLazyLayoutspour conserver les éléments qui quittent la composition, mais qui doivent rester actifs. (If45a4) - Changement de nom :
PinnableContainer.PinnedHandle.unpin()devientrelease()(I4667a).
Contribution externe
- Ajout de la propriété
mainAxisItemSpacingàLazyListLayoutInfo,LazyGridLayoutInfoetLazyStaggeredGridItemInfo. (I52fad)
Version 1.4.0-alpha05
25 janvier 2023
Publication d'androidx.compose.foundation:foundation:1.4.0-alpha05 et d'androidx.compose.foundation:foundation-layout:1.4.0-alpha05. Liste des commits de la version 1.4.0-alpha05
Nouvelles fonctionnalités
- Ajout de la prise en charge complète de l'étendue de la ligne dans
LazyStaggeredGrid. (I28252) - Ajout de l'attribut
onHoverexpérimental dansClickableText. (I6938f) - Introduction de surcharges expérimentales pour les fonctions
runComposeUiTestetcreate*ComposeRulequi acceptent les paramètresCoroutineContext. Le contexte sera utilisé pour la composition de test, ainsi que pour les appelsLaunchedEffectetrememberCoroutineScope()dans la composition. (I10614, b/265177763)
Modifications apportées à l'API
- Fusionne les API avant/après d'
OverscrollEffectdans les fonctions "décorateur"applyToScrolletapplyToFlingcombinées. Consultez les exemples mis à jour dans la documentation pour découvrir comment implémenter un effet de défilement hors limites avec la nouvelle forme d'API. (I8a9c4, b/255554340) - Plus de types/possibilités de valeurs nulles pour les fonctions intégrées/obsolètes ou masquées. (I24f91)
- Les API
LineBreaketHyphensdeTextStylepassent à la version stable. (Ic1e1d)
Correction de bugs
- Dans les zones de texte, le curseur continue de clignoter même lorsque les animations sont désactivées. (I95e70, b/265177763)
Modifier.basicMarquees'anime désormais même lorsque les animations sont désactivées dans les paramètres système. (I23389, b/262298306, b/265177763)
Contribution externe
- Les méthodes
notifyFocusedRectdansTextInputSessionetTextInputServicene sont plus obsolètes. (I23a04, b/262648050)
Version 1.4.0-alpha04
11 janvier 2023
Publication d'androidx.compose.foundation:foundation:1.4.0-alpha04 et d'androidx.compose.foundation:foundation-layout:1.4.0-alpha04. Liste des commits de la version 1.4.0-alpha04
Nouvelles fonctionnalités
FlowRowetFlowColumnsont désormais disponibles en tant que@ExperimentalFoundationApi, ce qui permet une mise en page plus flexible des composants basée sur des lignes et des colonnes. Si l'espace sur l'axe principal est insuffisant, un saut de ligne est inséré. (I3a7b2)Modifier.basicMarquee()est disponible à titre expérimental et permet d'afficher du contenu avec un effet de rectangle de sélection à défilement. (I2df44, b/139321650)
Modifications apportées à l'API
- Abandon de
FocusRequesterModifier, désormais remplacé parFocusRequesterNode(I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Le constructeur
AndroidFontavecvariationSettingsest maintenant une API stable. Vous pouvez l'utiliser pour créer des types de descripteurs de police. (I5adcc, b/261565807) - Introduction de l'API
PinnableContainerpropagée par des listes différées via une composition locale qui permet d'épingler l'élément actuel. Cela signifie que cet élément ne sera pas supprimé s'il disparaît de la vue suite au défilement. Par exemple,Modifier.focusable()épinglera l'élément sélectionné actuel via ce mécanisme. (Ib8881, b/259274257, b/195049010) - Nous avons réécrit la manière dont les éléments déroulants répondent à
bringIntoViewRequestersainsi que les éléments sélectionnables pour mieux modéliser la complexité de ces opérations et gérer plus de cas particuliers. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114) - Possibilité de valeur nulle de type renvoyé accrue pour les fonctions obsolètes ou masquées. (Ibf7b0)
- Ajout de la propriété expérimentale
TextMotionàTextStylepour définir le texte sur "Static(default)" ou "Animé". UtilisezTextMotion.Animatedsi un ajustement, une translation ou une rotation du texte doivent être effectués par une animation. (I24dd7) - Ajout de
TextFieldFocusModifierpour corriger le comportement de sélection de navigation sur la plate-forme Android (I00303) - Remplacement de l'argument
maxSize: IntSizedansdrawTextparsize: Sizepour l'aligner sur d'autres fonctionsDrawScope.sizeest défini surSize.Unspecifiedpar défaut, ce qui ne devrait pas modifier le comportement par défaut précédent. (Icd27d)
Correction de bugs
- Ajustements de la physique de l'ancrage dans
SnapFlingBehaviourpour un rendu plus naturel.
Problème connu
- Lorsque vous passez de
androidx.compose.foundation:1.4.0-alpha03àandroidx.compose.foundation:1.4.0-alpha04, une erreurjava.lang.NoSuchFieldErrorpeut se produire. Le problème a été initialement signalé ici. Un correctif a été envoyé et sera disponible lors de la prochaine mise à jour de Compose. Pour contourner ce problème, mettez à jour votreandroidx.compose.materialetandroidx.compose.material3vers la dernière version (1.1.0-alpha04) ou revenez à la version 1.4.0-alpha03 deandroidx.compose.foundation.
Version 1.4.0-alpha03
7 décembre 2022
Publication d'androidx.compose.foundation:foundation:1.4.0-alpha03 et d'androidx.compose.foundation:foundation-layout:1.4.0-alpha03. Liste des commits de la version 1.4.0-alpha03
Modifications apportées à l'API
- Dans les tests d'interface utilisateur avec une règle Compose, les continuations réactivées pendant les rappels
withFrameNanosne sont envoyées que lorsque l'exécution de tous les rappels de frame est terminée. Cela correspond au comportement de Compose en fonctionnement normal. Toutefois, les tests qui reposent sur l'ancien comportement peuvent échouer. Cela ne devrait affecter que le code qui appelle directementwithFrameNanosouwithFrameMilliset dont la logique en dehors du rappel est transmise aux fonctions qui peuvent être amenées à être déplacées dans les rappels. Consultez les changements de test d'animation dans cette CL pour voir des exemples. - Ajout d'un paramètre
onPerformTraversals: (Long) -> Unitfacultatif au constructeurTestMonotonicFrameClocket à une fonction de fabrique permettant d'exécuter du code après les rappelswithFrameNanos, mais avant de reprendre les coroutines des appelants. (Idb413, b/254115946, b/222093277, b/255802670) - Ajout d'actions d'accessibilité de la page :
PageUp,PageDown,PageLeftetPageRight. Celles-ci ne sont disponibles qu'à partir de l'API 29. (Ida4ab) - Ajout de
HorizontalPageretVerticalPager, qui permettent d'afficher des composables en mode pagination. Ajout dePagerStatepour contrôler les pagers et demander des informations sur leur état actuel. Ajout dePageSize, un moyen de contrôler la taille d'une page de pagination. Permet de créer une pagination de type carrousel. Ajout dePagerSnapDistance, un moyen de contrôler le fonctionnement de l'ancrage dans le comportement de glissement du pager. (I01120) - Ajout d'une surcharge dans
SnapFlingBehavior.performFlingpour aider à comprendre où le glissement aura lieu. (I569f6) - Suppression d'
OverscrollEffect#isEnabled. Au lieu d'avoir à mémoriser et à définir cet indicateur, n'envoyez pas d'événements à l'effet de défilement hors limites là où vous ne souhaitez pas afficher ce type de défilement (par exemple, siScrollableState#canScrollForward/backwardrenvoient tous les deux la valeur "false"). (I1a4b0, b/255554340, b/255557085) - Ajout de
ScrollableState#canScrollForwardetScrollableState#canScrollBackwardpour demander si unScrollableStatepeut faire défiler l'écran dans les deux sens (qu'il se trouve au minimum ou au maximum de sa plage). La valeur par défaut est "true" pour assurer la rétrocompatibilité avec les implémentations existantes deScrollableState. Les consommateurs peuvent l'utiliser pour montrer à l'utilisateur qu'il reste encore de la place pour faire défiler la page. Cela peut aussi éviter d'avoir à distribuer une valeur delta àScrollableStatesqui n'a pas de place pour faire défiler l'écran dans une direction donnée, afin de réduire les tâches inutiles. (Idf1a0, b/255557085) - Ajout d'une API de modificateur pour interroger les informations de défilement des ancêtres. (I2ba9d, b/203141462)
- Utilisation dans
Clickablepour retarder correctement les interactions liées à une pression du doigt susceptible de devenir un événement de défilement. - Correction de
Clickablesqui ne retardait pas correctement les ondulations en cas d'utilisation dans unScrollable ViewGroup. - Mise à jour des panneaux et des feuilles pour retarder les pressions du doigt lorsque les gestes peuvent devenir des événements de défilement.
- Mise à jour de la dénomination
snapStepSizepour qu'elle corresponde aux autres méthodes dansSnapLayoutInfoProvider. (Ife67c) - Ajout de
EmojiCompatàCompose(Ibf6f9, b/139326806) consumedWindowInsets()a été renomméconsumeWindowInsets(), etwithConsumedWindowInsets()onConsumedWindowInsetsChanged(), et les modificateurs sont désormais publics. (Ie44e1)
Correction de bugs
- Le plantage avec
Modifier.animateItemPlacement()et les grilles différées a été corrigé. Dans certaines conditions, le nombre de nouveaux éléments était inférieur au nombre d'éléments précédents. (I0bcac, b/253195989)
Version 1.4.0-alpha02
9 novembre 2022
Publication d'androidx.compose.foundation:foundation:1.4.0-alpha02 et d'androidx.compose.foundation:foundation-layout:1.4.0-alpha02. Liste des commits de la version 1.4.0-alpha02.
Modifications apportées à l'API
awaitFirstDownetwaitForUpOrCancellationacceptent désormaisPointerEventPasspour plus de flexibilité. (I7579a, b/212091796)- Rétablissement de l'API
beyondBoundCountà partir des API Lazy* (I12197) - Introduction d'un paramètre dans les API Lazy pour permettre la composition et le placement en dehors des éléments de la fenêtre d'affichage (I69e89, b/172029355)
- Ajout du paramètre
minLinesdansBasicTextetBasicTextField. Permet de définir la hauteur minimale de ces composables en nombre de lignes (I24294, b/122476634).
Version 1.4.0-alpha01
24 octobre 2022
Publication d'androidx.compose.foundation:foundation:1.4.0-alpha01 et d'androidx.compose.foundation:foundation-layout:1.4.0-alpha01. Liste des commits de la version 1.4.0-alpha01.
Modifications apportées à l'API
- Une nouvelle méthode,
awaitEachGesture(), a été ajoutée pour les détecteurs de gestes. Son fonctionnement est semblable à celui deforEachGesture(), mais la lecture en boucle des gestes fonctionne entièrement dansAwaitPointerEventScope, de sorte que les événements ne peuvent pas être perdus entre les itérations. forEachGesture()a été abandonné au profit deawaitEachGesture(), car il permet la perte d'événements entre deux gestes. (Iffc3f, b/251260206)- Ajout de
WindowInsets.imeAnimationSource etWindowInsets.imeAnimationTargetpour déterminer la progression de l'animation et déterminer où sera l'IME une fois l'animation terminée. (I356f1, b/217770337)
Version 1.3
Version 1.3.1
9 novembre 2022
Publication d'androidx.compose.foundation:foundation:1.3.1 et d'androidx.compose.foundation:foundation-layout:1.3.1. Liste des commits de la version 1.3.1
Correction de bugs
- Résolution du problème de performances dans
BeyondBoundsLayout. (aosp/2255266) ContentInViewModifierne lit pas les coordonnées de mise en page, sauf s'il est associé. (aosp/2241316)
Version 1.3.0
24 octobre 2022
Publication d'androidx.compose.foundation:foundation:1.3.0 et d'androidx.compose.foundation:foundation-layout:1.3.0. Liste des commits de la version 1.3.0
Changements importants depuis la version 1.2.0
- Des versions expérimentales de
LazyVerticalStaggeredGridetLazyHorizontalStaggeredGridont été introduites. SnapFlingBehavior,rememberSnapFlingBehavioret d'autres API correspondantes ont été ajoutées à titre expérimental.Modifier.clickable,Modifier.toggleableetModifier.selectableaffichent désormais des ondulations si vous appuyez sur le clavier ou le pavé directionnel de votre télécommande.
Version 1.3.0-rc01
5 octobre 2022
Publication d'androidx.compose.foundation:foundation:1.3.0-rc01 et d'androidx.compose.foundation:foundation-layout:1.3.0-rc01. Liste des commits de la version 1.3.0-rc01
Modifications apportées à l'API
- Introduction de
lowVelocityAnimationSpecutilisé lorsque la vitesse de balayage est insuffisante pour la décomposition. (Iaeb27) - Ajout d'une nouvelle API expérimentale pour permettre l'utilisation automatique de tirets dans le texte. (Iaa869)
Version 1.3.0-beta03
21 septembre 2022
Publication d'androidx.compose.foundation:foundation:1.3.0-beta03 et d'androidx.compose.foundation:foundation-layout:1.3.0-beta03. Liste des commits de la version 1.3.0-beta03
Modifications apportées à l'API
- Ajout d'options permettant de personnaliser les sauts de ligne dans le texte. (I86907)
- Les objets
BringIntoViewResponderpeuvent désormais obtenir les limites les plus récentes d'une requête lors de son traitement. (If86a5, b/241591211) - Ajout de la prise en charge des espaces entre les éléments dans la fonction
Staggered Gridexpérimentale. (I10b82) - Ajout d'une marge intérieure dans la fonction
Staggered Gridexpérimentale. (I342ea) - Remplacement de l'argument
size:IntSizeparconstraints: Constraintsdans la méthodeTextMeasurer.measurepour prendre en charge les contraintes de largeur minimale. (I37530, b/242707525) - Ajout de
Modifier.withConsumedWindowInsets()pour pouvoir utiliserWindowInsetsen dehors dewindowInsetsPadding. - Ajout de
MutableWindowInsetspour permettre de modifier facilementWindowInsetssans recomposition. (I7fd28, b/237019262, b/243119659)
Version 1.3.0-beta02
7 septembre 2022
Publication d'androidx.compose.foundation:foundation:1.3.0-beta02 et androidx.compose.foundation:foundation-layout:1.3.0-beta02. Liste des commits de la version 1.3.0-beta02
Modifications apportées à l'API
- Version initiale du
StaggeredGridexpérimental. (Ia48be) - Changement de nom :
FocusDirection.InetFocusDirection.OutdeviennentFocusDirection.EnteretFocusDirection.Exit. (Ia4262, b/183746982) - Introduction d'une surcharge
rememberSnapFlingBehaviorqui permet d'activer rapidement l'ancrage dansLazyLists. (Ifb48a) - Remplacement de la fabrique
snapFlingBehaviorpar une classeSnapFlingBehaviorconcrète. Définition du champ d'application des méthodesSnapLayoutInfoProvidersur la densité pour faciliter les conversions Dp<->Px pour les utilisateurs de l'API. (I54a11) - Mise à jour de
LazyLayoutMeasureScope.measureafin de renvoyer la liste des éléments positionnables, ce qui permet de mettre en évidence l'immuabilité souhaitée de la valeur renvoyée. (I48b7c) - Introduction de
SnapLayoutInfoProvider, qui accepte unLazyListStatepour créer une instance deSnapLayoutInfoProviderpermettant d'activer un ancrageFlingBehaviorpourLazyLists. (I2dd10)
Correction de bugs
- Refactorisation de
AwaitPointerEventScope#awaitLongPressOrCancellationpour qu'il corresponde aux autres fonctions d'attente. (I646e6)
Version 1.3.0-beta01
24 août 2022
Publication d'androidx.compose.foundation:foundation:1.3.0-beta01 et d'androidx.compose.foundation:foundation-layout:1.3.0-beta01. Liste des commits de la version 1.3.0-beta01
Modifications apportées à l'API
- Suppression de
pointerPositiondeOverscrollEffect. Les effets qui dépendent de la position du pointeur peuvent utiliserModifier.pointerInput { }danseffectModifierpour obtenir la position actuelle du pointeur. (I9f606, b/241239306) - Exposition de
AwaitPointerEventScope#awaitLongPressOrCancellationcomme composant supplémentaire pour la détection des gestes plus complexes. (I04374, b/181577176) - Introduction de
lazyListSnapLayoutInfoProviderpour permettre l'ancrage dans les listes différées. (I3ecdf) - Introduction de
SnapFlingBehavior, un comportement de glissement d'un geste vif qui permet d'ancrer une liste. Fournissez une instance deSnapLayoutInfoProvideravec des informations sur la mise en page de l'ancrage. (Ie754c)
Version 1.3.0-alpha03
10 août 2022
Publication d'androidx.compose.foundation:foundation:1.3.0-alpha03 et d'androidx.compose.foundation:foundation-layout:1.3.0-alpha03. Liste des commits de la version 1.3.0-alpha03
Modifications apportées à l'API
- Prise en charge de la définition de paramètres de variation de police pour les polices de ressources (niveaux d'API 26 et supérieurs). (I900dd, b/143703328)
- Prise en charge des polices variables dans
DeviceFontFamilyNameFont. (Ic1279, b/143703328) - Suppression de l'annotation expérimentale pour
PlatformTextStyleetLineHeightStyle. (I64bef) - Les champs de texte génèrent désormais des exceptions plus détaillées lorsque le
OffsetMappingfourni par unVisualTransformationrenvoie des index non valides. (Ie73f9, b/229378536) - Introduction d'API expérimentales pour partager la logique du fournisseur d'éléments entre les mises en page différées (Lazy). (Ic891c)
ScrollableDefaults.reverseDirection()n'est plus au stade expérimental. (Iba646)- Abandon de
SemanticsModifier.id. L'ID de la sémantique a donc été déplacé versLayoutInfo.semanticsId. (Iac808, b/203559524) checkScrollableContainerConstraints()n'est plus au stade expérimental. (I2c290)Modifier.clipScrollableContainer()n'est plus au stade expérimental. (Ia2b44)- Abandon de
TextInputService.show|hideSoftwareKeyboard. UtilisezSoftwareKeyboardControllerà la place dans le code de l'application etTextInputSessiondans le code de gestion IME. (I14e4c, b/183448615)
Version 1.3.0-alpha02
27 juillet 2022
Publication d'androidx.compose.foundation:foundation:1.3.0-alpha02 et d'androidx.compose.foundation:foundation-layout:1.3.0-alpha02. Liste des commits de la version 1.3.0-alpha02
Modifications apportées à l'API
- Ajout de la fonction d'extension
drawTextsurDrawScopepour permettre d'afficher du texte multistyle sur les composables et les modificateurs fonctionnant sur un élémentDrawScopetel queCanvasoudrawBehind. (I16a62, b/190787898)
Correction de bugs
- Le clavier virtuel est désormais masqué lorsqu'un champ de texte désactivé est sélectionné. (I6e3e4, b/237308379)
- Correction d'un problème de calcul de la vitesse. Lors de l'ajout d'événements
InputEventChangeà l'outil de suivi Velocity Tracker, les deltas sont désormais considérés plutôt que les positions, ce qui permet de calculer la vitesse même lorsque l'élément cible se déplace. (Icea9d, b/216582726, b/223440806, b/227709803) - Lorsqu'un enfant d'un élément à défilement est sélectionné, il reste sélectionné dans la vue lorsque sa taille est réduite, même si cette taille est animée. (I80867, b/230756508, b/220119990)
- Correction d'un plantage où
TextFieldétait effacé, puis renseigné à nouveau alors que la sélection était active. (I1235b, b/208655565, b/214253689)
Version 1.3.0-alpha01
29 juin 2022
Publication d'androidx.compose.foundation:foundation:1.3.0-alpha01 et d'androidx.compose.foundation:foundation-layout:1.3.0-alpha01. Liste des commits de la version 1.3.0-alpha01
Modifications apportées à l'API
- Introduction du type d'annotation
UrlAnnotationet des méthodes associées pour permettre la compatibilité avec les liensTalkBackdans lesAnnotatedString. (I1c754, b/231495122)
Correction de bugs
BasicTextFieldcursorBrushpeut maintenant être animé sans redémarrer le minuteur du curseur. (I812e6, b/236383522)
Version 1.2
Version 1.2.1
10 août 2022
Publication d'androidx.compose.foundation:foundation:1.2.1 et androidx.compose.foundation:foundation-layout:1.2.1. Liste des commits de la version 1.2.1
Version 1.2.0
27 juillet 2022
Publication d'androidx.compose.foundation:foundation:1.2.0 et d'androidx.compose.foundation:foundation-layout:1.2.0. Liste des commits de la version 1.2.0
Changements importants depuis la version 1.1.0
LazyVerticalGridetLazyHorizontalGridsont stables.- Vous pouvez désormais spécifier un type de contenu pour les éléments des listes et des grilles différées. Les composants pourront ainsi réutiliser les éléments plus efficacement.
- Les listes et grilles différées comportent désormais un paramètre
userScrollEnabledqui permet de désactiver le défilement via les gestes de l'utilisateur. - Une API expérimentale appelée
LazyLayouta été ajoutée. C'est l'API que nous utilisons en interne pour gérer les listes et les grilles différées. - L'API
OverscrollEffecta été introduite comme version expérimentale. Vous pouvez définir des défilements hors limites personnalisés et ajouter une plate-forme standard à des conteneurs à défilement personnalisés. - Des API d'interopérabilité du défilement imbriqué ont été introduites pour permettre l'interopérabilité entre les vues et les composants à défilement Compose.
- Le défilement à l'aide de la souris et du pavé tactile a été ajouté à tous les conteneurs à défilement.
Version 1.2.0-rc03
29 juin 2022
Publication d'androidx.compose.foundation:foundation:1.2.0-rc03 et d'androidx.compose.foundation:foundation-layout:1.2.0-rc03. Liste des commits de la version 1.2.0-rc03
- Aucune modification depuis la version 1.2.0-rc02
Version 1.2.0-rc02
22 juin 2022
Publication d'androidx.compose.foundation:foundation:1.2.0-rc02 et d'androidx.compose.foundation:foundation-layout:1.2.0-rc02. Liste des commits de la version 1.2.0-rc02
Version 1.2.0-rc01
15 juin 2022
Publication d'androidx.compose.foundation:foundation:1.2.0-rc01 et d'androidx.compose.foundation:foundation-layout:1.2.0-rc01. Liste des commits de la version 1.2.0-rc01.
Modifications apportées à l'API
- Introduction d'un
OverscrollEffectexpérimental permettant de générer des effets de défilement hors limites personnalisés, ainsi que des surchargesModifier.scrollablequi l'acceptent. - Changement de nom et déplacement de la propriété expérimentale
LocalOverScrollConfiguration, renomméeLocalOverscrollConfigurationet déplacée defoundation.gesturevers le package Foundation. (If19fb, b/204650733) - Mise à jour des interfaces dans les bibliothèques Compose, désormais créées à l'aide des méthodes d'interface jdk8 par défaut. (I5bcf1)
- Introduction d'une API expérimentale
checkScrollableContainerConstraints()qui permet de vérifier que des conteneurs à défilement ne sont pas imbriqués. Vous pouvez l'utiliser lorsque vous créez vos propres mises en page différées à défilement avecLazyLayout. (Id6fab, b/233352497) - Suppression du composable obsolète
LazyVerticalGriddu packageandroidx.compose.foundation.lazy. La nouvelle API stable se trouve dansandroidx.compose.foundation.lazy.grid. (I73c76, b/225192009)
Version 1.2.0-beta03
1er juin 2022
Publication d'androidx.compose.foundation:foundation:1.2.0-beta03 et d'androidx.compose.foundation:foundation-layout:1.2.0-beta03. Liste des commits de la version 1.2.0-beta03
Modifications apportées à l'API
- Ajout des classes expérimentales
IntervalListetMutableIntervalList. afin de pouvoir représenter une liste de valeurs sur plusieurs intervalles. Cela vous sera utile pour définir votre propre DSL de la même manière que celui utilisé parLazyColumn, où les éléments de la liste peuvent être définis via plusieurs appels item/items. (I2d05e, b/228580728)
Correction de bugs
- Clarification de la documentation de
WindowInsets.imepour indiquer que les encartsimesont signalés jusqu'à l'API 23, mais animés seulement à partir de la version 30. (Ia7fc0, b/230756508) - Correction d'un plantage qui survenait lorsque la touche Supprimer était activée alors que le curseur se trouvait à la fin d'un champ de texte.
- Mise à jour de
DeleteSurroundingTextCommandetDeleteSurroundingTextInCodePointsCommand, qui exigent désormais des arguments de constructeur non négatifs. (Ica8e6, b/199919707)
Version 1.2.0-beta02
18 mai 2022
Publication d'androidx.compose.foundation:foundation:1.2.0-beta02 et androidx.compose.foundation:foundation-layout:1.2.0-beta02. Liste des commits de la version 1.2.0-beta02
- Correction d'un bug empêchant le réaffichage d'une résolution de police téléchargeable qui ne modifiait pas la taille de la mise en page de Text ou de
TextField, ce qui entraînait l'affichage d'une police obsolète. Cette correction permet de s'assurer que la mise en page de Text entraîne toujours un réaffichage. (I1d49e, b/229727404)
Version 1.2.0-beta01
11 mai 2022
Publication d'androidx.compose.foundation:foundation:1.2.0-beta01 et d'androidx.compose.foundation:foundation-layout:1.2.0-beta01. Liste des commits de la version 1.2.0-beta01
Nouvelles fonctionnalités
- Première publication bêta de la version 1.2.
Modifications apportées à l'API
- Ajout d'un
BeyondBoundsIntervalexpérimental utilisable par les implémentations personnalisées deLazyListlorsqu'elles mettent en page des éléments au-delà des limites visibles. (Ifabfb, b/184670295) - Changement de nom :
LineHeightBehaviordevientLineHeightStyle. - Changement de nom :
LineVerticalAlignmentdevientLineHeightStyle.Alignment. - Changement de nom :
LineHeightTrimdevientLineHeightStyle.Trim. - Suppression des valeurs de constructeur par défaut de
LineHeightStyle. (I582bf, b/181155707) - Ajout de valeurs par défaut pour les membres facultatifs de l'interface
LazyLayoutItemProvider. (Iba8a0) - Dans l'API
LazyLayoutItemProvider, remplacement d'une fabrique qui renvoie le lambda composable par index par un élément de fonction modulable plus simple acceptant désormais l'index. (Id2196) - Changement de nom : LazyLayoutItemsProvider devient LazyLayoutItemProvider. (I0638c)
- Changement de nom :
LazyLayoutItemsProvider.itemsCountdevientitemCount. (Id409c) - Ajout d'un pinceau à
TextStyleet àSpanStylepour permettre l'affichage de texte avec un dégradé de couleurs. (I53869, b/187839528) - Remplacement des attributs
trimFirstLineTopettrimLastLineBottomdeLineHeightBehaviorpar une seule énumération :LineHeightTrim.LineHeightTrimpeut prendre quatre valeurs d'état (FirstLineTop,LastLineBottom, Both et None), définies par deux booléens. (Ifc6a5, b/181155707) Ajout de
LineHeightBehavioràTextStyleet àParagraphStyle. LineHeightBehaviorpour contrôle si la hauteur de ligne est appliquée au-dessus de la première ligne ou au-dessous de la dernière ligne. Cet élément définit également l'alignement de la ligne dans l'espace fourni parTextStyle(lineHeight).Par exemple, il est possible d'obtenir un comportement semblable à celui défini par le langage CSS via
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false).Les configurations
trimFirstLineTopettrimLastLineBottomne fonctionnent correctement que siincludeFontPaddingest défini sur "false". (I97332, b/181155707)Ajout du modificateur expérimental
imeNestedScroll()pour permettre aux développeurs de contrôler l'IME via le défilement. (I60759)
Correction de bugs
- Correction de la régression où les champs de texte ne masquaient pas le clavier lorsqu'ils étaient sélectionnés et supprimés de la composition. (I7a410, b/230536793, b/225541817)
- Prise en charge des points de suspension lorsque la hauteur est limitée et qu'elle ne convient pas à toutes les lignes de texte. (Ie528c, b/168720622)
- Mise à jour de
BringIntoViewRequester.bringIntoViewde sorte qu'il soit toujours suspendu jusqu'à ce que la requête soit terminée ou qu'elle ait été interrompue par une requête plus récente qui ne se chevauche pas. Les requêtes qui se chevauchent sont mises en file d'attente. (I43e7f, b/216790855) - Mise à jour des appels
BringIntoViewRequester.bringIntoViewsimultanés pour les rectangles qui se chevauchent entièrement de sorte qu'ils ne répondent qu'à la requête du plus grand rectangle. (I34be7, b/216790855, b/184760918) - Mise à jour de
includeFontPadding, désormais activé par défaut. Il est possible de désactiverincludeFontPaddingà l'aide de l'attributTextStyle.platformTextStyle. Nous prévoyons de modifier le comportement par défaut dans un avenir proche. En attendant, cette approche nous permet de mieux intégrer les améliorations apportées à la hauteur de ligne (aosp/2058653) et de résoudre les problèmes de rognage deTextField. (I01423, b/171394808) - Mise à jour de
Modifier.bringIntoViewRequester, qui n'utilise plusonGloballyPositioneddésormais. (I630f5)
Contribution externe
- Mise à jour de
MouseInjectionScope.scroll(delta = someDelta), désormais inversé sur Android lors du défilement vertical (si someDelta est positif, le défilement se fera vers le bas). (Ifb697, b/224992993)
Version 1.2.0-alpha08
20 avril 2022
Publication d'androidx.compose.foundation:foundation:1.2.0-alpha08 et d'androidx.compose.foundation:foundation-layout:1.2.0-alpha08. Liste des commits de la version 1.2.0-alpha08
Modifications apportées à l'API
- Prise en charge de toutes les épaisseurs de police système disponibles sur Android lors de l'utilisation de
FontFamily.SansSerif. Des noms de police de remplacement tels que sans-serif-medium seront utilisés en interne sur les niveaux d'API 21 à 28. Il s'agit d'un changement de comportement, car seules les épaisseurs 400 et 700 étaient acceptées sur ces niveaux d'API. (I380fe, b/156048036, b/226441992) - Mise à jour de Paragraph et MultiParagraph, qui acceptent désormais le paramètre Constraints. La transmission de
Constraints.maxHeightest une opération no-op pour le moment, mais elle permettra d'effectuer des calculs à l'avenir, comme tronquer un texte avec des points de suspension en fonction de la hauteur. (I6afee, b/168720622) - Mise à jour de
SubcomposeSlotReusePolicy.getSlotsToRetain(), qui accepte désormais une classe personnalisée de type MutableSet n'autorisant pas l'ajout de nouveaux éléments. (Icd314) - Abandon de la consommation partielle (position OR vers le bas) dans
PointerInputChange. Vous pouvez utiliserconsume()pour consommer complètement le changement. Vous pouvez utiliserisConsumedpour déterminer si le changement a déjà été consommé par un tiers. - Mise à jour de
PointerInputChange::copy(), qui crée désormais toujours une copie superficielle. Autrement dit, les copies dePointerInputChangeseront consommées une fois que l'une des copies aura été consommée. Si vous souhaitez créer unPointerInputChangenon associé, utilisez plutôt le constructeur. (Ie6be4, b/225669674) - Introduction d'une nouvelle API expérimentale
LazyLayout. Cette API vous permet de créer vos propres composants comme l'élémentLazyColumndeLazyVerticalGrid. Elle est disponible depuis peu et pourra être modifiée dans les prochaines versions. (Iba2bc, b/166591700) - Mise à jour de
AndroidFont, qui accepte désormaistypefaceLoadercomme paramètre de constructeur. (I2c971) - Mise à jour des
WindowInsetscompagnons, qui exposent désormais la visibilité (qu'ils soient ou non à l'écran, qu'ils se chevauchent ou non avec la fenêtre) et la taille qu'ils pourraient avoir s'ils étaient disponibles sur l'appareil, mais pas actifs. (I65182, b/217770337)
Version 1.2.0-alpha07
6 avril 2022
Publication d'androidx.compose.foundation:foundation:1.2.0-alpha07 et d'androidx.compose.foundation:foundation-layout:1.2.0-alpha07. Liste des commits de la version 1.2.0-alpha07
Modifications apportées à l'API
- Ajout d'une API
PinnableParentpermettant aux enfants des mises en page différées d'empêcher la suppression des éléments actuellement composés. (Ibbdd0, b/184670295) - Mise à jour de
LazyListLayoutInfoetLazyGridLayoutInfo, qui comportent désormais des champsbeforeContentPaddingetafterContentPadding. (I3b628, b/200920410) - Ajout de
KeyboardType.Decimalcomme alternative àKeyboard.Numberpour inclure spécifiquement le séparateur décimal dans l'IME. (Iec4c8, b/209835363) - Ajout d'un descripteur de police Font(DeviceFontFamilyName) afin de rechercher si besoin les polices installées par le système pour les chaînes de remplacement de police. (I30468, b/219754572)
- Reclassement de
PointerEventType.ScrolletPointerEvent.scrollDeltacomme API stables. (I574c5, b/225669674) - Ajout d'une configuration de compatibilité pour
includeFontPaddingdansTextStyle/ParagraphStyle. includeFontPadding, modifiable viaTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). Cette option de configuration est temporaire. Elle a été ajoutée pour la migration et sera supprimée par la suite. (If47be, b/171394808) - Mise à jour de
FontFamily.Resolverpour intégrer le paramètre d'accessibilité Texte en gras à l'échelle du système. (I6c1e7) - Mise à jour de la propriété d'extension
consumeWindowInsetsdeComposeView, qui permet désormais aux développeurs de désactiver la consommation des WindowInsets Android. ChaqueComposeViewsdans la hiérarchie peut ainsi appliquer desWindowInsetssans interférer avec les autres. (I0ef08, b/220943142)
Version 1.2.0-alpha06
23 mars 2022
Publication d'androidx.compose.foundation:foundation:1.2.0-alpha06 et d'androidx.compose.foundation:foundation-layout:1.2.0-alpha06. Liste des commits de la version 1.2.0-alpha06
Modifications apportées à l'API
- Ajout de l'action de sémantique
RequestFocuspermettant de positionner le curseur sur la cible sélectionnable. (I17b71) - Fusion de
FocusOrderavecFocusProperties.focusProperties()présente désormais toutes les fonctionnalités defocusOrder(). Abandon deFocusOrderetfocusOrder(). La méthodefocusOrder()qui accepte unfocusRequesterdoit être remplacée par un modificateurfocusRequester()associé àfocusProperties(). Cela permet aux modificateurs de mieux séparer les préoccupations. (I601b7) - Ajout de
WindowInsets.asPaddingValues(Density)pour que les développeurs puissent effectuer la conversion en dehors de la composition. (I94c35) - Mise à jour de l'analyse des drawables vectoriels pour permettre la mise en miroir automatique afin de d'inverser le contenu d'un
VectorPaintersi la mise en page actuelle se lit de droite à gauche. (I79cd9, b/185760237)
Correction de bugs
- Correction des modificateurs de défilement (
Modifier.verticalScroll(),Modifier.horizontalScroll()etModifier.scrollable()). Désormais, le composable sélectionné reste visible si la zone à défilement est redimensionnée et s'il était déjà visible. - Correction des champs de texte, qui restent désormais au-dessus du clavier lorsqu'ils sont sélectionnés et que le clavier s'affiche avec le mode de saisie
ADJUST_RESIZEdans un composant à défilement non différé. (I4a485, b/190539358, b/192043120, b/216842427)
Version 1.2.0-alpha05
9 mars 2022
Publication d'androidx.compose.foundation:foundation:1.2.0-alpha05 et d'androidx.compose.foundation:foundation-layout:1.2.0-alpha05. Liste des commits de la version 1.2.0-alpha05
Modifications apportées à l'API
- Mise à jour de
LazyVerticalGridetLazyHorizontalGrid, désormais considérés comme stables. (I307c0) - Remplacement de
LazyGridItemInfo.Unknownpar deux éléments distincts :LazyGridItemInfo.UnknownRowetLazyGridItemInfo.UnknownColumn. (I56d51) - Mise à jour de
LazyVerticalGrid/LazyHorizontalGridet des API associées, désormais déplacés dans le sous-package.grid. Remplacez vos importations deandroidx.compose.foundation.lazyparandroidx.compose.foundation.lazy.grid. (I2d446, b/219942574) - Texte : mise à jour de
includeFontPadding, désormais désactivé par défaut. Correction des problèmes de rognage causés parincludeFontPadding=false. Les scripts de grande taille ne devraient plus être rognés. (I31c84, b/171394808) - Mise à jour de l'interface mesurée afin d'exposer la propriété parentData. (I3313f)
- Introduction d'un
Modifier.onFocusedBoundsChangedexpérimental afin d'observer les limites des enfants sélectionnables. (I14283, b/220030968, b/190539358, b/192043120, b/216842427) - Ajout de LazyHorizontalGrid. (I61ae7, b/191238807)
- Ajout d'une API
LazyVerticalGridpermettant de définir les tailles de l'axe transversal. (I17723) - Ajout du modificateur FocusGroup. (I64bc0, b/213508274, b/184670295)
Correction de bugs
- Correction de
WindowInsets.toString(), qui affiche désormais les bonnes valeurs. (I1585d)
Contribution externe
- Mise à jour permettant d'utiliser les coroutines Kotlinx 1.6.0. (I3366d)
Version 1.2.0-alpha04
23 février 2022
Publication d'androidx.compose.foundation:foundation:1.2.0-alpha04 et d'androidx.compose.foundation:foundation-layout:1.2.0-alpha04. Liste des commits de la version 1.2.0-alpha04
Modifications apportées à l'API
- Mise à jour des
BringIntoViewResponders, qui ne sont plus obligatoires pour transmettre manuellement des requêtes aux répondeurs parents. Désormais, ils sont requis pour renvoyer immédiatement le rectangle qui doit être affiché par leur parent. (I8e66a) - Prise en charge du chargement asynchrone des polices dans Text. (I77057, b/214587005)
- Mise à jour de
LazyVerticalGrid, qui accepte désormaisline breakingavant les éléments qui ne tiennent pas sur la ligne actuelle. (I05c40, b/207462103) - Changement de nom :
excludeFromSystemGesturesdevientsystemGesturesExclusion. (I19526) - Mise à jour de
LazyVerticalGrid, qui accepte désormais reverseLayout. (I6d7d7, b/215572963, b/211753558) - Ajout d'une méthode
WindowInsets.only()permettant aux développeurs d'inclure uniquement des dimensions depuis les WindowInsets. (I14c94, b/217768486) Ajout de
ComposableTarget,ComposableTargetMarkeretComposableOpenTargetpour signaler au moment de la compilation qu'une fonction modulable s'applique au mauvais applicateur.La plupart du temps, les annotations peuvent être déduites du plug-in de compilation Compose. Elles sont donc rarement utilisées directement. Il est impossible de déduire les annotations dans les cas suivants : lors de la création et de l'utilisation d'un applicateur personnalisé, de fonctions modulables abstraites (telles que les méthodes d'interface), de champs ou de variables globales qui sont des lambdas modulables (les variables locales et les paramètres sont déduits), ou lorsque vous utilisez
ComposeNodeou une fonction modulable associée.Pour les applicateurs personnalisés, les fonctions modulables qui appellent
ComposeNodeouReusableComposeNodedoivent ajouter une annotationCompoableTargetpour la fonction et un type de paramètre lambda de composable. Il est toutefois recommandé de créer une annotation marquée avecComposableTargetMarker, puis d'utiliser l'annotation marquée plutôt que d'utiliser directementComposableTarget. Une annotation composable marquée avecComposableTargetMarkeréquivaut à unComposbleTargetavec le nom complet de la classe d'attribut en tant que paramètre d'applicateur. Pour obtenir un exemple d'utilisation deComposableTargetMarker, reportez-vous àanroidx.compose.ui.UiComposable. (I38f11)
Correction de bugs
- Correction d'un bug empêchant de transmettre des décalages de défilement négatifs dans
LazyGridState.scrollToItem()etLazyGridState.animateScrollToItem(). (I025c6, b/211753558) - Prise en charge du chargement asynchrone des polices pour TextField. (Icc4bf, b/214587005)
Version 1.2.0-alpha03
9 février 2022
Publication d'androidx.compose.foundation:foundation:1.2.0-alpha03 et d'androidx.compose.foundation:foundation-layout:1.2.0-alpha03. Liste des commits de la version 1.2.0-alpha03
Modifications apportées à l'API
- Abandon des méthodes
notifyFocusedRectdansTextInputSessionetTextInputService. Ces méthodes ne seront pas appelées. UtilisezBringIntoViewRequesterà la place. (Ia4302, b/192043120, b/216842427, b/178211874) - Mise à jour des animations, désormais activées pour les éléments des grilles différées avec Modifier.animateItemPlacement(). (Ib6621, b/211753218)
- Mise à jour de
BringIntoViewRequester, qui propage désormais les requêtes dans la vue Android hôte. (Ia7a51) - Mise à disposition de
FontFamilyResolverviaLocalFontFamilyResolver.current.- Ajout de
createFontFamilyResolver(context)etcreateFontFamilyResolver(context, coroutineScope)afin de créer des résolveurs FontFamily en dehors de Compose. - Mise à jour de Paragraph et MultiParagraph, qui acceptent désormais
FontFamily.Resolver. - Mise à jour de
TextLayoutResult.layoutInput.fontFamilyResolver, qui contient désormais le résolveur utilisé pour cette mise en page.TextLayoutResult.layoutInput.resourceLoadera été abandonné, car il n'est plus utilisé. (Id5a45, b/174162090)
- Ajout de
- Ajout de
AndroidFont, une nouvelle API de bas niveau permettant de fournir de nouveaux types de descripteurs de ressources de police sur Android. Par exemple, vous pouvez charger des polices à partir d'un backend propre à l'application, localiser éventuellement les polices préinstallées sur l'appareil ou charger une police à partir d'une ressource non fournie par les fabriques Font actuelles.- Développement de l'API
Font.ResourceLoaded, pour permettre le chargement de police asynchrone et facultatif. Il est déconseillé aux développeurs d'applications d'utiliser directement cette API. Pour ajouter des types de polices, reportez-vous à AndroidFont. - Prise en charge de la construction d'un
Font.ResourceLoaderen dehors de la composition via la fonction d'extensionFont.AndroidResourceLoader. - Ajout du paramètre
loadingStrategyaux polices basées sur les ressources, afin de permettre un chargement asynchrone lorsque la police de la ressource fait référence à un fichier XML de polices téléchargeables. (Ie5aea, b/174162090)
- Développement de l'API
- Abandon du constructeur
Typeface(FontFamily). Il était utilisé pour précharger les polices, ce qui pouvait prendre jusqu'à 10 secondes pour les polices téléchargeables. Avec les polices téléchargeables, cet appel peut être bloqué pendant 10 secondes. Utilisez plutôtFontFamilyResolver.preload.- Abandon de
fontResource(FontFamily): Typeface. Il était utilisé pour précharger les polices, ce qui pouvait prendre jusqu'à 10 secondes pour les polices téléchargeables. Utilisez plutôtFontFamilyResolver.preload. (If8e7c, b/174162090)
- Abandon de
- Mise à jour permettant de spécifier le type de contenu des éléments de
LazyVerticalGrid. Les fonctions item/items surLazyGridScopeacceptent désormais ce paramètre. En fournissant ces informations, vous permettez que la composition d'éléments réutilise la logique pour plus d'efficacité et vous ne réutilisez que le contenu entre les éléments de type similaire. (I7b355, b/215372836) - Ajout de propriétés à
LazyListLayoutInfoetLazyGridLayoutInfo:viewportSize,orientationetreverseLayout. (Ifc8ed, b/200920410) - Mise à jour permettant de spécifier le type de contenu des éléments de LazyColumn/LazyRow. Les fonctions item/items sur LazyListScope acceptent désormais ce paramètre. En fournissant ces informations, vous permettez que la composition d'éléments réutilise la logique pour plus d'efficacité et vous ne réutilisez que le contenu entre les éléments de type similaire. (I26506)
- Abandon du constructeur
SubcomposeLayoutState, qui acceptaitmaxSlotsToRetainForReuse. Il est remplacé par un nouveau constructeur, qui accepteSubcomposeSlotReusePolicy, une nouvelle interface permettant un contrôle plus précis des emplacements à conserver pour une réutilisation ultérieure. (I52c4d) - Ajout de modificateurs de marge intérieure et de dimensionnement pour les WindowSets. Cela permet d'étendre une partie du contenu dans la zone d'encart, tout en maintenant le contenu principal en dehors de cette zone. Par exemple, windowInsetsPadding peut servir à créer une marge intérieure dans la zone de contenu pour éviter que des zones soient entièrement ou partiellement couvertes. (Id0395, b/213942085)
Correction de bugs
- Correction des champs de texte, qui restent désormais au-dessus du clavier lorsqu'ils sont sélectionnés et que le clavier s'affiche avec le mode de saisie
ADJUST_PAN. (I8eaeb, b/190539358, b/192043120) - L'expérience pour ordinateur utilise la composition locale pour
FontFamily.Resolver.- Abandon de
FontLoaderpour ordinateur. - Nouvelle fabrique
createFontFamilyResolversur ordinateur. (I6bbbb, b/174162090)
- Abandon de
- Correction du problème de clignotement du type de saisie au clavier virtuel, qui survenait lorsque l'utilisateur passait d'un champ de texte à un autre. (I1bf50, b/187746439)
- Correction permettant d'éviter d'avoir à utiliser une seconde fois la touche Retour sur les champs de texte lorsque la poignée du curseur s'affiche. (Ideb4b, b/205726883)
- Amélioration de l'agrandissement de la sélection du texte pour l'aligner sur le comportement d'agrandissement de la plate-forme. (Idd918, b/206833278)
Version 1.2.0-alpha02
26 janvier 2022
Publication d'androidx.compose.foundation:foundation:1.2.0-alpha02 et androidx.compose.foundation:foundation-layout:1.2.0-alpha02. Liste des commits de la version 1.2.0-alpha02
Modifications apportées à l'API
- Ajout de
NonRestartableComposableaux méthodes correspondant à des surcharges de méthodes existantes sans logique complexe. Cela réduit le nombre de vérifications (d'égalité) de la mémorisation générées par le compilateur pour tous les paramètres répétés dans la fonction interne appelée. (I90490) - Ajout de modificateurs
excludeFromSystemGesturepour faciliter l'accès auxsetSystemGestureExclusionRectsd'Android. (I46f07)
Correction de bugs
- Amélioration de l'agrandissement de la sélection du texte pour l'aligner sur le comportement d'agrandissement de la plate-forme. (Idd918, b/206833278)
- Correction de
LazyColumn,LazyRow,Modifier.verticalScrollet d'autres conteneurs utilisantModifier.scrollable, qui acceptent désormais le défilement avec la molette de la souris. (I2b5e1, b/198214718)
Version 1.2.0-alpha01
12 janvier 2022
Publication d'androidx.compose.foundation:foundation:1.2.0-alpha01 et d'androidx.compose.foundation:foundation-layout:1.2.0-alpha01. Liste des commits de la version 1.2.0-alpha01
Modifications apportées à l'API
- Ajout du paramètre
userScrollEnabledàLazyColumn,LazyRowetLazyVerticalGridpour permettre aux utilisateurs de désactiver temporairement ou définitivement le défilement déclenché par l'utilisateur via des gestes tactiles ou des actions d'accessibilité. Le défilement par programmation via les méthodes d'état reste autorisé. (I7eae9, b/201150093) - Ajout d'un rappel
onSizeChangedau modificateur d'agrandissement. (I6879f) - Mise à jour du widget d'agrandissement, qui s'affiche désormais lorsque l'utilisateur déplace les poignées de sélection dans un
SelectionContainer. (I30b38, b/139320979)
Correction de bugs
- Correction de la poignée du curseur
TextFieldqui n'était pas masquée lorsqu'elle était hors vue suite au défilement. (I14552, b/208883748)
Mises à jour des dépendances
- Mise à jour des dépendances vers Kotlin
1.6.10.
Version 1.1
Version 1.1.1
23 février 2022
Publication d'androidx.compose.foundation:foundation:1.1.1 et d'androidx.compose.foundation:foundation-layout:1.1.1. Liste des commits de la version 1.1.1
Correction de bugs
- Correction d'une exception
NullPointerExceptiondansandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList. (aosp/1947059, b/206677462) - Correction du plantage causé par le contenu du presse-papiers lors de la lecture du presse-papiers sur Android. (I06020, b/197769306)
- Résolution du problème de lecture de droite à gauche dans
LazyVerticalGrid. (aosp/1931080, b/207510535)
Version 1.1.0
9 février 2022
Publication d'androidx.compose.foundation:foundation:1.1.0 et d'androidx.compose.foundation:foundation-layout:1.1.0. Liste des commits de la version 1.1.0
Modifications importantes depuis la version 1.0.0
- Stabilisation de la prise en charge du défilement hors limites d'Android 12.
- Améliorations apportées au dimensionnement des cibles tactiles.
- Notez que, dans Compose 1.0, les composants Material développent leur espace de mise en page pour respecter les consignes d'accessibilité Material concernant la taille des cibles tactiles. Par exemple, la cible tactile minimale d'un bouton est de 48 × 48 dp, et sera étendue si le paramètre indique une dimension inférieure. Cela permet d'aligner la bibliothèque Compose Material sur le comportement des composants Material Design, pour plus de cohérence si vous combinez le système de vues et Compose. Cette modification garantit également que les conditions minimales requises pour l'accessibilité des cibles tactiles sont remplies lorsque vous créez votre UI à l'aide de composants Compose Material.
- Stabilisation de la prise en charge du rail de navigation.
- Reclassement d'un certain nombre d'API expérimentales en version stable.
- Prise en charge des nouvelles versions de Kotlin.
Version 1.1.0-rc03
26 janvier 2022
Publication d'androidx.compose.foundation:foundation:1.1.0-rc03 et d'androidx.compose.foundation:foundation-layout:1.1.0-rc03. Liste des commits de la version 1.1.0-rc03
Correction de bugs
- Mise à jour pour assurer la compatibilité avec Compose Material 1.1.0-rc03.
Version 1.1.0-rc01
15 décembre 2021
Publication d'androidx.compose.foundation:foundation:1.1.0-rc01 et d'androidx.compose.foundation:foundation-layout:1.1.0-rc01. Liste des commits de la version 1.1.0-rc01
Correction de bugs
- Correction d'un bug empêchant de transmettre des décalages de défilement négatifs dans
LazyListState.scrollToItem()etLazyListState.animateScrollToItem(). (Iceb90, b/184252837) - Correction d'un bug qui causait l'omission de certaines actions d'accessibilité liées au défilement. (I7cbfb)
Version 1.1.0-beta04
1er décembre 2021
Publication d'androidx.compose.foundation:foundation:1.1.0-beta04 et d'androidx.compose.foundation:foundation-layout:1.1.0-beta04. Liste des commits de la version 1.1.0-beta04
Nouvelles fonctionnalités
- Mise à jour pour assurer la compatibilité avec Kotlin
1.6.0.
Modifications apportées à l'API
- Correction de la possibilité de valeur nulle dans
androidx.core.view. (I7078a, b/204917439) - Ajout d'API expérimentales permettant aux utilisateurs de consommer PointerInputchange entièrement et de vérifier s'il a été consommé. (I2e59d)
- Mise à jour permettant d'afficher un widget d'agrandissement lorsque l'utilisateur déplace le curseur ou les poignées de sélection dans des champs de texte. (I5391e, b/203781358)
Correction de bugs
- Correction des poignées de texte qui restaient fixes lorsque la visibilité IME changeait. (I25f2e)
Version 1.1.0-beta03
17 novembre 2021
Publication d'androidx.compose.foundation:foundation:1.1.0-beta03 et d'androidx.compose.foundation:foundation-layout:1.1.0-beta03. Liste des commits de la version 1.1.0-beta03
Modifications apportées à l'API
- Prise en charge des étendues horizontales dans LazyVerticalGrid. (I7e2fa, b/176758183)
Ajout d'une fonctionnalité expérimentale permettant d'animer la position des éléments dans les listes différées. Mise à disposition d'un nouveau modificateur,
Modifier.animateItemPlacement(), dans LazyItemScope. Exemple d'utilisation :var list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }- Lorsque vous fournissez une clé via
LazyListScope.itemouLazyListScope.items, ce modificateur permet d'animer la réorganisation des éléments. Les autres changements de position causés par des événements, tels que les changements affectant la disposition ou l'alignement, seront également animés. (I59e7b, b/150812265)
- Lorsque vous fournissez une clé via
Version 1.1.0-beta02
3 novembre 2021
Publication d'androidx.compose.foundation:foundation:1.1.0-beta02 et d'androidx.compose.foundation:foundation-layout:1.1.0-beta02. Liste des commits de la version 1.1.0-beta02
Correction de bugs
- Correction des ondulations et des autres indications qui étaient toujours retardées pour un événement "vers le bas". Désormais, elles le seront seulement si elles se trouvent dans un conteneur
Modifier.scrollable(). (Ibefe0, b/203141462) - Ajout d'une API expérimentale BringIntoView, qui permet d'envoyer une demande aux parents afin qu'ils fassent défiler l'écran pour afficher un élément. (Ib918d, b/195353459)
Contribution externe
- Ajout de
Modifier.pointerHoverIcon. (I95f01)
Version 1.1.0-beta01
27 octobre 2021
Publication d'androidx.compose.foundation:foundation:1.1.0-beta01 et d'androidx.compose.foundation:foundation-layout:1.1.0-beta01. Liste des commits de la version 1.1.0-beta01
Correction de bugs
- Ajout d'une API expérimentale BringIntoView, qui permet d'envoyer une demande aux parents afin qu'ils fassent défiler l'écran pour afficher un élément. (Ib918d, b/195353459)
Version 1.1.0-alpha06
13 octobre 2021
Publication d'androidx.compose.foundation:foundation:1.1.0-alpha06 et androidx.compose.foundation:foundation-layout:1.1.0-alpha06. Liste des commits de la version 1.1.0-alpha06
Modifications apportées à l'API
- Ajout d'une surcharge sans enfant pour Layout, pour gagner en efficacité. (Ib0d9a)
- Mise à jour de
SemanticsNodeInteraction.performSemanticsAction, qui renvoie désormais laSemanticsNodeInteractionsur laquelle la fonction a été appelée. (I9e5db) - Ajout de
performScrollToNode(matcher: SemanticsMatcher), qui fait défiler un conteneur à défilement jusqu'au contenu désigné par l'outil de mise en correspondance spécifié. (Ic1cb8)
Version 1.1.0-alpha05
29 septembre 2021
Publication d'androidx.compose.foundation:foundation:1.1.0-alpha05 et d'androidx.compose.foundation:foundation-layout:1.1.0-alpha05. Liste des commits de la version 1.1.0-alpha05
Modifications apportées à l'API
- Ajout de pointeurs historiques expérimentaux à PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
Correction de bugs
- Correction de la prise en charge de l'accessibilité concernant le défilement dans les éléments applicables (Lazy ou non). (I6cdb0)
Version 1.1.0-alpha04
15 septembre 2021
Publication d'androidx.compose.foundation:foundation:1.1.0-alpha04 et d'androidx.compose.foundation:foundation-layout:1.1.0-alpha04. Liste des commits de la version 1.1.0-alpha04
Modifications apportées à l'API
- Abandon de
performGestureetGestureScope, remplacés parperformTouchInputetTouchInjectionScope. (Ia5f3f, b/190493367) - Ajout de
touchBoundsInRootàSemanticsNode, qui inclut la taille minimale des cibles tactiles afin que les développeurs puissent s'assurer que ces dernières respectent les valeurs minimales d'accessibilité. (I2e14b, b/197751214)
Correction de bugs
- Prise en charge du défilement hors limites sur les appareils Android 12. (Iccf3c, b/171682480)
Version 1.1.0-alpha03
1er septembre 2021
Publication d'androidx.compose.foundation:foundation:1.1.0-alpha03 et d'androidx.compose.foundation:foundation-layout:1.1.0-alpha03. Liste des commits de la version 1.1.0-alpha03
Nouvelles fonctionnalités
- Mise à jour des dépendances Compose
1.1.0-alpha03vers Kotlin1.5.30. (I74545)
Modifications apportées à l'API
- Ajout d'un effet de halo pour le défilement. Ajout de l'API expérimentale OverScrollConfiguration permettant de configurer l'effet visuel de défilement hors limites. La valeur "null" désactive le défilement hors limites. (I0c304, b/171682480)
- Mise à jour d'AwaitPointerEventScope, qui dispose désormais de withTimeout() et withTimeoutOrNull(). (I507f0, b/179239764, b/182397793)
- Ajout d'une méthode de test pour obtenir les limites rognées. (I6b28e)
- Ajout d'une taille minimale aux cibles tactiles dans ViewConfiguration, pour garantir l'accessibilité lorsque des entrées pointeur ou sémantiques sont utilisées. (Ie861c)
Version 1.1.0-alpha02
18 août 2021
Publication d'androidx.compose.foundation:foundation:1.1.0-alpha02 et d'androidx.compose.foundation:foundation-layout:1.1.0-alpha02. Liste des commits de la version 1.1.0-alpha02
Modifications apportées à l'API
- Ajout de versions DpSize pour
Modifier.sizeetrequiredSize. (I3fc7e, b/194219828)
Version 1.1.0-alpha01
4 août 2021
Publication d'androidx.compose.foundation:foundation:1.1.0-alpha01 et d'androidx.compose.foundation:foundation-layout:1.1.0-alpha01. Liste des commits de la version 1.1.0-alpha01
Modifications apportées à l'API
- Mise à jour de la méthode
DrawScope#drawImage, qui consomme désormais les rectangles source et de destination pour consommer un paramètre FilterQuality facultatif. Cette méthode est utile pour afficher les éléments de style pixel art, conçus pour paraître pixélisés lorsqu'ils sont agrandis. Mise à jour du composable BitmapPainter + Image, afin de consommer également un paramètre FilterQuality facultatif. (Ie4fb0, b/180311607) - Mise à jour de TextField, qui efface désormais la sélection lorsque l'utilisateur appuie sur le bouton "Retour", ce qui correspond au comportement Android EditText. (I3ca16, b/174173645)
- Ajout d'une poignée de curseur. (I07a82, b/173016579)
Correction de bugs
- Ajout d'animations pour le défilement à l'aide d'actions sémantiques pour les listes Lazy et les composants à défilement standard. (Id9066, b/190742024)
Contribution externe
- Mise à jour de
LazyVerticalGrid, qui accepte désormais les paramètres de disposition horizontale et verticale. (If9c92)
Version 1.0
Version 1.0.5
3 novembre 2021
Publication d'androidx.compose.foundation:foundation:1.0.5 et d'androidx.compose.foundation:foundation-layout:1.0.5. Liste des commits de la version 1.0.5
Correction de bugs
- Correction d'un plantage lié au suivi des instances de derivedStateOf. (aosp/1792247)
Version 1.0.4
13 octobre 2021
Publication d'androidx.compose.foundation:foundation:1.0.4 et d'androidx.compose.foundation:foundation-layout:1.0.4. Liste des commits de la version 1.0.4
Mises à jour des dépendances
- Mise à jour des dépendances vers Kotlin
1.5.31
Version 1.0.3
29 septembre 2021
Publication d'androidx.compose.foundation:foundation:1.0.3 et d'androidx.compose.foundation:foundation-layout:1.0.3. Liste des commits de la version 1.0.3
Mises à jour des dépendances
- Mise à jour des dépendances vers Kotlin
1.5.30
Version 1.0.2
1er septembre 2021
Publication d'androidx.compose.foundation:foundation:1.0.2 et d'androidx.compose.foundation:foundation-layout:1.0.2. Liste des commits de la version 1.0.2
Mise à jour pour prendre en charge la version 1.0.2 de Compose. Compose 1.0.2 reste compatible avec Kotlin 1.5.21.
Version 1.0.1
4 août 2021
Publication d'androidx.compose.foundation:foundation:1.0.1 et androidx.compose.foundation:foundation-layout:1.0.1. Liste des commits de la version 1.0.1
Mises à jour des dépendances
- Mise à jour des dépendances vers Kotlin
1.5.21
Version 1.0.0
28 juillet 2021
Publication d'androidx.compose.foundation:foundation:1.0.0 et d'androidx.compose.foundation:foundation-layout:1.0.0. Liste des commits de la version 1.0.0
Principales fonctionnalités de la version 1.0.0
Première version stable de Compose. Pour en savoir plus, consultez le blog officiel des publications de Compose.
Problèmes connus
Si vous utilisez Android Studio Bumblebee Canary 4 ou AGP
7.1.0-alpha04/7.1.0-alpha05, vous risquez de rencontrer le plantage suivant :java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"Pour résoudre ce problème, augmentez temporairement la valeur minSdkVersion à 24 ou au-delà dans votre fichier
build.gradle. Ce problème sera résolu dans la prochaine version d'Android Studio Bumblebee et AGP7.1. (b/194289155)
Version 1.0.0-rc02
14 juillet 2021
Publication d'androidx.compose.foundation:foundation:1.0.0-rc02 et d'androidx.compose.foundation:foundation-layout:1.0.0-rc02. Liste des commits de la version 1.0.0-rc02
- Mise à jour de l'affichage des bordures des formes génériques pour résoudre les problèmes liés aux chemins définis avec des dimensions fixes. (aosp/1748871, b/191817116)
Version 1.0.0-rc01
1er juillet 2021
Publication d'androidx.compose.foundation:foundation:1.0.0-rc01 et d'androidx.compose.foundation:foundation-layout:1.0.0-rc01. Liste des commits de la version 1.0.0-rc01
Modifications apportées à l'API
- Prise en charge par Canvas d'un paramètre contentDescription pour l'accessibilité. (Ib547c)
Correction de bugs
- Correction des boutons, fiches et cases à cocher désactivés, ainsi que des
Modifier.clickable(enabled=false)en général. Désormais, ils empêcheront les clics de remonter jusqu'au parent. (Ic2c3b, b/183908811)
Version 1.0.0-beta09
16 juin 2021
Publication d'androidx.compose.foundation:foundation:1.0.0-beta09 et d'androidx.compose.foundation:foundation-layout:1.0.0-beta09. Liste des commits de la version 1.0.0-beta09
Modifications apportées à l'API
- Suppression de
ManualFrameClock. Si vous devez contrôler des animations, utilisez plutôtcomposeTestRule.mainClock. (I3c3e8, b/189951065) - Conversion des énumérations Role et LiveRegionMode en classes inline avec un constructeur privé. (Id1890)
- Conversion de KeyboardCapitalization en classe inline. (Id5a1c)
- Conversion de TextOverflow en classe inline. (I433af)
Correction de bugs
- Correction d'un bug afin de maintenir la position de défilement en fonction de la clé lorsque vous spécifiez les clés uniques des éléments LazyColumn/Row. Par conséquent, si vous ajoutez ou supprimez des éléments avant l'élément visible actuel, l'élément avec la clé sera toujours visible en premier. (Id263f, b/184257857)
- Marquage temporaire des constantes clés comme @ExperimentComposeUiApi. La consommation de code peut déclarer des constantes privées avant la stabilisation. (Ia5d48)
- Ajout d'IdlingStrategy à AndroidComposeTestRule, qui peut être utilisé par des frameworks de test pour installer un autre mécanisme permettant d'attendre ou d'atteindre le calme. Utilisez
AndroidComposeTestRule.setIdlingStrategyFactory()avant le début du test pour installer votre propre stratégie. (I608fa)
Nouvelles règles de profil
Cette version ajoute des règles de profil aux modules de composition suivants. (I14ed6)
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Que sont les règles de profil ?
Les règles de profil d'une bibliothèque sont spécifiées dans un fichier texte
baseline-prof.txt, situé dans le répertoiresrc/mainou un répertoire équivalent. Le fichier spécifie une règle par ligne. Dans ce cas, une règle correspond à un modèle mis en correspondance avec des méthodes ou des classes de la bibliothèque. La syntaxe de ces règles correspond à un sur-ensemble du format de profil ART intelligible, utilisé conjointement àadb shell profman --dump-classes-and-methods .... Ces règles prennent l'une des deux formes suivantes pour cibler des méthodes ou des classes.Une règle de méthode adoptera le format suivant :
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>Une règle de classe adoptera le format suivant :
<CLASS_DESCRIPTOR>Dans le cas présent,
<FLAGS>désigne un ou plusieurs des caractèresH,SetPet indique si cette méthode doit être signalée comme "Hot", "Startup" ou "Post Startup".<CLASS_DESCRIPTOR>est le descripteur de la classe à laquelle appartient la méthode ciblée. Par exemple, la classeandroidx.compose.runtime.SlotTableaurait comme descripteurLandroidx/compose/runtime/SlotTable;.<METHOD_SIGNATURE>est la signature de la méthode, et inclut le nom, les types de paramètres et les types renvoyés de la méthode. Par exemple, la méthodefun isPlaced(): BooleansurLayoutNodeaurait pour signatureisPlaced()Z.Ces modèles peuvent comporter des caractères génériques (
**,*et?) pour qu'une même règle affecte plusieurs méthodes ou classes.
Quel effet ont ces règles ?
Une méthode associée à l'indicateur
Hsignale qu'il s'agit d'une méthode "hot" qui doit être compilée à l'avance.Une méthode associée à l'indicateur
Ssignale qu'il s'agit d'une méthode appelée au démarrage, qui doit être compilée à l'avance pour éviter les coûts de compilation et d'interprétation de la méthode lors du démarrage.Une méthode associée à l'indicateur
Psignale qu'il s'agit d'une méthode appelée après le démarrage.La présence d'une classe dans ce fichier indique qu'elle est utilisée au démarrage et doit être préallouée dans le tas de mémoire pour éviter son coût de chargement.
Comment ça marche ?
- Les bibliothèques peuvent définir ces règles, qui seront packagées dans des artefacts AAR. Lorsqu'une application contenant ces artefacts est créée, ces règles sont fusionnées puis utilisées pour créer un profil ART binaire compact spécifique à l'application. ART peut ensuite exploiter ce profil lorsque l'application est installée sur des appareils, afin de compiler à l'avance un sous-ensemble spécifique de l'application, ce qui permet d'améliorer ses performances, notamment lors de la première exécution. Notez que cette opération n'a aucune incidence sur les applications débogables.
Version 1.0.0-beta08
2 juin 2021
Publication d'androidx.compose.foundation:foundation:1.0.0-beta08 et d'androidx.compose.foundation:foundation-layout:1.0.0-beta08. Liste des commits de la version 1.0.0-beta08
Modifications apportées à l'API
- Remplacement de l'énumération NestedScrollSource par une classe inline. (Ie321b, b/187055290)
- Refactorisation des utilisations d'énumération en classes inline pour éviter les problèmes avec les instructions "when" exhaustives lorsque de nouvelles valeurs d'énumération sont ajoutées. (I2b5eb)
- Ajout d'un délai d'appui aux composants pouvant être cliqués ou activés/désactivés pour éviter d'afficher une ondulation lors d'un défilement ou d'un déplacement. (Ia2704, b/168524931)
- Conversion en listes des propriétés sémantiques ContentDescription et Text (précédemment, des valeurs uniques). Cela permet de les fusionner telles quelles au lieu de les concaténer. Les API de test ont été améliorées pour tirer parti de ces modifications. (Ica6bf, b/184825850)
- Abandon de
Modifier.focusModifier(), remplacé parModifier.focusTarget(). (I6c860) - Remplacement de l'énumération KeyboardType par une classe inline. (I73045, b/187055290)
- Remplacement de l'énumération
FocusStatepar une interfaceFocusState. (Iccc1a, b/187055290) - Remplacement de l'énumération ImeAction par une classe inline. (I18be5, b/187055290)
- Rattachement des fonctions
AnnotatedString.withAnnotationà ExperimentalTextApi (au lieu d'ExperimentalComposeApi). (I0cd0a)- Rattachement du constructeur TextUnit avec TextUnitType à ExperimentTextApi (au lieu d'ExperimentComposeApi).
- Reclassement des PaddingValues, désormais marquées comme
@Stable, et non plus comme@Immutable. (I88c50)
Correction de bugs
- Correction des plantages affectant les appuis prolongés sur la zone vide d'un texte non vide. (I33ab5, b/187437299)
- Correction d'un bug empêchant l'affichage de la barre d'outils après l'action SelectAll. (I495d9, b/185919613)
- Correction d'un bug qui provoquait le rognage des enfants des conteneurs à défilement sur l'axe transversal. Ce problème était facile à reproduire avec un LazyRow contenant des éléments Card. Désormais, l'ombre n'est plus rognée. (Icb635, b/186318448)
- Correction d'un problème qui entraînait parfois le blocage des ondulations et des autres indications lors d'un clic prolongé avec Modifier.combinedClickable. (I2298c, b/186223077)
- Mise à jour de
detectDragGesures,detectVerticalGesturesetdetectHorizontalGestures, qui consommeront désormais automatiquement le changement de position, sans avoir à appeler change.consumePositionChange dans les rappels onDrag. (I42fc4, b/185096350, b/187320697) - Modification de
Modifier.onGloballyPositioned(), afin de rapporter les coordonnées de ce modificateur dans la chaîne de modificateurs, plutôt que les coordonnées de la mise en page après application de tous les modificateurs. Cela signifie que l'ordre des modificateurs a désormais une incidence sur les coordonnées rapportées. (Ieb67d, b/177926591)
Version 1.0.0-beta07
18 mai 2021
Publication d'androidx.compose.foundation:foundation:1.0.0-beta07 et androidx.compose.foundation:foundation-layout:1.0.0-beta07. Liste des commits de la version 1.0.0-beta07
Modifications apportées à l'API
- Introduction d'une logique afin de précharger le prochain élément visible pour LazyColumn/Row. (I8a4bc, b/184940225)
- Ajout d'une poignée de sélection coupée. (Iff80d, b/183408447)
Correction de bugs
- Mise à jour de LazyColumn/Row, qui conserve désormais jusqu'à deux éléments visibles précédemment actifs (non supprimés), même si ces éléments sont déjà hors écran suite au défilement. Cela permet au composant de réutiliser les sous-compositions actives lorsqu'un nouvel élément doit être composé, ce qui améliore les performances de défilement. (Ie5555)
- Suppression de paintBackground. (I38660)
- Correction afin d'afficher l'arrière-plan de la sélection avec DrawScope. (I73c61, b/186674472)
- Correction d'un problème signalé dans la version beta06 affectant Row/Column avec les modificateurs spacedBy pour la mise en page des enfants pondérés. (Ifaf8c, b/187326588)
Version 1.0.0-beta06
5 mai 2021
Publication d'androidx.compose.foundation:foundation:1.0.0-beta06 et d'androidx.compose.foundation:foundation-layout:1.0.0-beta06. Liste des commits de la version 1.0.0-beta06
Modifications apportées à l'API
- Résolution du conflit avec les gestes de navigation. (I1145e)
- Ajout des API d'accessibilité CollectionInfo et CollectionItemInfo, qui permettent de marquer la collection et ses éléments pour les services d'accessibilité. (Id54ef, b/180479017)
- Ajout de
SemanticsActions.ScrollToIndexpour faire défiler une liste d'éléments indexés jusqu'à l'élément ayant un certain point de l'index, et deSemanticsProperties.IndexForKeypour obtenir la référence d'indexation d'un élément donné dans une liste d'éléments appariés. Ces deux actions sont implémentées par LazyList.- Ajout de
SemanticsNodeInteraction.performScrollToIndex, qui fait défiler une liste jusqu'au point d'index donné, et deSemanticsNodeInteraction.performScrollToKey, qui fait défiler une liste jusqu'à l'élément associé à la clé donnée. (I4fe63, b/178483889, b/161584524)
- Ajout de
- Prise en charge d'AnnotatedStringSaver dans TextFieldValue.Saver. Ajout des fonctions utilitaires addTtsAnnotation et withAnnotation à AnnotatedString.Builder. (I8cbdc, b/178446304)
- Ajout des valeurs de paramètre
0.dppar défaut àPaddingValues(horizontal, vertical). (I05571, b/181336792)
Correction de bugs
- Correction d'un bug affectant les enfants Row et Column avec
weight(fill = false), qui ordonnaient leur parent d'occuper l'intégralité de l'espace disponible sur l'axe principal. (Ied94d, b/186012444, b/184355105)
Version 1.0.0-beta05
21 avril 2021
Publication d'androidx.compose.foundation:foundation:1.0.0-beta05 et androidx.compose.foundation:foundation-layout:1.0.0-beta05. Liste des commits de la version 1.0.0-beta05
Modifications apportées à l'API
- Reclassement de l'interface FlingBehavior, désormais marquée comme @Stable. Toutes les implémentations doivent respecter le contrat
@Stable. (I93354, b/184830577)
Correction de bugs
- Correction des actions de défilement accessible
ACTION_SCROLL_FORWARD,ACTION_SCROLL_BACKWARD,accessibilityActionScrollLeft,accessibilityActionScrollUp,accessibilityActionScrollRightetaccessibilityActionScrollDown. Au lieu de faire défiler l'écran jusqu'à la fin de l'élément déroulant, le défilement s'effectue désormais écran par écran dans la direction donnée. (Ieccb0) - Prise en charge dans Android 12 des fichiers AndroidManifest provenant de ui-test-manifest et de ui-tooling-data. (I6f9de, b/184718994)
Version 1.0.0-beta04
7 avril 2021
Publication d'androidx.compose.foundation:foundation:1.0.0-beta04 et androidx.compose.foundation:foundation-layout:1.0.0-beta04. Liste des commits de la version 1.0.0-beta04
Modifications apportées à l'API
- Changement de nom : dans SoftwareKeyboardController, hideSoftwareKeyboard devient
hide()et showSoftwareKeyboard devientshow().- Mise à disposition de l'interface CompositionLocal complète pour LocalSoftwareKeyboardController, permettant de la définir (particulièrement utile pour les tests). (I579a6)
- Introduction de
TextOverflow.Visible. (Ic8f89) - Suppression des instances publiques de
RowScope,ColumnScope,BoxScopeetBoxWithConstraintsScope. (I4e83e, b/181869067)
Correction de bugs
- Correction du problème de mauvais positionnement des éléments de
LazyColumn/LazyRowsitués sur les bords, qui survenait après un glissement d'un geste vif trop rapide. (Ie4d13, b/183877420) Correction d'un bug qui permettait d'ignorer les fonctions modulables locales en fonction de leurs paramètres. Désormais, aucune fonction modulable locale ne sera ignorée. Il est courant et attendu que les fonctions locales capturent les paramètres du parent. Les ignorer ensuite générait fréquemment des bugs.
Pour résumer, prenons l'exemple suivant :
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }Avant cette modification, la fonction modulable
ShowCountétait toujours ignorée, même après la mise à jour du paramètrecount. Ce n'est plus le cas. (I5648a)
Version 1.0.0-beta03
24 mars 2021
Publication d'androidx.compose.foundation:foundation:1.0.0-beta03 et androidx.compose.foundation:foundation-layout:1.0.0-beta03. Liste des commits de la version 1.0.0-beta03
Modifications apportées à l'API
- Abandon de
DefaultMonotonicFrameClock. Désormais, appelerwithFrameNanosouRecomposer.runRecomposeAndApplyChangessansMonotonicFrameClockgénère une exceptionIllegalStateException. (I4eb0d)
Correction de bugs
- Correction de
FlingBehavior.performFling(), désormais appelé même lorsque la vitesse est égale à 0. (I0b6e5, b/181237123)
Version 1.0.0-beta02
10 mars 2021
Publication d'androidx.compose.foundation:foundation:1.0.0-beta02 et androidx.compose.foundation:foundation-layout:1.0.0-beta02. Liste des commits de la version 1.0.0-beta02
Modifications apportées à l'API
- Ajout de plusieurs petites optimisations dans la logique de mesure LazyColumn. (Ic6889)
- Ajout d'une nouvelle API locale de composition
LocalSoftwareKeyboardControllerpour remplacer l'ancienne interface SoftwareKeyboardController sur TextField. (I5951e, b/168778053) - Ajout d'une nouvelle API locale de composition
LocalSoftwareKeyboardControllerpour remplacer l'ancienne interface SoftwareKeyboardController sur TextField. (I84472, b/168778053)
Correction de bugs
- Application forcée des restrictions sur l'utilisation publique des API expérimentales. (I6aa29, b/174531520)
Version 1.0.0-beta01
24 février 2021
Publication d'androidx.compose.foundation:foundation:1.0.0-beta01 et androidx.compose.foundation:foundation-layout:1.0.0-beta01. Liste des commits de la version 1.0.0-beta01
Première publication bêta de la version 1.0.0 de Compose.
Modifications apportées à l'API
- Ajout du rappel onStart à
detectDragGestures. (I67269, b/179995594) - Mise à jour des modificateurs de dimensionnement des fonctionnalités intrinsèques, qui ne sont plus en phase expérimentale. (I15744)
- Suppression des assertions de dp. (I798d2)
- Suppression du rappel SoftwareKeyboardController (qui sera bientôt remplacé par une nouvelle API) de tous les champs de texte. (Iae869, b/168778053)
- Changement de nom : MeasurementBlocks devient MeasurementPolicy, une interface de fonction. Mise à jour et simplification des API Layout pour utiliser MeasurePolicy. (Icab48, b/167662468, b/156751158)
- Remplacement de
InteractionStatepar[Mutable]InteractionSource.- Les interfaces sont responsables de l'émission et de la collecte des événements d'interaction.
- Au lieu de transmettre
interactionState = remember { InteractionState() }à des composants tels queButtonetModifier.clickable(), utilisezinteractionSource = remember { MutableInteractionSource() }. - Au lieu de
Interaction.Pressed in interactionState, utilisez les fonctions d'extension sur InteractionSource, comme InteractionSource.collectIsPressedAsState(). - Pour les cas complexes, vous pouvez utiliser InteractionSource.interactions afin d'observer le flux des interactions. Pour en savoir plus, consultez la documentation et les exemples d'InteractionSource.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Suppression des méthodes LayoutCoordinates obsolètes. Utilisez la fonction au lieu de la propriété pour positionInParent et boundsInParent. (I580ed, b/169874631, b/175142755)
- Création de TextInputSession pour les sessions d'entrée à partir de composants de texte de bas niveau tels que CoreTextField. (I8817f, b/177662148)
- Placeable expose désormais measuredSize, qui représente la taille réelle mesurée pour la mise en page enfant. Cette taille peut ne pas respecter les contraintes de dimensionnement. (Ib2729, b/172560206, b/172338608)
- Ajout d'un modificateur selectionGroup permettant de marquer la collection de Tabs ou RadioButtons à des fins d'accessibilité. (Ie5c29)
Ajout de LazyListState.animateScrollToItem.
Cette méthode lisse le défilement jusqu'à un élément spécifique de la liste. (I4bfd7)
Changement de nom : ScrollableState.smoothScrollBy() devient animateScrollBy(), LazyListState.snapToItemIndex() devient scrollToItem() et ScrollState.smoothScrollTo() devient animateScrollTo(). (I35ded)
Remplacement de Modifier.zoomable par Modifier.transformable. Ajout des fonctionnalités smoothPanBy et smoothRotationBy. (Ifc32b, b/175294473)
Mise à jour de
defaultFactorypourcompositionLocalOfetstaticCompositionLocalOf, désormais obligatoire plutôt que facultatif.Cette modification élimine une erreur de type potentielle pour les types non nullables pour lesquels aucune fabrique par défaut n'était fournie. Auparavant, une référence nulle pouvait être fournie pour un type ne pouvant l'accepter.
Pour les types nullables, envisagez de définir
{ null }comme fabrique par défaut.Nous vous déconseillons d'utiliser des valeurs locales avec des types non nullables, sauf si une valeur par défaut logique peut être fournie. S'il n'existe aucune valeur par défaut pertinente, le lambda
defaultFactorydoit générer une exception. Toutefois, générer une exception signifie que les consommateurs de la valeur locale auront une dépendance implicite quant à la mise à disposition de celle-ci, qui n'est pas forcée par le système de types. (Ifbd2a)Remplacement de
Indication#createIndication()parIndication#rememberUpdatedIndication(InteractionState), et suppression du paramètreInteractionStated'IndicationInstance#drawIndication(). IndicationInstance ne doit être responsable que de l'affichage des effets visuels, et non du lancement d'animations ou de l'écriture d'un état suite à des modifications d'InteractionState. Ces animations et écritures d'état doivent avoir lieu dansrememberUpdatedIndication(). En outre, le paramètreindicationest désormais obligatoire dansModifier.indication. (Ic1764, b/152525426)Mise à jour des actions de texte, qui vérifient désormais automatiquement la sélection. (I13777, b/179648629)
Suppression de
runBlockingWithManualClock. (I15cdc, b/179664814)Mise à jour de Modifier.verticalScroll()/horizontalScroll(), où la position de défilement est désormais représentée par des entiers. (I81298)
Remplacement des packages des méthodes smoothScrollBy et scrollBy par
androidx.compose.foundation.gestures.*. (I3f7c1, b/175294473)Changement de nom : FlingConfig devient FlingBehavior, et permet désormais de personnaliser l'animation de suspension plutôt que d'utiliser les décompositions prédéfinies. (I02b86, b/175294473)
Changement de nom des modificateurs de taille. Modifier.width et ses variantes height/size deviennent respectivement requiredWidth, requiredHeight et requiredSize. Modifier.preferredWidth et ses variantes preferredHeight/preferredSize deviennent respectivement width, height et size. (I5b414)
Changement de nom : defaultMinSizeConstraints devient defaultMinSize. (I4eaae)
Suppression de Modifier.tapGestureFilter. Utilisez
Modifier.pointerInput { detectTapGestures(...) }à la place. (I266ed, b/175294473)Suppression de la consommation partielle du système d'entrée du pointeur. Nous vous recommandons de coordonner la consommation partielle à l'aide de Modifier.nestedScroll. (Ie9c9b)
Déplacement d'Orientation vers le package Foundation. Déplacement de VelocirtTracker de ui.gesture vers ui.input.pointer. (Iff4a8, b/175294473)
Suppression de AnimationClockObservable et de ses sous-classes. Suppression d'AnimatedFloat. (Icde52, b/177457083)
Reclassement de drawerState.open() et drawerState.close() comme fonctions de suspension. Utilisez rememberCoroutineScope() pour obtenir le champ d'application de la composition afin de les appeler. (I16f60, b/175294473)
Changement de nom : Providers devient CompositionLocalProvider.
- Abandon du constructeur de composition, qui n'accepte plus de paramètre de clé.
- Conversion de la fonction modulable de premier niveau currentCompositeKeyHash en propriété de premier niveau pour composable.
- Déplacement de CompositionData et CompositionGroup vers l'espace de noms androidx.compose.runtime.tooling.
- Conversion de la classe concrète ComposableLambda en interface sans paramètres de type.
- Conversion de la classe concrète ComposableLambdaN en interface sans paramètres de type.
- Déplacement de la fonction snapshotFlow vers l'espace de noms androidx.compose.runtime.
- Reclassement de la méthode de fusion de SnapshotMutationPolicy, qui n'est plus en phase expérimentale.
- Suppression de la fonction clearRoots
@TestOnly, qui n'était plus nécessaire. - Suppression des fonctions keySourceInfoOf et resetSourceInfo, qui n'étaient plus nécessaires.
- Suppression de Composer.collectKeySourceInformation, qui n'était plus nécessaire.
- Suppression des méthodes isJoinedKey, joinedKeyLeft et joinedKeyRight, qui n'étaient plus nécessaires.
- Déplacement et réorganisation de différentes API de premier niveau dans différents fichiers. En raison de la sémantique des classes de fichiers en Kotlin, ces changements empêcheront la compatibilité binaire, mais n'affecteront pas la compatibilité avec la source. La plupart des utilisateurs ne devraient donc pas rencontrer de problème.
- (I99b7d, b/177245490)
Mise à jour de Modifier.scrollable, retravaillé, qui utilise désormais une interface Scrollable au lieu de la classe ScrollableController. (I4f5a5, b/174485541, b/175294473)
Mise à jour de Modifier.draggable, qui accepte désormais DraggableState au lieu d'un simple lambda. Vous pouvez créer un état via
rememberDraggableState { delta -> }pour obtenir le même comportement que précédemment. (Ica70f, b/175294473)Ajout des attributs requiredWidth(IntrinsicSize) et requiredHeight(IntrinsicSize) pour le dimensionnement obligatoire des tailles intrinsèques. (I0a6b4)
Suppression de
emptyContent(), désormais obsolète. Utilisez{}à la place. (Idb33f, b/179432510)Suppression d'API précédemment abandonnées. (Ice5da, b/178633932)
Correction de bugs
- Ajout d'une nouvelle API locale de composition LocalSoftwareKeyboardController pour remplacer l'ancienne interface SoftwareKeyboardController sur TextField. (I658b6, b/168778053)
Version 1.0.0-alpha12
10 février 2021
Publication d'androidx.compose.foundation:foundation:1.0.0-alpha12 et androidx.compose.foundation:foundation-layout:1.0.0-alpha12. Liste des commits de la version 1.0.0-alpha12
Modifications apportées à l'API
- Mise à jour de Modifier.pointerInput, qui nécessite désormais des clés de mise en mémoire pour indiquer le moment où la coroutine de détection des entrées de pointeur doit redémarrer pour les nouvelles dépendances. (I849cd)
- Mise à jour de test : hasText() vérifie désormais s'il existe à la fois des textes d'entrée et des libellés, indices ou espaces réservés dans le champ de texte. (Iab803)
- Ajout de PaddingValues.Absolute, qui peut être utilisé dans les API acceptant des PaddingValues. (Ia5f30)
- Abandon de onImeActionPerformed. Utilisez KeyboardActions à la place. (If0bbd, b/179071523)
- Changement de nom : ImagePainter devient BitmapPainter, afin de mieux correspondre aux conventions de dénomination d'ImageBitmap et d'ImageVector et de refléter son parallèle, VectorPainter. (Iba381, b/174565889)
- Amélioration des API de test de sous-chaîne, qui acceptent désormais les sous-chaînes en tant qu'arguments. (Icbe78)
- Introduction d'un élément de contexte de coroutine
InfiniteAnimationPolicy, qui sera appliqué dans les animations infinies. Par défaut, aucune règle n'est installée, sauf lors de l'exécution de tests avecComposeTestRule. (I50ec4, b/151940543) - Reclassement d'Animatable.snapTo et Animatable.stop en fonctions de suspension. (If4288)
- Déplacement de ComponentActivity.setContent vers androidx.activity.compose.setContent dans le module androidx.activity:activity-compose. (Icf416)
- Suppression des méthodes de déstructuration et copy() de plusieurs classes où elles n'étaient que rarement utilisées. (I26702, b/178659281)
Prise en charge des clés personnalisées pour LazyColumn/LazyRow. Cela nous permet de gérer plus intelligemment la réorganisation des éléments. Ainsi, l'état stocké dans les blocs remember {} sera déplacé avec l'élément lorsque vous supprimerez celui-ci du milieu ou réorganisez les éléments.
LazyColumn { items(users, key = { user -> user.id }) { ... } }Reclassement d'Indication#createInstance, désormais marqué comme @Composable, et mise à jour de LocalIndication, qui contient désormais un Indication, et non plus () -> Indication. (I5eeea, b/157150564)
Remplacement de
Constraints.enforceparConstraints.constrain. (I8b8ea)Abandon de loadFontResource, désormais obsolète. Utilisez plutôt fontResource. Abandon de imageResource, loadImageResource, vectorResource et loadVectorResource. Utilisez plutôt painterResource. (I6b809)
Pour des raisons de performances, la sémantique ScrollAxisRange reçoit désormais des lambdas renvoyant des floats au lieu des valeurs directes des floats. (If4a35, b/178657186)
Ajout de la sémantique EditableText pour marquer le texte d'entrée modifiable du champ de texte pour l'accessibilité, et des méthodes de test correspondantes pour vérifier la sémantique. (I8e07a)
Mise à jour de Modifier.clickable, qui n'accepte plus les doubles clics ni les clics longs. Modifier.combinedClickable permet de prendre en charge ces fonctionnalités. (Iafad1)
Changement de nom : toIntPx() devient roundToPx(). (I9b7e4, b/173502290)
Changement de nom : IntBounds devient IntRect et l'API a été améliorée. (I1f6ff)
Abandon de Modifier.dragGestureFilter. Utilisez
Modifier.pointerInput { detectDragGestures (...)}à la place. Vous pouvez également utiliser Modifier.draggable pour les déplacements sur un seul axe. (I0ba93, b/175294473)Renommage des Ambients pour correspondre à la nouvelle convention Ambient > CompositionLocal. Le précédent nom des Ambients était AmbientFoo, tandis que CompositionLocals est devenu LocalFoo. (I2D55D)
Déplacement de Selection vers Foundation. (I7892b)
Avertissement : Nous avons précédemment supprimé le composable
state { 0 }, et encourageons désormais des approches telles queremember { mutableStateOf(0) }. Suivant cet exemple, nous allons supprimer le composablesavedInstanceState { 0 }. Nous vous invitons à utiliserrememberSaveable { mutableStateOf(0) }, qui enregistrera et restaurera automatiquement si le type utilisé dans MutableState peut être stocké dans le bundle. Si vous transmettiez auparavant un objet Saver personnalisé, vous devrez désormais utiliser une nouvelle surcharge de rememberSaveable, qui contient le paramètrestateSaver. Exemple de mise en œuvre :val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }. (Ib4c26, b/177338004)Ajout de sémantique de mot de passe pour l'accessibilité. (I231ce)
Ajout de ProgressBarRangeInfo.Indeterminate pour marquer les barres de progression indéterminées à des fins d'accessibilité. (I6fe05)
Harmonisation du temps d'animation, désormais exprimé en nanosecondes (If776a)
Abandon de @ComposableContract, désormais remplacé par trois annotations plus spécifiques.
@ComposableContract(restartable = false)devient@NonRestartableComposable.@ComposableContract(readonly = true)devient@ReadOnlyComposable.@ComposableContract(preventCapture = true)devient@DisallowComposableCalls.@ComposableContract(tracked = true)a été supprimé. (I60a9d)Abandon des utilitaires
emptyContent()et(@Composable () -> Unit).orEmpty(), qui n'ont plus d'impact positif sur les performances ni de valeur ajoutée. (I0484d)Mise à jour des recomposeurs, qui peuvent désormais être fermés. Les recomposeurs fermés poursuivent la recomposition jusqu'à ce que les coroutines enfants de la composition soient terminées. Changement de nom : Recomposer.shutDown devient "cancel" pour marquer la distinction avec "close". (Ib6d76)
Marquage des API liées à LazyVerticalGrid comme expérimentales. (Ia53e3, b/178519862)
Changement de nom : rememberSavedInstanceState() devient rememberSaveable(), et a été déplacé vers le package androidx.compose.runtime.saveable. (I1366e, b/177338004)
Changement de nom : RestorableStateHolder devient SaveableStateHolder, et a été déplacé vers le package androidx.compose.runtime.saveable. Changement de nom : la méthode interne RestorableStateProvider devient SaveableStateProvider. Étant donné que le type générique a été supprimé, vous pouvez juste transmettre "Any" en tant que clé. Vous n'avez plus besoin de l'annotation expérimentale. (I0902e, b/174598702)
Déplacement de Saver, listSaver(), mapSaver() et autoSaver depuis androidx.compose.runtime.savedinstancestate vers androidx.compose.runtime.saveable. (I77fe6)
Changement de nom : l'artefact androidx:compose:runtime:runtime-saved-instance-state devient androidx:compose:runtime:runtime-saveable. (I6dcac)
Suppression de nombreuses API obsolètes du package UI. (I2f2dc)
Abandon de l'artefact compose:runtime-dispatch. MonotonicFrameClock se trouve désormais dans compose:runtime, et AndroidUiDispatcher dans compose:ui. (Ib5c36)
Changement de nom : les paramètres de RounderCornerShape, CutCornerShape et CornerBasedShape ont été renommés de left/right en start/end, pour permettre la mise en miroir automatique de la forme pour la lecture de droite à gauche. Ajout de AbsoluteRounderCornerShape et AbsoluteCutCornerShape pour les cas où la mise en miroir automatique n'est pas souhaitée. (I61040, b/152756983)
Suppression de canDrag de Modifier.scrollable. (Id66e7, b/175294473)
Refactorisation de l'API ciblée par le plug-in de compilation Compose, afin d'utiliser une interface plutôt qu'une classe concrète. Cette interface n'utilise plus de paramètre de type.
Il s'agit d'une modification interne qui ne devrait pas affecter la compatibilité du code source, mais qui constitue une modification destructive de la compatibilité binaire. (I3b922, b/169406779)
Suppression de Modifier.scaleGestureFilter. Utilisez Modifier.zoomable à la place. Vous pouvez également utiliser
Modifier.pointerInput { detectMultitouchGestures { ... }}. (Id5da1, b/175294473)Abandon d'AnimatedValue/Float. Utilisez Animatable à la place. (I71345, b/177457083)
- Suppression de CoreText et CoreTextField de l'API publique.
- Suppression de la surcharge SelectionContainer, devenue obsolète. (I99c19)
Suppression des fonctions de non suspension pour le défilement, devenues obsolètes. Nous poursuivons les changements amorcés dans la dernière version en supprimant complètement ces fonctions. Utilisez à la place les fonctions de suspension qui portent les mêmes noms. Vous pouvez obtenir un champ d'application de coroutine via rememberCoroutineScope(). (I3d39c, b/178169563)
Remplacement de androidx.compose.foundation.layout.ConstraintLayout, devenu obsolète, par androidx.constraintlayout.compose.ConstraintLayout. Vous devrez ajouter une dépendance à
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01. (I87adc)Abandon de tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter et pressIndicationGestureFilter. Utilisez plutôt Modifier.clickable ou Modifier.pointerInput avec la fonction detectTapGestures. (I6baf9, b/175294473)
Suppression de
Recomposer.current(). [Abstract]ComposeView utilise désormais par défaut des recomposeurs créés par nécessité, délimités dans la fenêtre et gérés par le ViewTreeLifecycleOwner pour la fenêtre concernée. La recomposition et les animations basées sur withFrameNanos sont suspendues tant que le cycle de vie de l'hôte est arrêté. (I38e11)Mise à jour de Recomposer.runningRecomposers, qui propose désormais un StateFlow global des RecomposerInfo en lecture seule, permettant d'observer l'état de la composition en cours dans le processus. Privilégiez cette API plutôt que Recomposer.current(), devenue obsolète. (If8ebe)
Version 1.0.0-alpha11
28 janvier 2021
Publication d'androidx.compose.foundation:foundation:1.0.0-alpha11 et androidx.compose.foundation:foundation-layout:1.0.0-alpha11. Liste des commits de la version 1.0.0-alpha11
Modifications apportées à l'API
Abandon de la fonction non suspensive scrollBy, suppression de la fonction non suspensive scrollTo.
Nous vous recommandons d'utiliser des fonctions de suspension pour contrôler le défilement et attendre la fin du défilement. Dans le cadre de cette transition, les versions non suspensives de ces fonctions sont abandonnées et/ou supprimées. (Ie9ced)
Abandon de la fonction non suspensive smoothScrollBy. Nous vous recommandons d'utiliser des fonctions de suspension pour contrôler le défilement et attendre la fin du défilement. Dans le cadre de cette transition, les versions non suspensives de ces fonctions sont abandonnées et/ou supprimées. (I12880)
Ajout du paramètre de description du contenu à Image et Icon, utilisé pour fournir la description aux services d'accessibilité. (I2ac4c)
Ajout d'un nouveau paramètre "decorationBox" dans BasicTextField. Il permet d'ajouter des décorations telles que des icônes, des espaces réservés, des libellés et d'autres éléments similaires au champ de texte, et d'augmenter la zone cible de ce champ. (I16996)
Suppression du paramètre canDrag dans Modifier.draggable. (Ic4bec, b/175294473)
Suppression de AnimatedFloat.fling, qui accepte FlingConfig. Utilisez la fonction de suspension Animatable.animateDecay à la place. (I4659b, b/177457083)
Suppression de
data classdes classes suivantes :- InlineTextContent
- LocaleList
- (I605c7)
Mise à jour des composants pouvant être cliqués, activés/désactivés et sélectionnés, qui peuvent désormais être créés en dehors de la composition. (I0a130, b/172938345, b/175294473)
Abandon de ScrollableColumn/Row. ScrollableColumn est moins efficace que LazyColumn pour les contenus volumineux, car LazyColumn permet de composer, mesurer et dessiner exclusivement les éléments visibles. Pour détourner les utilisateurs de l'approche inefficace, nous avons décidé d'abandonner ScrollableColumn et ScrollableRow, et d'encourager l'utilisation de LazyColumn et LazyRow. Les utilisateurs peuvent désactiver le comportement Lazy et utiliser les modificateurs directement, comme suit : Column(Modifier.verticalScroll(rememberScrollState())). (Ib976b, b/170468083)
Ajout d'une méthode de fabrique
items(count: Int)pour le champ d'application de LazyColumn/LazyRow/LazyVerticalGrid.items(items: List)etitemsIndexed(items: List)sont désormais des fonctions d'extension, qui doivent être importées manuellement lorsqu'elles sont utilisées. Ajout de surcharges d'extension pour les tableaux : items(items: Array) et itemsIndexed(Array). (I803fc, b/175562574)Suppression de AbsoluteArrangement, devenu obsolète. (Iffa96, b/177641870)
Ajout du paramètre propagateMinConstraints à Box, qui permet de spécifier si les contraintes minimales entrantes doivent ou non être transmises au contenu de Box. La valeur par défaut est "false". (I0125b, b/152613457)
Correction de bugs
- Abandon des propriétés onCommit, onDispose et onActive, remplacées par les API SideEffect et DisposableEffect. (If760e)
- Mise à jour de WithConstraints, retravaillé, remplacé par BoxWithConstraints et déplacé vers foundation.layout. (I9420b, b/173387208)
Modification des fonctions de fabrique pour Font/FontFamily/Typeface.
- Ajout de fonctions de fabrique commençant par une majuscule.
- Abandon des anciennes fonctions de fabrique commençant par des minuscules.
- Les nouvelles fonctions de fabrique renvoient la classe FontFamily au lieu des sous-classes.
- Masquage des constructeurs de sous-classes pour qu'ils ne puissent être créés que via des fonctions de fabrique.
- Changement de nom : Font.asFontFamily devient Font.toFontFamily.
- (I42aa7)
Introduction de
ComposeContentTestRule, qui étendComposeTestRuleet définitsetContent, qui a été supprimé deComposeTestRule. Ajout d'une méthode de fabriquecreateEmptyComposeRule()qui renvoie uneComposeTestRuleet ne lance pas d'Activity pour vous. Utilisez cette option lorsque vous souhaitez lancer votre Activity au cours du test, par exemple en utilisantActivityScenario.launch. (I9d782, b/174472899)Changement de nom : animateAsState devient animateFooAsState, où "Foo" est le type de variable animée (Float, Dp, Offset, etc.). (Ie7e25)
Mise à jour de Density, qui sert désormais de champ d'application receveur pour les interfaces Arrangement. (I18aad)
Mise à jour de TextFieldValue, qui accepte désormais AnnotatedString. Toutefois, il s'agit d'une modification de l'API uniquement. La modification de texte multistyle n'est pas encore prise en charge.
- Suppression de
initialdes paramètres du constructeur EditingBuffer. (I326d5)
- Suppression de
Abandon de invalidate et compositionReference(), respectivement remplacés par currentRecomposeScope et par rememberCompositionReference. (I583a8)
Modification de AnnotatedString, qui s'étend désormais à partir de kotlin.CharSequence. Par conséquent, length et subSequence sont désormais des fonctions d'instance, et les fonctions d'extension ont été supprimées. (Iaf429)
Suppression de la dépendance de l'entrée du pointeur aux classes Duration et Uptime, qui seront remplacées par Long en millisecondes. (Ia33b2, b/175142755, b/177420019)
Abandon de CompositionLifecycleObserver, remplacé par RememberObserver.
Remplacement de
CompositionLifecycleObserverparRememberObserver, avec une sémantique modifiée et des méthodes renommées. Le passage à la nouvelle API peut être effectué mécaniquement pour les objets qui ne sont mémorisés qu'une seule fois, ce qui constitue et reste la pratique recommandée. Toutefois, si une référence a été mémorisée plusieurs fois dans une composition,onRememberedest appelé pour chaque référence, tandis queonEntern'est appelé qu'une seule fois.onEnterétait appelé plusieurs fois si l'objet était utilisé dans des sous-compositions, telles queWithConstraintsetScaffold, ce qui rendait un appel unique deonEnternon fiable, justifiant sa suppression deRememberObserver.RememberObserverajouteonAbandoned, qui est appelé si l'instanceRememberObserverest renvoyée par le rappel transmis àremember, mais n'a pas été mémorisé dans l'état de la composition, faisant queonRememberedn'est jamais appelé. Ce cas peut se produire si une exception met fin à la composition avant qu'elle soit terminée, ou si la composition est supprimée, car l'état pour lequel la composition était produite n'est plus d'actualité, ou si la composition n'est plus nécessaire pour toute autre raison. Si l'instance deRememberObserverqui suit la recommandation de référence unique ci-dessus suit une ressource externe,onForgottenetonAbandonedindiquent chacun que la ressource n'est plus nécessaire. Si l'objet suit le travail démarré ou les ressources allouées dansonRemembered,onAbandonedpeut être ignoré, car il ne sera pas appelé sionRememberedest appelé. (I02c36)Changement de nom : TransformedText.transformedText devient TransformedText.text.
- Reclassement de TransformedText, qui n'est plus une classe de données. (Ie672a)
Reclassement des classes suivantes, qui ne sont plus des classes de données :
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
Suppression des méthodes expérimentales monotonicFrameAnimationClockOf. (Ib753f, b/170708374)
Abandon des méthodes de coordonnées globales, remplacées par de nouvelles méthodes de coordonnées relatives aux fenêtres. (Iee284)
Veuillez utiliser ImeAction.None au lieu d'ImeAction.NoAction.
- Veuillez utiliser ImeAction.Default au lieu d'ImeAction.Unspecified. (Ie1bcc)
Reclassement de FocusRequester.createRefs, marqué comme expérimental car susceptible de changer. (I2d898, b/177000821)
Changements de nom : SemanticsPropertyReceiver.hidden devient invisibleToUser avec le marquage @ExperimentalComposeUiApi. AccessibilityRangeInfo devient ProgressBarRangeInfo et stateDescriptionRange devient progressBarRangeInfo. AccessibilityScrollState devient ScrollAxisRange, horizontalAccessibilityScrollState devient horizontalScrollAxisRange et verticalAccessibilityScrollState devient verticalScrollAxisRange. (Id3148)
Remplacement de VisualTransformation par une interface fonctionnelle. (I3bba4)
Mise à profit de TestCoroutineDispatcher dans les tests. (I532b6)
Suppression de PointerInputData et modification de PointerInputChange, qui récupère tous les champs de PointerInputData. Reclassement de PointerInputEvent et PointerInputEventData comme internes, car ils ne sont utilisés dans aucune API publique. (Ifff97, b/175142755)
Changement de nom : TextInputService.onStateUpdated devient updateState. (Id4853)
Suppression de displaySize, que nous vous invitons à éviter. En règle générale, il est préférable d'utiliser au minimum la taille onRoot() ou celle de la fenêtre. (I62db4)
Version 1.0.0-alpha10
13 janvier 2021
Publication d'androidx.compose.foundation:foundation:1.0.0-alpha10 et androidx.compose.foundation:foundation-layout:1.0.0-alpha10. Liste des commits de la version 1.0.0-alpha10
Modifications apportées à l'API
- Reclassement de ImeOptions et KeyboardOptions, qui ne sont plus des classes de données. (I3c898, b/168684531)
- Modifications apportées à l'API VisualTransformation :
- Changement de nom : OffsetMap devient OffsetMapping.
- Changement de nom : OffsetMapping.identityOffsetMap devient OffsetMapping.Identity.
- Reclassement de PasswordTransformation, qui n'est plus une classe de données.
- Déplacement de OffsetMapping vers son propre fichier.
- (I0bdf3)
- Modifications de l'API EditOperations :
- Changement de nom : EditOperation devient EditCommand.
- Ajout du suffixe Command pour les implémentations concrètes de EditOperation.
- Reclassement des EditCommand, qui ne sont plus des classes de données.
- Changement de nom : la fonction EditOperation.process devient applyTo.
- Changement de nom : InputEventListener devient InputEventCallback.
- (I0a366)
- Mise à jour de Velocity, qui réunit désormais des composants et des opérations mathématiques. (Ib0447)
- Changement de nom : @ExperimentalTesting devient @ExperimentalTestApi pour être cohérent avec les annotations d'API expérimentales similaires. (Ia4502, b/171464963)
- Ajout de la méthode expérimentale stickyHeader pour LazyColumn/LazyRow. (I0a81d)
- Changement de nom : Color.useOrElse() devient Color.takeOrElse(). (Ifdcf5)
- Abandon de TestUiDispatcher. Utilisez Dispatchers.Main à la place. (Ic171f, b/175385255)
- Ajout de Toggle à Strings.kt dans Foundation. (I4a5b7, b/172366489)
- Déplacement de NativeClass vers le module d'interface utilisateur, avec reclassement comme interne. Mise à jour des utilisations de nativeClass dans les implémentations d'égalité, afin d'utiliser "is MyClass" à la place. (I4f734)
- Abandon de FlowRow et FlowColumn. Veuillez utiliser une mise en page personnalisée à la place. (I09027)
- Abandon de Modifier.focus() et Modifier.focusRequester(). Utilisez Modifier.focusModifier() et Modifier.focusReference() à la place. (I75a48, b/175160751, b/175160532, b/175077829)
- Introduction de SelectionRegistrar.notifySelectableChange pour notifier les mises à jour du Selectable au SelectionManager. (I6ff30, b/173215242)
- Remplacement de
fun Dp.isFinite()par unval Dp.isFinite. (I50e00) - Changement de nom : Constraints#satisfiedBy devient isSatisfiedBy. (I9cf5c)
- Ajout des propriétés isSpecified, isUnspecified et useOrElse pour les classes inline dont la constante est Unspecified. (I93f7b, b/174310811)
Correction de bugs
- Ajout d'une API basée sur la coroutine
Animatable, qui garantit l'exclusivité mutuelle de ses animations. Ajout de DecayAnimationSpec pour prendre en charge les animations de décomposition multidimensionnelle. (I820f2, b/168014930) - Prise en charge des champs de texte désactivés et en lecture seule. (I35279, b/171040474, b/166478534)
- Remplacement de
animate()paranimateAsState(), qui renvoieState<T>au lieu deT. Cela permet d'améliorer les performances, car le champ d'invalidation peut être réduit à l'endroit où la valeur State est lue. (Ib179e) - Ajout d'une API de rôle Semantics, et de Role en tant que paramètre des éléments SemanticsModifier pouvant être cliqués, sélectionnés ou activés/désactivés. Modification de Modifier.progressSemantics, afin que le rendre utilisable par Slider. (I216cd)
- Mise à jour du keyEvent natif, désormais accessible via keyEvent.nativeKeyEvent. (I87c57, b/173086397)
Version 1.0.0-alpha09
16 décembre 2020
Publication d'androidx.compose.foundation:foundation:1.0.0-alpha09 et d'androidx.compose.foundation:foundation-layout:1.0.0-alpha09. Liste des commits de la version 1.0.0-alpha09
Modifications apportées à l'API
Ajout de l'interface Scrollable.
StateState et LazyListState sont désormais considérés comme des types courants, ce qui permet de mettre en œuvre un défilement personnalisé pour les deux types.
smoothScrollBy est également déplacé vers une fonction d'extension de Scrollable. (I2153b)
Ajout de LazyVerticalGrid. (I17267, b/162213211)
Abandon de LazyColumnFor, LazyRowFor, LazyColumnForIndexed et LazyRowForIndexed. Utilisez LazyColumn et LazyRow à la place. (I5b48c)
Changement de nom : pour les API d'entrée de pointeur de suspension, HandlePointerInputScope devient AwaitPointerEventScope et handlePointerInput() devient awaitPointerEventScope(). (Idf0a1, b/175142755)
Ajout de LazyListState.layoutInfo pour exposer la liste des tailles et des décalages des éléments actuellement visibles. (If8678, b/170472532).
Suppression de l'annotation ExperimentalPointerInput. (Ia7a24)
Prise en charge de InteractionState par TextFields. (I61d91)
Ajout du paramètre reverseLayout à LazyColumn/Row. Avec la valeur
true, les éléments sont composés de bas en haut etLazyListState.firstVisibleItemIndex == 0signifie que le premier élément se trouve en bas. (I552ae, b/166589935)Ajout du paramètre verticalArrangement à LazyColumn. Ajout du paramètre horizontalArrangement à LazyRow. Arrangement permet d'espacer les éléments et de définir leur disposition lorsqu'ils ne sont pas assez nombreux pour occuper toute la taille minimale. (Icf79a, b/170394300)
Mise à jour de detectMultitouchGestures, qui utilise désormais un rappel avec des paramètres combinés de centroïde, panoramique, zoom et rotation. (Ie6e1c)
Déplacement de ContentDrawScope vers le module ui-graphics, où se trouve DrawScope. (Iee043, b/173832789)
Correction de bugs
- Mise à jour des lambdas dans les modificateurs de décalage, qui renvoient désormais IntOffset plutôt que Float. (Ic9ee5, b/174137212, b/174146755)
Suppression de SlotTable, SlotReader et SlotWriter de l'API publique. Précédemment marqués comme InternalComposeAPI, ces éléments sont désormais internes pour le module Compose.
Ajout de CompositionData et CompositionGroup comme substituts que l'API ui-tooling peut utiliser afin d'extraire des informations de composition. Ces éléments sont publics, mais ne sont pas destinés à être utilisés en dehors de l'API ui-tooling, car ils fournissent des informations brutes que cette API interprète. (I31a9c)
Refactorisation de ShaderBrush pour créer en différé une instance de nuanceur lorsque les informations de dimensionnement de l'environnement de dessin sont disponibles. Cette option est utile pour définir les dégradés qui occupent complètement l'espace délimité d'un composable au moment de la composition, sans implémentations personnalisées de DrawModifier.
Abandon des API de constructeur de fonctions de dégradés, à remplacer par des méthodes de fabrique sur un objet Gradient. (I511fc, b/173066799)
Abandon de Modifier.focusObserver. Utilisez Modifier.onFocusChanged ou Modifier.onFocusEvent à la place. (I30f17, b/168511863, b/168511484)
Reclassement de l'API de saisie automatique, désormais expérimentale (nécessite une activation). (I0a1ec)
Ajout de déclarations de déstructuration pour créer des instances FocusRequester. (I35d84, b/174817008)
Changement de nom : accessibilityLabel devient contentDescription et accessibilityValue devient stateDescription. (I250f2)
Introduction de plusieurs fonctions dans SelectionRegistrar. Changement de nom : onPositionChange devient notifyPositionChange. (Ifbaf7)
Reclassement de AndroidOwner, désormais interne. (Ibcad0, b/170296980)
Ajout d'une fonction infiniteRepeatable pour créer un InfiniteRepeatableSpec. (I668e5)
Mise à jour de l'interface
Applierpour simplifier la construction d'arborescences de bas en haut plutôt que de haut en bas.Changement de nom : la méthode
insert()devientinsertTopDown().Ajout d'une méthode
insertBottomUp().Un applicateur insère des nœuds dans l'arborescence modifiée à l'aide de
insertTopDown()ou deinsertBottomUp(), selon leur performance.Il est beaucoup plus efficace de construire certaines arborescences, telles que
LayoutNodeetView, de bas en haut plutôt que de haut en bas. Avant ce changement, l'implémentation ascendante exigeait une pile d'insertions, qui devait être copiée sur chaque applicateur nécessitant une construction ascendante pour améliorer les performances. Avec cette modification,ApplierécraseinsertBottomUp()pour créer une arborescence de bas en haut ouinsertTopDown()pour construire l'arborescence de haut en bas. (Icbdc2)Ajout de l'API painterResource pour gérer le chargement opaque des objets Painter à partir de formats d'éléments rastérisés (tels que PNG) ou de drawables vectoriels. Les consommateurs n'ont plus à déterminer le type d'élément à l'avance et peuvent appeler cette méthode pour obtenir un objet Painter à utiliser dans des composables d'image ou des modificateurs Painter. (I2c703, b/173818471)
Ajout d'une fonction de fabrique buildAnnotatedString pour créer une AnnotatedString. Abandon de la fonction de constructeur annotatedString. (Idfe0b)
Version 1.0.0-alpha08
2 décembre 2020
Publication d'androidx.compose.foundation:foundation:1.0.0-alpha08 et androidx.compose.foundation:foundation-layout:1.0.0-alpha08. Liste des commits de la version 1.0.0-alpha08
Modifications apportées à l'API
- Suppression du paramètre
maxLinesdeCoreTextField. Si vous souhaitez limiter la hauteur du champ de texte en fonction du nombre de lignes, utilisezBasicTextFieldà la place. (Iec002) - Changement de nom et modification des méthodes
await*TouchSlop()pour ne pas détecter le pointeur vers le bas, renommées*OrCancellation. Le paramètreorientationLockn'est plus nécessaire. (Ie96e1) - Ajout d'une vérification lint pour l'attribution d'un nom et d'une position au paramètre lambda composable, afin de confirmer la cohérence avec les consignes Compose.
Nous avons également migré certaines API utilisant
childrencomme nom de lambda de fin verscontent, conformément à la vérification lint et aux consignes. (Iec48e) - Déplacement des API
foundation:foundation-textversfoundation:foundation. La structure du package reste inchangée. (Id3eb2). - Ajout d'un détecteur de gestes multipoint, avec fonctions d'assistance pour détecter la rotation, le zoom et le défilement panoramique. (Ic459d)
- Ajout d'une nouvelle API de suspension des entrées du pointeur pour les détecteurs de gestes de déplacement, comprenant le verrouillage de l'orientation. (Icef25)
- Changement de nom : VectorAsset devient ImageVector ; déplacement de VectorAsset vers Builder en tant que classe interne d'ImageVector, conformément aux consignes relatives à l'API. Ajout du typealias de VectorAssetBuilder à ImageVector.Builder pour la compatibilité. (Icfdc8)
- Changement de nom : ImageAsset et les méthodes associées deviennent ImageBitmap. (Ia2d99)
- Déplacement des propriétés sémantiques de Foundation vers UI. (I6f05c)
Ajout d'API de défilement basées sur coroutine :
Ajout de LazyListState.snapToItem et LazyListState.smoothScrollBy, ainsi que des API de niveau inférieur pour le contrôle du défilement. Ces API fournissent une interface suspensive qui contrôle et attend la fin du défilement avant son renvoi. (Ie5642)
Ajout d'un paramètre singeLine dans BasicTextField, TextField et OutlinedTextField. Définissez ce paramètre sur "true" pour transformer le champ de texte en une seule ligne à faire défiler horizontalement. (I57004, b/168187755)
Ajout des détecteurs de geste pour l'appui, le double appui, l'appui prolongé et l'indication de pression avec la nouvelle entrée suspensive de pointeur. Nous avons également ajouté quelques utilitaires pour permettre aux développeurs d'écrire plus facilement leurs propres détecteurs de gestes. (I00807)
Ajout de Modifier.focusable dans Foundation. Utilisez cette option pour ajouter un comportement sélectionnable à un composant, avec une sémantique et une accessibilité correctes. (I41eb9, b/152525426, b/162865824)
Suppression des API devenues obsolètes. Utilisez BorderStroke à la place de Border, désormais supprimé. Utilisez Modifier.border à la place de Modifier.drawBorder, désormais supprimé. Utilisez Modifier.align à la place de Modifier.gravity, désormais supprimé. Utilisez Box à la place de Stack, désormais supprimé. (I32c2b, b/172470874)
Changement de nom : AbsoluteArrangement devient Arrangement.Absolute. (If26f2)
Correction de bugs
- Déplacement des API DrawModifier du package androidx.compose.ui vers le package androidx.compose.ui.draw. Création d'un fichier DrawModifierDeprecated.kt pour inclure des méthodes d'assistance/typealiases afin de faciliter la migration des API obsolètes vers les API actuelles. (Id6044, b/173834241)
- Changement de nom : Modifier.drawLayer devient Modifier.graphicsLayer. Mise à jour des classes associées vers GraphicsLayer conformément aux commentaires concernant l'API. (I0bd29, b/173834241)
- Suppression de
<T>de la déclaration de SubcomposeLayout. Vous pouvez désormais l'utiliser sans spécifier de type. (Ib60c8) - Mise à jour des champs Uptime et Position de PointerInputData, désormais non nullables. (Id468a)
- Mise à jour de MaterialTheme, qui définit désormais les couleurs appropriées pour les poignées et l'arrière-plan de sélection. Les applications non Material peuvent utiliser manuellement AmbientTextSelectionColors pour personnaliser les couleurs utilisées pour la sélection. (I1e6f4, b/139320372, b/139320907)
- Changement de nom : le paramètre d'alignement de Box devient contentAlignment. (I2c957)
- Changement de nom : les modificateurs offsetPx deviennent offset, et acceptent désormais les paramètres lambda au lieu de State. (Ic3021, b/173594846)
- Ajout de WindowManager.isWindowFocused pour vérifier si la fenêtre hôte est active, et de WindowFocusObserver, qui fournit un rappel onWindowFocusChanged. (I53b2a, b/170932874)
- Ajout d'un paramètre resetInput à TextInputService#onStateUpdated. (I3e8f5, b/172239032, b/171860947)
- Modifications apportées à l'API TextFieldValue :
- TextFieldValue.composition est désormais en lecture seule.
- Suppression de l'exception générée en cas de plage de sélection non valide. (I4a675, b/172239032)
- Abandon des Ambients utilisant le suffixe
Ambient, remplacés par de nouvelles propriétés utilisant le préfixe Ambient, conformément aux conventions des autres Ambiants et des consignes relatives aux API de Compose. (I33440) - Ajout d'un wrapper Android Typeface. Vous pouvez charger une police de caractères Android via la fonction
typeface(par exemple,typeface(Typeface.DEFAULT)).typefaceFromFontFamily()a été renommétypeface(). (I52ab7) - Ajout d'une vérification lint pour contrôler si les fabriques de modificateur utilisent
androidx.compose.ui.composed {}en interne, au lieu d'être marquées comme@Composable. (I3c4bc) - Ajout d'une vérification lint pour contrôler si les fonctions de fabrique de modificateurs sont définies comme des extensions de Modifier, de sorte qu'elles puissent être enchaînées de façon fluide. (I07981)
- Changement de nom : l'argument sémantique mergeAllDescendants devient mergeDescendants. (Ib6250)
- Reclassement du contrôle du temps dans les tests (TestAnimationClock et ses utilisations), désormais expérimental. (I6ef86, b/171378521)
- Suppression de l'ancien module ui-test et ses bouchons. (I3a7cb)
- Changement de nom : TextUnit.Inherit devient TextUnit.Unspecified pour plus de cohérence avec les autres unités. (Ifce19)
- Mise à jour de l'interface Alignment, désormais fonctionnelle. (I46a07, b/172311734)
- Fusion du module
foundation:foundation-textavecfoundation:foundation. (Idac0f) - Abandon de place(Offset) et placeRelative(Offset). Utilisez des surcharges avec des décalages entiers à la place. (I4c5e7)
- Changement de nom : dans
LayoutIdParentData,iddevientlayoutId.Measurable.iddevientMeasurable.layoutId. (Iadbcb, b/172449643)
Version 1.0.0-alpha07
11 novembre 2020
Publication d'androidx.compose.foundation:foundation:1.0.0-alpha07, androidx.compose.foundation:foundation-layout:1.0.0-alpha07 et androidx.compose.foundation:foundation-text:1.0.0-alpha07. Liste des commits de la version 1.0.0-alpha07
Modifications apportées à l'API
- Prise en charge des fractions dans
Modifier.fillParentMaxSize[Width|Height]dans le champ d'application deLazyColumn/Row, comme pourModifier.fillMaxSize[Width|Height]. (I797e2, b/166586426) - Suppression de
KeyboardOptions.toImeOptionsde l'API publique. (Ic2e45) - Abandon d'AmbientTextStyle, ProvideTextStyle et AmbientContentColor dans Foundation. Utilisez les nouvelles versions disponibles dans la bibliothèque Material à la place. Pour les applications non Material, vous devez créer vos propres Ambients de thématisation spécifiques du système de conception, qui pourront être consommés dans vos propres composants. (I74acc, b/172067770)
- Abandon de foundation.Text, remplacé par material.Text. Pour obtenir une API de texte basique non catégorique, qui ne consomme aucune valeur de thème, reportez-vous à androidx.compose.foundation.BasicText. (If64cb)
- Ajout de maxLines à TextFields. (Ib2a5b)
- Mise à jour de TextFields, qui accepte désormais KeyboardOptions. (Ida7f3)
- Ajout de KeyboardOptions, à utiliser dans TextFields. (I9ca32)
- Ajout de BasicText en tant qu'API non spécifique de la conception pour le texte, parallèlement à BasicTextField. (I28268)
- Suppression de l'annotation ExperimentalLazyDsl. Vous pouvez désormais utiliser LazyColumn/LazyRow sans ajouter @OptIn. (Idab7a, b/166584730).
- Abandon de BaseTextField. Utilisez plutôt BasicTextField. (I896eb)
- Ajout de BasicTextField en remplacement de CoreTextField et BaseTextField. (Id4cea)
- Suppression de LazyColumnItems/LazyRowItems, devenus obsolètes. (I1d8a8)
- Suppression des composables permettant de dimensionner les mesures intrinsèques, qui étaient devenus obsolètes. (I18537, b/171811496)
- Changement de nom : relativePaddingFrom devient paddingFrom. Ajout d'un modificateur paddingFromBaseline pour faciliter la spécification des distances entre les limites de la mise en page et la ligne de base d'un texte. (I0440a, b/170633813)
- Ajout du paramètre matchHeightConstraintsFirst au modificateur aspectRatio. Il permet de demander au modificateur de chercher les contraintes de hauteur avant d'appliquer les contraintes de largeur. (Ie7c43, b/155290593)
- Suppression de DpConstraints, devenu obsolète. (I87884, b/171702471)
Correction de bugs
- Introduction de la classe inline ScaleFactor pour représenter indépendamment les facteurs de scaling des axes horizontal et vertical, afin de prendre en charge les cas de scaling non uniforme.
- Ajout de la méthode computeScaleFactor à ContentScale.
- Ajout de ContentScale.FillBounds pour effectuer un scaling non uniforme afin d'étirer les limites src et d'occuper entièrement la destination.
- Ajout de méthodes d'opérateur pour calculer les paramètres ScaleFactor avec des paramètres Size.
- (Ic96a6, b/172291582)
- Déplacement de captureToBitmap vers captureToImage. (I86385)
- Reclassement de CoreText, désormais marqué comme @InternalTextApi. Utilisez BasicText à la place. (I6aaeb)
- Changement de nom : KeyboardOptions devient ImeOptions. (I82f36)
- Déplacement de KeyboardType et ImeAction vers KeyboardOptions. (I910ce)
- Reclassement de CoreTextField, désormais marqué comme @InternalTextApi. Utilisez BasicTextField à la place. (Ie2469)
- Suppression de l'annotation ExperimentalSubcomposeLayoutApi. SubcomposeLayout peut désormais être utilisé sans ajouter @OptIn. (I708ad)
- Introduction du module ui-test-junit4. (Ib91f8)
- Mise à jour de l'API Icon, qui accepte désormais Color.Unspecified en tant que teinte possible pour dessiner l'élément ou l'objet Painter fourni sans ColorFilter. Auparavant, lorsque vous essayiez d'ignorer la teinture avec Color.Unspecified, une couleur transparente était appliquée. Par conséquent, rien n'était affiché. (I049e2, b/171624632)
- Suppression de MeasureResult dans MeasureScope. (Ibf96d, b/171184002)
- Déplacement de plusieurs symboles liés à la mise en page depuis androidx.compose.ui vers androidx.compose.layout.ui. (I0fa98, b/170475424)
- Déplacement de androidx.ui.test vers androidx.compose.ui.test. (I9ffdb)
- Déplacement de FirstBaseline et LastBaseline vers le package androidx.compose.ui.layout. (Ied2e7)
- Ajout de SelectionContainer sans le rappel. (Ibfadb)
- Ajout de Tests pour les positions des poignées de sélection dans SelectionContainer. (Ie93db)
- Ajout de l'option IME de correction automatique de la saisie clavier. (I57b8d)
Version 1.0.0-alpha06
28 octobre 2020
Publication d'androidx.compose.foundation:foundation:1.0.0-alpha06, androidx.compose.foundation:foundation-layout:1.0.0-alpha06 et androidx.compose.foundation:foundation-text:1.0.0-alpha06. Liste des commits de la version 1.0.0-alpha06
Modifications apportées à l'API
- Déplacement de androidx.compose.foundation.Icon vers androidx.compose.material.Icon. Si vous ne souhaitez pas utiliser la bibliothèque Material, vous pouvez également utiliser le composant Image ou Modifier.paint() avec un Painter. (I9f622)
- Ajout d'interactionState à Modifier.scrollable, ScrollableColumn et LazyColumnFor. (I81566, b/169509805)
- Ajout de alignByBaseline à RowScope, alignWithSiblings devient alignBy. (I06503, b/170628732)
- Conversion de Box en fonction inline. (Ibce0c, b/155056091)
- Ajout de maxLines à CoreTextField. (Ibee58, b/143687793)
- Ajout de softwrap à CoreTextField. (I21a4b)
Correction de bugs
- Abandon de VectorPainter, à remplacer par rememberVectorPainter pour mieux indiquer que l'API composable exploite "remember" en interne pour conserver les données entre les compositions. (Ifda43)
- Prise en charge des transitions dans ComposeTestRule. L'option permettant d'activer le curseur clignotant dans ComposeTestRule a été supprimée. (If0de3)
- Ajout d'une option de clavier sur une seule ligne à CoreTextField. (I72e6d)
- Changement de nom : l'API Radius devient CornerRadius pour mieux refléter son utilisation dans Compose. La documentation a été mise à jour pour indiquer que les valeurs de rayon négatives sont limitées à zéro. (I130c7, b/168762961)
- Prise en charge de la spécification d'informations sur l'outil d'inspection dans le modificateur composé. (Idee08, b/163494569)
- Ajout de l'option IME KeyboardCapitalization. (I8ac38)
- Correction du positionnement du handle Rtl. (I6e1e0)
- Modification destructive : la valeur renvoyée a été supprimée de PointerInputFilter.onPointerEvent(...), car les données de consommation sont la seule valeur qui doit pouvoir être modifiée dans les événements de pointeur. Désormais, au lieu de renvoyer les données de PointerInputFilter.onPointerEvent(...), vous pouvez simplement modifier les données de consommation des PointerEvents transmis. (I6acd0)
- Ajout de l'option SelectAll dans le menu de sélection. (Ief02b)
Version 1.0.0-alpha05
14 octobre 2020
Publication d'androidx.compose.foundation:foundation:1.0.0-alpha05, androidx.compose.foundation:foundation-layout:1.0.0-alpha05 et androidx.compose.foundation:foundation-text:1.0.0-alpha05. Liste des commits de la version 1.0.0-alpha05
Modifications apportées à l'API
- Mise à jour de CoreTextField, désormais compatible avec la fonctionnalité de curseur. (Id23aa)
Abandon des API contentColor() et currentTextStyle() APIs, remplacées respectivement par les Ambients AmbientContentColor et AmbientTextStyle. Vous pouvez accéder à la valeur actuelle en utilisant
.currentsur la propriété Ambient, comme avec n'importe quelle autre Ambient. Cette modification offre plus de cohérence et évite d'avoir plusieurs méthodes aboutissant au même résultat. De plus, certaines propriétés Ambient ont été renommées pour mieux décrire leur fonction, comme suit :- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
Correction de bugs
- Changement de nom : Color.Unset devient Color.Unspecified pour normaliser les valeurs sentinelles des classes inline et assurer la cohérence avec les autres classes inline. (I97611, b/169797763)
- Ajout d'actions d'accessibilité pour copier, coller et couper. (I6db4f)
- Introduction de TextOverflow.None. Si le dépassement est défini sur "None", Text ne le gère plus et renvoie sa taille réelle à LayoutNode. (I175c9, b/158830170)
- Mise à jour des paramètres Size.Unspecified pour utiliser Float.NaN au lieu de Float.POSITIVE_INFINITY. Mise à jour de l'implémentation de Painter pour vérifier les tailles Size.Unspecified et non finies. (I95a7e)
- Ajout du module Paging de Compose et de l'intégration de la pagination. (Ib85da)
- Modification de LazyListScope, qui peut recevoir désormais des valeurs nullables. (I1765b)
- Changement de nom : OnPositionedModifier devient OnGloballyPositionedModifier et onPositioned() devient onGloballyPositioned(). (I587e8, b/169083903)
- Ajout d'exemples pour LazyColumn/Row. (Idc16d)
- Correction des méthodes items et itemsIndexed afin d'autoriser emptyList. (I06647)
- Ajout d'un DSL pour spécifier les informations de l'outil d'inspection. (Ic9a22)
- Déplacement de LongPress vers Text. (Iff2bc)
- Désactivation de Selection dans Text, avec une démo. (Ie7e97)
- Prise en charge de la conversion de AnnotatedString en SpannableString pour améliorer l'accessibilité. (Ief907)
- Suppression de
PointerInputFilter.onPointerInput(...). UtilisezPointerInputFilter.onPointerEvent(...)à la place. (I6f04a)
Version 1.0.0-alpha04
1er octobre 2020
Publication d'androidx.compose.foundation:foundation:1.0.0-alpha04, androidx.compose.foundation:foundation-layout:1.0.0-alpha04 et androidx.compose.foundation:foundation-text:1.0.0-alpha04. Liste des commits de la version 1.0.0-alpha04
Modifications apportées à l'API
- Changement de nom : Stack devient Box. L'ancienne version foundation.Box sera abandonnée au profit de la nouvelle dans compose.foundation.layout. Le nouveau comportement de Box consiste à empiler les enfants lorsqu'il y en a plusieurs. L'ancien comportement était comparable à celui de Column. (I94893, b/167680279)
- Abandon des paramètres de décoration de Box. Si vous souhaitez ajouter des décorations/marges intérieures à votre Box, utilisez plutôt des modificateurs tels que Modifier.background, Modifier.border et Modifier.padding. (Ibae92, b/167680279)
- Ajout d'une classe LazyListState, qui permet d'observer et de contrôler la position de défilement des composants LazyRow et LazyColumn. Les instances peuvent être créées à l'aide de rememberLazyListState() et transmises au paramètre state du composant. Cette version initiale permet d'observer le premier élément visible et les décalages. (Ic7cb7, b/159307669)
- Mise à jour de la position et du décalage de défilement pour les listes différées, désormais enregistrés et restaurés suite à la recréation de l'activité. (Ie045f, b/166589058).
- Ajout d'une action sémantique de clic long. (I6281b, b/156468846)
- Ajout de l'utilitaire Mutatormutex afin de conserver un seul mutateur de l'état partagé au fil du temps et d'annuler les mutateurs en conflit en fonction de la priorité. (I3f975)
- Annotation de rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled et textInputServiceFactory avec @VisibleForTesting, pour les reclasser en API interne et masquer leur kdoc. (I554eb, b/168308412)
- Suppression du paramètre inlineContent dans Text avec "String" en entrée. Il ne sera pas utilisé, car inlineContent doit fonctionner avec AnnotatedString. (Ief403)
- Suppression des API Arrangement personnalisées, devenues obsolètes. (Ic576d, b/168297922, b/168297923)
- Ajout du paramètre
unboundedaux modificateurs wrapContentSize. Il permet de mesurer l'élément de mise en page avec des contraintes maximales infinies. (I77951, b/158559319) - Suppression de la prise en charge des importations statiques pour le contenu des champs d'application des mises en page (par exemple, alignWithSiblings dans RowScope). Utilisez le champ d'application explicite à la place :
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, b/166760797)
Correction de bugs
- Mise à jour de nombreuses API Graphics :
- Mise à jour des API de transformation du scaling et de la rotation, afin de consommer un seul paramètre Offset pour représenter les coordonnées du point de pivot, au lieu de paramètres flottants distincts pour les coordonnées abscisse-ordonnée dans DrawScope et DrawTransform.
- Suppression des méthodes Rect.expandToInclude et Rect.join.
- Mise à jour de la documentation concernant Radius afin de mentionner les ovales en plus des elliptiques.
- Ajout d'une documentation indiquant que le constructeur public de la classe inline Radius ne doit pas être appelé directement. En revanche, les objets Radius doivent être instanciés via leurs constructeurs de fonction.
- Suppression des API RoundRect permettant d'interroger les propriétés topRight, bottomRight, bottomCenter, etc.
- Abandon de Rect.shift, à remplacer par Rect.translate.
- Suppression des API RoundRect.grow et Rect.shrink.
- Changement de nom : RoundRect.outerRect devient Rect.boundingRect.
- Suppression des méthodes RoundRect.middleRect/tallMiddleRect/wideMiddleRect et Rect.isStadium.
- Changement de nom : RoundRect.longestSide devient RoundRect.maxDimension.
- Changement de nom : RoundRect.shortestSide devient RoundRect.minDimension.
- Conversion de la fonction RoundRect.center en propriété.
- Mise à jour du constructeur RoundRect pour consommer les propriétés de Radius plutôt que des paramètres individuels pour les valeurs abscisse-ordonnée du rayon.
- Suppression des API Size qui supposaient une forme rectangle dont l'origine était 0,0.
- Ajout d'une API de destruction à Radius.
- Migration de diverses fonctions d'extension RoundRect, converties en propriétés.
- (I8f5c7, b/168762961)
- Optimisation des performances du défilement LazyColumnFor/LazyRowFor en évitant les recompositions inutiles lors de chaque défilement. (I64f65, b/168293643, b/167972292, b/165028371)
- Correction du plantage dans LazyColumnFor/LazyRowFor qui se produisait après avoir fait défiler puis modifié des éléments. Nous avons mis en œuvre le défilement automatique vers le haut lorsque l'élément précédemment affiché est supprimé. Désormais, les espaces vides ne s'affichent plus. (I220ab, b) /161480164, b/167855468
- Mise à jour afin d'empêcher l'imbrication de composants à défilement dans les mêmes conteneurs de direction, par exemple ScrollableContainer et LazyColumnFor. Ce comportement n'était jamais accepté, et il interrompait les glissements d'un geste vif ainsi que la composition des éléments de LazyColumnFor. (I6e101)
- Mise à jour de nombreuses API Graphics :
- Mise à jour des API DrawScope avec des méthodes de transformation axées sur les champs d'application pour indiquer que la transformation n'est appliquée qu'au sein du rappel et supprimée ensuite.
- Mise à jour de la documentation concernant clipPath, pour faire référence à Path plutôt qu'au rectangle arrondi.
- Correction des espacements dans la documentation pour le paramètre de droite dans clipPath.
- Changement de nom : DrawScope.drawCanvas devient drawIntoCanvas. Le paramètre "size" a été supprimé.
- Changement de nom : les paramètres dx/dy de la méthode d'encart deviennent "horizontal" et "vertical".
- Ajout d'une surcharge d'encart avec la même valeur d'encart pour les quatre limites.
- Suppression de la documentation concernant la méthode d'encart selon laquelle l'encart serait appliqué aux quatre côtés.
- Mise à jour de la documentation concernant la classe Rect.
- Mise à jour des commentaires sur les paramètres Rect pour correspondre au style kdoc.
- Suppression de Rect.join et Rect.expandToInclude.
- Création d'une surcharge pour Rect.translate(offset). Abandon de Rect.shift.
- (If086a, b/167737376)
- Ajout d'AccessibilityScrollState aux propriétés sémantiques. (Ifeda9)
- Conversion de TextRange en inline pour éviter la création d'objet. (Id034b)
- Suppression de ParagraphConstraints. La largeur est désormais transmise directement à Paragraph. (Ica712)
Version 1.0.0-alpha03
16 septembre 2020
Publication d'androidx.compose.foundation:foundation:1.0.0-alpha03, androidx.compose.foundation:foundation-layout:1.0.0-alpha03 et androidx.compose.foundation:foundation-text:1.0.0-alpha03. Liste des commits de la version 1.0.0-alpha03
Modifications apportées à l'API
- Changement de nom : InnerPadding devient PaddingValues. (I195f1, b/167389171)
- Changement de nom : les usages de la gravité ont été renommés "align" ou "alignment" dans les API Layout. (I2421a, b/164077038)
- Ajout d'un paramètre d'alignement à Stack, qui permet de spécifier l'alignement par défaut pour tous les éléments enfants Stack. (Ie80ca, b/164085265)
Correction de bugs
- Abandon de DpConstraints et des APIs qui l'utilisaient. (I90cdb, b/167389835)
- Changement de nom : dans
widthIn, le paramètreminWidthdevientminetmaxWidthdevientmax.preferredWidthIn,heightInetpreferredHeightInsont renommés sur le même principe. (I0e5e1, b/167389544) - Ajout d'onNode et d'autres méthodes globales sur ComposeTestRule, car les méthodes globales actuelles vont être abandonnées. (Ieae36)
- Correction de problèmes affectant les calculs de taille et de position dans GestureScope qui entraînaient, entre autres, des gestes de balayage non valides. (Iaf358, b/166589947)
- Déplacement de
createAndroidComposeRuleetAndroidInputDispatcher, deandroidx.ui.test.androidversandroidx.ui.test. (Idef08, b/164060572)
Version 1.0.0-alpha02
2 septembre 2020
Publication d'androidx.compose.foundation:foundation:1.0.0-alpha02, androidx.compose.foundation:foundation-layout:1.0.0-alpha02 et androidx.compose.foundation:foundation-text:1.0.0-alpha02. Liste des commits de la version 1.0.0-alpha02
Correction de bugs
- Marquage de TestUiDispatcher comme expérimental. (Iae99d, b/161247083)
Ajout de
ManualFrameClock.hasAwaiterspour déterminer si un élément attend un frame de cette horloge ; remplacement derunBlockingparrunWithManualClocklors de l'exécution de tests nécessitant un ManualFrameClock ; accès facilité au coordinateur d'UI principal pour vos tests avecTestUiDispatcher.Main.Exemple :
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
Version 1.0.0-alpha01
26 août 2020
Publication d'androidx.compose.foundation:foundation:1.0.0-alpha01, androidx.compose.foundation:foundation-layout:1.0.0-alpha01 et androidx.compose.foundation:foundation-text:1.0.0-alpha01. Liste des commits de la version 1.0.0-alpha01
Version 0.1.0-dev
Version 0.1.0-dev17
19 août 2020
Publication d'androidx.compose.foundation:foundation:0.1.0-dev17, androidx.compose.foundation:foundation-layout:0.1.0-dev17 et androidx.compose.foundation:foundation-text:0.1.0-dev17. Liste des commits de la version 0.1.0-dev17
Modifications apportées à l'API
- Ajout de la disposition spacedBy à Row et Column afin de permettre le positionnement des éléments enfants de mise en page selon un espacement fixe. La disposition aligned a également été ajoutée pour que les enfants de la mise en page puissent être positionnés côte à côte et alignés dans la ligne ou la colonne selon un Alignment. Les méthodes Arrangement.Vertical#arrange et Arrangement.Horizontal#arrange précédentes ont été abandonnées, et il ne sera plus possible d'écrire des dispositions personnalisées à l'avenir. (I6733d, b/161985975)
- Conversion de Offset en classe inline. (Iaec70)
- Suppression des rappels onFocusChanged de TextField. Utilisez Modifier.focusObserver à la place. (I51089, b/161297615)
- Abandon de Modifier.drawBorder. Utilisez Modifier.border à la place. Remplacement de la classe de données Border par BorderStroke. (I4257d, b/158160576)
- Suppression de VerticalScroller and HorizontalScroller. Utilisez ScrollableColumn/Row à la place. Suppression de Modifier.drawBackground. Utilisez Modifier.background à la place. (I73b0d, b/163019183)
- Suppression des modificateurs fillMax* marqués comme obsolètes dans LazyItemScope, car il est plus difficile d'ajouter correctement ces modificateurs pour les éléments qui ne sont pas des enfants directs de LazyColumnFor. (Ifa78d)
- Ajout de l'implémentation de LazyColumn/LazyRow en tant que DSL. (I93cc6)
- Conversion de Constraints en classe inline. (I88736)
- Ajout des modificateurs fillMaxWidth, fillMaxHeight et fillMaxSize afin de dimensionner une mise en page de sorte qu'elle occupe une fraction de l'espace disponible. (I945bb, b/161562591)
Correction de bugs
- Ajout d'un paramètre de modificateur à SelectionContainer. (I4aada, b/161487952)
- Ajout du lambda mergePolicy à SemanticsPropertyKey. Cela permet de définir une règle personnalisée pour la fusion de la sémantique mergeAllDescendants. La règle par défaut consiste à utiliser la valeur du parent si elle est déjà présente, et la valeur de l'enfant dans le cas contraire. (Iaf6c4, b/161979921)
- Changements de nom :
PlacementScope.placeAbsolute()devientPlacementScope.place(), tandis que le précédentPlacementScope.place()devientPlacementScope.placeRelative(). Par conséquent, la méthodePlacementScope.place()ne met plus automatiquement en miroir la position dans les contextes lus de droite à gauche. Si cette approche est souhaitée, utilisez plutôtPlacementScope.placeRelative(). (I873ac, b/162916675) - Suppression du composant FilledTextField, devenu obsolète. Veuillez utiliser TextField à la place pour obtenir l'implémentation Material Design du champ de texte rempli. (I5e889)
- Ajout du paramètre backgroundColor à LinearProgressIndicator et suppression de la marge intérieure interne de CircularProgressIndicator. Ajout de ProgressIndicatorConstants.DefaultProgressAnimationSpec, qui peut être utilisé comme AnimationSpec par défaut lors de l'animation de la progression entre les valeurs. (If38b5, b/161809914, b/161804677)
- Abandon du composable
state { ... }, à remplacer par des appels explicites àremember { mutableStateOf(...) }pour plus de clarté. Cette approche réduit la surface globale de l'API et le nombre de concepts liés à la gestion des états, et correspond au modèleby mutableStateOf()de délégation des propriétés de classe. (Ia5727) - Changement de nom : RRect devient RoundRect, pour mieux correspondre aux conventions de nommage de Compose. Des constructeurs de fonction similaires ont été créés, et les constructeurs de fonction RRect ont été supprimés. (I5d325)
- Suppression de onChildPositioned et OnChildPositionedModifier. Nous recommandons aux développeurs d'utiliser à la place onPositioned et OnPositionedModifier dans la mise en page enfant. (I4522e, b/162109766)
- Conversion de IntSize en classe inline. (I2bf42)
- Ajout de la fonctionnalité d'édition via un appui prolongé sur une zone vide. (Ib1e5b)
- Masquage de la barre d'outils flottante après avoir appuyé sur le texte. (If4525)
- Masquage de la barre d'outils flottante lors de la mise à jour de la sélection. (I8444c)
- Annulation de la sélection lors d'un floutage. (I781a2)
Version 0.1.0-dev16
5 août 2020
Publication d'androidx.compose.foundation:foundation:0.1.0-dev16, androidx.compose.foundation:foundation-layout:0.1.0-dev16 et androidx.compose.foundation:foundation-text:0.1.0-dev16. Liste des commits de la version 0.1.0-dev16
Modifications apportées à l'API
- Ajout de LazyItemScope pour le paramètre itemContent des listes Lazy. Il fournit des modificateurs pour remplir la taille maximale du parent, ce qui résout les cas où l'élément doit remplir la fenêtre d'affichage et où la méthode standard Modifier.fillMaxSize() ne fonctionne pas, car l'élément est mesuré avec des contraintes d'infinité. (Ibd3b2, b/162248854)
- Déplacement de Dialog vers UI. (I47fa6)
- Ajout de LazyColumnForIndexed/LazyRowForIndexed, des versions de LazyColumnFor/LazyRowFor qui fournissent un index et un élément dans itemCallback. Cela est utile si vous avez besoin de connaître l'index actuel, en plus de l'élément actuel. (I65ff3)
- Changement de nom : Modifier.deternimateProgress devient Modifier.progressSemantics. (I9c0b4)
- Changement de nom : LazyColumnItems devient LazyColumnFor. Changement de nom : LazyRowItems devient LazyRowFor. (I84f84)
- Ajout de plusieurs marques et annotations pour adhérer aux bonnes pratiques. (I66b20)
- Aplatissement du package foundation.shape.corner en foundation.share. (I46491, b/161887429)
- Ajout d'un paramètre de gravité de l'axe transversal pour LazyRowItems/LazyColumnItems. LazyRowItems/LazyColumnItems autorisent désormais l'encapsulation du contenu. (Ib39fc)
- Changement de nom : ZoomableState devient ZoomableController. Prise en charge des courbes personnalisées pour smoothScale. Les fonctionnalités
enabledetonZoomStartedont été ajoutées. (If8b8f) - Changements de nom : le composant Material FilledTextField devient TextField et le composant Foundation TextField devient BaseTextField afin de faciliter la découverte et l'utilisation de l'API souhaitée. (Ia6242, b/155482676)
- Suppression de AdapterList, devenu obsolète. Utilisez LazyColumnItems à la place. (I12b9b)
- Changement de nom : Modifier.drawBackground devient Modifier.background. (I13677)
- Suppression de l'ancien DSL ConstraintLayout. Changement de nom : ConstraintSet2 devient ConstraintSet. (If58d1, b/162450908)
- Ajout de Modifier.absoluteOffset() et Modifier.absoluteOffsetPx(). Contrairement aux modificateurs de décalage, les modificateurs de décalage absolu ne sont pas mis en miroir automatiquement dans un contexte de lecture de droite à gauche. (I3aa21)
- Conversion de
RowetColumnen fonctions inline, ce qui réduit considérablement la charge associée à leur utilisation. (I75c10)
Correction de bugs
- Correctifs généraux apportés aux API. (I077bc)
- Suppression de l'interface OffsetBase, qui n'était pas utilisée.
- Alignement des classes Offset et IntOffset pour que la surface de l'API soit cohérente.
- Changement de nom : IntOffset.Origin devient IntOffset.Zero pour assurer la cohérence avec l'API Offset.
- Migration de la méthode nativeCanvas de l'interface de Canvas pour permettre aux consommateurs de créer leurs propres instances de Canvas.
- Création de la classe bouchon EmptyCanvas pour refactoriser DrawScope en un paramètre non nul, au lieu de lateinit, et ainsi garantir la non-nullabilité du champ.
- Application de la casse Pascal dans le nom des énumérations ClipOp.
- Application de la casse Pascal dans le nom des énumérations FilterQuality.
- Application de la casse Pascal dans le nom des énumérations StrokeJoin.
- Application de la casse Pascal dans le nom des énumérations PointMode.
- Application de la casse Pascal dans le nom des énumérations PaintingStyle.
- Application de la casse Pascal dans le nom des énumérations PathFillType.
- Application de la casse Pascal dans le nom des énumérations StrokeCap.
- Mise à jour de l'implémentation de DrawCache pour cesser d'utiliser les paramètres lateinit.
- Mise à jour de DrawScope pour cesser d'utiliser la délégation Lazy pour les paramètres internes fillPaint et strokePaint.
- Mise à jour du composable Image pour éviter l'utilisation de Box et réduire la charge.
- Mise à jour de la classe Outline pour inclure les annotations @Immutable.
- Mise à jour de PathNode pour inclure des annotations @Immutable à chaque instruction du tracé.
- Mise à jour de la sous-composition de Vector pour supprimer les vérifications conditionnelles redondantes d'égalité, car Compose les gère déjà.
- Abandon des méthodes de constructeur associées à Rect, à remplacer par des constructeurs de fonction.
- Mise à jour des classes Brush et des constructeurs de fonctions avec les API @Immutable et @Stable.
- Application de la casse Pascal dans le nom de l'énumération VertexMode.
- Mise à jour de la méthode selectPaint de DrawScope pour écraser de façon conditionnelle les paramètres de trait, si ceux-ci ont été modifiés.
- Mise à jour de Size pour ajouter une API de déstructuration. UnspecifiedSize est renommé Unspecified, et les méthodes inutilisées ont été supprimées.
Ajout de MonotonicFrameAnimationClock, qui permet d'utiliser un MonotonicFrameClock en tant que AnimationClockObservable pour combler l'écart entre les nouvelles horloges basées sur des coroutines et les API qui utilisent toujours les anciennes horloges basées sur des rappels.
Mise à jour : ManualFrameClock est le nouvel équivalent de ManualAnimationClock. Il remplace MonotonicFrameClock. (I111c7, b/161247083)
Suppression de
SemanticsNodeInteraction.performPartialGesture. UtilisezSemanticsNodeInteraction.performGestureà la place. (Id9b62)Changement de nom :
SemanticsNodeInteraction.getBoundsInRoot()devientSemanticsNodeInteraction.getUnclippedBoundsInRoot(). (Icafdf, b/161336532)Mise à jour des API pour prendre en charge la lecture de droite à gauche. Ajout de LayoutDirectionAmbient, qui permet de lire et modifier la direction de la mise en page. Suppression de Modifier.rtl et Modifier.ltr. (I080b3)
Abandon de Modifier.plus. Utilisez Modifier.then à la place. La forme "then" offre un signal d'ordination plus fort et interdit les saisies de type
Modifier.padding().background() + anotherModifier, qui rompent la chaîne et sont plus difficile à lire. (Iedd58, b/161529964)Ajout de
isFocused()etisNotFocused()pour SemanticsMatcher. (I0b760)Ajout de RemeasurementModifier. Elle permet aux utilisateurs de mesurer de nouveau la mise en page de manière synchrone. Ce n'est généralement pas nécessaire, car la re-mesure ou la remise en page se font automatiquement, mais cette option est utilisée dans LazyColumnItems pendant le défilement. (I5f331, b/160791058)
Mise à jour d'isSystemInDarkTheme, qui tient toujours compte désormais du paramètre de thème sombre au niveau du système et ignore l'état du mode d'économie d'énergie sur les versions antérieures à Q, conformément aux dernières recommandations. (I0c10c)
Abandon d'OnChildPositioned. Utilisez OnPositioned sur l'enfant à la place. (I87f95, b/162109766)
Changement de nom : AndroidComposeTestRule devient createAndroidComposeRule. (I70aaf)
Ajout d'une action d'accessibilité pour obtenir TextLayoutResult. (I9d6e6)
Version 0.1.0-dev15
22 juillet 2020
Publication d'androidx.compose.foundation:foundation:0.1.0-dev15, androidx.compose.foundation:foundation-layout:0.1.0-dev15 et androidx.compose.foundation:foundation-text:0.1.0-dev15. Liste des commits de la version 0.1.0-dev15
Pour utiliser la version 0.1.0-dev15 de Compose, procédez comme suit :
Mise à jour des dépendances
- Pour utiliser la version
0.1.0-dev15de Compose, vous devez mettre à jour vos dépendances en fonction des nouveaux extraits de code présentés dans la section Déclarer des dépendances ci-dessus.
Modifications apportées à l'API
- Ajout du paramètre contentPadding dans LazyColumnItems/LazyRowItems, comme celui ajouté dans ScrollableColumn/ScrollableRow. Il permet d'ajouter une marge intérieure au contenu une fois qu'il a été rogné, ce qui est impossible via un simple paramètre de modificateur. Il permet également d'ajouter un espacement uniquement avant le premier élément ou après le dernier élément. (Ibc24e)
- Changement de nom : le rappel onFocusChange dans les champs de texte devient onFocusChanged. (Ida4a1)
- Abandon de VerticalScroller et HorizontalScroller. Utilisez ScrollableColumn et ScrollableRow pour une expérience intégrée avec le comportement et les paramètres de Column/Row. Utilisez Modifier.verticalScroll et Modifier.horizontalScroll pour contrôler ces aspects dans votre propre élément. ScrollerPosition a également été abandonné, au profit de ScrollState. (I400ce, b/157225838, b/149460415, b/154105299)
- Mise à jour des API Modifier.draggable et Modifier.scrollable, retravaillées. DragDirection a été supprimé en faveur d'Orientation. L'état requis pour le composant à défilement a été simplifié. ScrollableState a été renommé ScrollableController. (Iab63c, b/149460415)
- Mise à jour des propriétés sémantiques à valeur unique, qui utilisent désormais un style d'appel.
Par exemple, "semantics { hidden = true }" s'écrit désormais
semantics { hidden() }. (Ic1afd, b/145951226, b/145955412) - Mise à jour des tailles d'angle utilisées par RoundedCornerShape et CutCornerShape, qui peuvent désormais être supérieures à 50 %. (Id2340, b/160400213).
- Remplacement du paramètre ContentScale par défaut Inside par Fit pour le composable Image. L'objectif était d'obtenir le comportement de mise à l'échelle du Painter sous-jacent si la taille de la mise en page était supérieure à la taille intrinsèque du Painter tout en conservant les proportions. Ce comportement répond mieux au besoin de fournir des tailles fixes à Image sans affecter le comportement par défaut si la taille de ce composable est calculée uniquement à partir de la taille intrinsèque. (I40ae3, b/159838006)
- Mise à jour des API de niveau supérieur afin d'utiliser AnimationSpec au lieu d'AnimationBuilder pour clarifier le concept de spécification d'animation statique. – Amélioration du DSL de transition grâce à la suppression de l'exigence de lambda de créer des AnimationSpecs telles que tween et spring. Les paramètres de constructeur sont directement utilisés désormais. – Amélioration de la facilité d'utilisation générale d'AnimationSpec, qui permet d'utiliser des constructeurs plutôt que des compilateurs. – Utilisation d'entiers pour la durée et le retard de KeyFrames et Tween. Cela évite des opérations inutiles de conversion des types de données et de surcharger les méthodes (pour prendre en charge à la fois Long et Int). (Ica0b4)
- Suppression de Clickable. Utilisez Modifier.clickable à la place. (I84bdf)
- Ajout de LazyRowItems, l'équivalent de LazyColumnItems, mais pour le défilement horizontal. (Ibbcf7)
- Introduction d'API d'animation sans état de niveau inférieur. Elles décrivent les animations primitives sur lesquelles reposent les API de niveau supérieur, telles que animate() et @Composable Transition. (I63bf7)
- Abandon d'androidx.ui.foundation.TextFieldValue et androidx.ui.input.EditorValue, ainsi que des composables TextField, FilledTextField et CoreTextField, qui utilisaient le même type. Utilisez androidx.ui.input.TextFieldValue à la place. (I4066d, b/155211005)
- Remplacement de l'utilisation de IntPx par Int. Remplacement de IntPxPosition par IntOffset. Remplacement de IntPxSize par IntSize. (Ib7b44)
- Suppression de androidx.ui.foundation.shape.RectangleShape. Utilisez androidx.ui.graphics.RectangleShape à la place. (I94939, b/154507984)
- Standardisation de l'utilisation de la classe Size (au lieu de PxSize), afin de regrouper les différentes classes utilisées pour représenter les informations de dimensionnement. Cela présente les avantages d'une classe inline permettant d'exploiter un long pour réunir deux valeurs flottantes qui représentent la largeur et la hauteur. (Ic0191)
- Standardisation de l'utilisation de la classe Offset (au lieu de PxPosition), afin de regrouper les différentes classes utilisées pour représenter les informations de positionnement. Cela présente les avantages d'une classe inline permettant d'exploiter un long pour réunir deux valeurs flottantes qui représentent les valeurs de décalage abscisse-ordonnée. (I3ad98)
- Ajout de Modifier.zoomable pour la fonctionnalité pincer pour zoomer. (Id5d63)
- Abandon du composant Toggleable. Utilisez Modifier.toggleable à la place. (I35220, b/157642842)
- Abandon de MutuallyExclusiveSetItem. Utilisez Modifier.selectable à la place. (I02b47, b/157642842)
- Abandon de TestTag. Utilisez Modifier.testTag à la place. (If5110, b/157173105)
- Ajout du paramètre fontWeight dans Text, suite à une omission malencontreuse. (I56937)
- Remplacement des utilisations de la classe Px dans différentes classes de Compose, dans le cadre d'une refactorisation généralisée qui vise à ne plus utiliser que les types Dp et primitifs pour les paramètres de pixel. (I19d02)
- Mise à jour de VerticalScroller, qui fournit désormais directement Column. Mise à jour de HorizontalScroller, qui fournit désormais directement Row. (Ieca5d, b/157020670)
- Remplacement des utilisations de la classe Px dans différentes classes de Compose, dans le cadre d'une refactorisation généralisée qui vise à ne plus utiliser que les types Dp et primitifs pour les paramètres de pixel. (Iede0b)
- Ajout de Modifier.indication au package Foundation. Il permet d'afficher une indication de pression, de déplacement ou autre sur vos éléments interactifs personnalisés. (I8425f, b/155287131)
- Mise à jour de VerticalScroller et HorizontalScroller, désormais compatibles avec le défilement inversé lorsque isReversed défini sur ScrollerPosition. (I953bd)
- Prise en charge de l'ajout de composables dans la mise en page du texte. (I1373c)
- Regroupement des implémentations de CanvasScope, pour ne laisser que DrawScope et ContentDrawScope. CanvasScope est renommé DrawScope. Mise à jour de DrawScope afin d'implémenter l'interface Density et de fournir LayoutDirection. La sous-classe DrawScope de ContentDrawScope a été supprimée. Painter et PainterModifier ont été mise à jour, et ne maintiennent plus par eux-mêmes la propriété RTL, déjà fournie par DrawScope sans intervention manuelle. (I1798e)
- Suppression de l'API DrawBackground, devenue obsolète, remplacée par les API d'extension drawBackground sur Modifier. Nous avons refactorisé les implémentations Color, Brush et Paint de drawBackground afin de réduire les chemins de code et d'éviter de créer des modificateurs dans la composition. (I0343a)
- Mise à jour des API Compose de niveau supérieur, afin d'exposer CanvasScope au lieu de Canvas. Cela évite aux consommateurs d'avoir à gérer leurs propres objets Paint. Les consommateurs qui ont toujours besoin d'accéder à Canvas peuvent utiliser la méthode d'extension drawCanvas, qui fournit un rappel permettant d'émettre des commandes de dessin avec le Canvas sous-jacent. (I80afd)
- Mise à jour de HorizontalScroller et VerticalScroller afin de pouvoir restaurer leur position de défilement en utilisant l'état d'instance enregistré. (Ia0fae, b/155075048)
- Suppression de FocusManagerAmbient. Utilisez FocusModifier.requestFocus pour la sélection. (Ic4826)
- Suppression temporaire de la mise en page Table, le temps de lancer une nouvelle API. (Id88a7)
Création d'une API CanvasScope qui encapsule un objet Canvas afin d'exposer une surface d'API de dessin déclarative sans état. Les transformations sont contenues dans leur propre champ d'application receveur, et les informations de dimensionnement sont également limitées aux encarts correspondants. Un consommateur n'a pas besoin de gérer son propre objet d'état Paint pour configurer les opérations de dessin.
Ajout de CanvasScopeSample et mise à jour de l'application de démonstration pour inclure une démo pour les éléments graphiques déclaratifs. (Ifd86d)
Suppression de ColoredRect. Utilisez Box avec le modificateur drawBackground à la place. (I983c7, b/152753731)
Ajout de la personnalisation de la couleur du curseur à TextField. (I6e33f)
Mise à jour de SoftwareKeyboardController, qui permet désormais de masquer/afficher le clavier virtuel (fourni par un rappel onTextInputStarted). (I8dc44, b/151860051)
Mise à jour de TextFieldValue utilisé avec TextField, qui peut désormais survivre à la recréation de l'activité, comme suit :
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }. (I5c3ce, b/155075724)Ajout de paramètres couramment utilisés à Text(). Si vous créez un style de texte local permettant de transmettre un petit nombre de ces paramètres, par exemple
Text(style = TextStyle(textAlign = TextAlign.Center)), vous pouvez désormais indiquer les paramètres directement :Text(textAlign = TextAlign.Center). (I82768)Remplacement du paramètre "focusIdentifier" de CoreTextField/TextField par "FocusNode" afin d'intégrer le sous-système de sélection. (I7ea48)
Mise à jour de TextField afin d'occuper tout l'espace qui lui est alloué sur le plan horizontal. (Ib08df, b/154638552)
Ajout d'InteractionState et Interaction pour faciliter la création de composants qui réagissent aux changements d'état de l'interface utilisateur, tels que la pression et le déplacement. (Icfe25, b/152525426)
Déplacement de RectangleShape de androidx.ui.foundation.shape.* vers androidx.ui.graphics.*. (Ia74d5, b/154507984)
Remplacement de toutes les utilisations nullables de Color dans l'API par des versions non nullables, avec Color.Unset en cas de valeur nulle. (Iabaa7)
Mise à jour de l'API TextField : fusion des rappels onFocus et onBlur en un seul rappel onFocusChange(Boolean) avec paramètre. (I66cd3)
Changement de nom : ScaleFit devient ContentScale. Déplacement de ContentScale de ui-graphics vers le module ui-core, pour coexister avec l'API Alignment. FillMaxDimension devient Crop. FillMinDimension devient Fit. Fit devient Inside pour mieux correspondre aux équivalents ImageView.ScaleType. Ajout d'une documentation indiquant que la combinaison de Crop et Alignment.Center produit le même résultat que ImageView.ScaleType.CENTER_CROP, que la combinaison de Fit et Alignment.Center produit le même résultat que ImageView.ScaleType.FIT_CENTER, et que la combinaison d'Inside et Alignment.Center produit le même résultat que ImageView.ScaleType.CENTER_INSIDE. (I45f09, b/152842521)
Suppression de ProvideContentColor. Utilisez simplement ContentColorAmbient à la place, directement avec
Providers. (Iee942)Ajout d'un paramètre de couleur au texte, ce qui permet de remplacer la couleur du style de texte sans avoir besoin de le fusionner manuellement avec le style fourni dans un thème. (I41a66)
Améliorations apportées à l'API DrawModifier :
- Mise à jour de ContentDrawScope, qui sert de champ d'application receveur pour draw().
- Suppression de tous les paramètres de draw().
- Mise à jour de DrawScope, qui utilise désormais la même interface que l'ancienne forme CanvasScope.
- Ajout de la méthode drawContent() à ContentDrawScope. (Ibaced, b/152919067)
Abandon de ColoredRect. Utilisez
Box(Modifier.preferredSize(width, height).drawBackground(color))à la place. (I499fa, b/152753731)Mise à jour du système de thématisation basée sur des formes, conformément aux spécifications Material Design. Vous pouvez désormais indiquer des formes de petite, moyenne et grande taille pour la plupart des composants. (Ifb4d1)
Remplacement de l'opérateur plus du modificateur par des fonctions d'extension de fabrique. (I225e4)
Conversion de Draggable en modificateur. (Id9b16, b/151959544)
Déplacement de
Text, du package androidx.ui.core vers androidx.ui.foundation. (I87ce5)Ajout du paramètre
enabledà Checkbox, Switch et Toggleable. (I41c16)Conversion de Ripple en modificateur. Même si Clickable n'a pas encore été converti, nous vous recommandons d'utiliser
Clickable(onClick = { ... }, modifier = ripple()). (Ie5200, b/151331852, b/150060763)Ajout de l'API VectorPainter pour remplacer l'API de sous-composition existante pour les éléments graphiques vectoriels. Le résultat de la sous-composition est désormais un objet VectorPainter au lieu d'un DrawModifier. Les anciens composables DrawVector sont abandonnés au profit de VectorPainter.
L'API
Image(Painter)est renomméePaintBox(Painter), et un composable Vector a été créé (comportement identique au composable Image, avec un VectorAsset au lieu d'un ImageAsset). (I9af9a, b/149030271)Création du composable Image pour gérer le dimensionnement/la mise en page en plus de dessiner un ImageAsset donné à l'écran. Ce composable permet également de dessiner une instance de Painter arbitraire respectant sa taille intrinsèque, ainsi qu'une taille fixe ou minimale donnée. (Ibcc8f)
Ajout d'un paramètre
enableddistinct à Button, FloatingActionButton et Clickable. Certains paramètres de Button ont été renommés ou réorganisés. (I54b5a)Changement de nom : Image devient ImageAsset, afin de mieux distinguer les données Image et le composable Image à venir, qui servira à la mise en page et à l'affichage du contenu.
Création d'une méthode d'extension
Bitmap.asImageAsset()sur android.graphics.Bitmap, afin de créer une instance d'ImageAsset utile pour combiner le développement d'applications Android traditionnelles avec le framework Compose. (Id5bbd)Suppression du composable DrawImage. Utilisez ImagePainter pour dessiner une image sur une mise en page existante ou SimpleImage pour ajouter une image qui occupe de l'espace. (I595e1, b/149827027)
Prise en charge de l'orientation de lecture de droite à gauche pour le composant Stack. (Ic9e00)
Ajout d'Icon, IconButton et IconToggleButton, et suppression d'AppBarIcon. Vous pouvez remplacer directement les utilisations existantes de AppBarIcon par IconButton. Elles seront désormais associées à la cible tactile appropriée. Reportez-vous aux exemples pour plus d'informations sur les utilisations, et aux icônes pour savoir quelles icônes Material vous pouvez utiliser directement avec ces composants. (I96849)
Suppression du composable DrawShape. Utilisez le modificateur DrawBackground à la place. (I7ceb2)
Ajout d'AdapterList, un composant de liste déroulante qui ne fait que composer et mettre en page les éléments visibles. Problèmes connus : ce composant est exclusivement vertical et ne prend pas correctement en charge certains cas de modifications apportées à ses enfants. (Ib351b)
Ajout du composant Scrollable, qui permet de créer des Scrollers/Lists personnalisés. (I5fd37)
Changement de nom et mise à jour : background devient DrawBackground et est mémorisé par défaut. (Ia0bd3)
Ajout de paramètres de marge intérieure, bordure, forme et arrière-plan à Box. (I05027, b/148147281)
Ajout du composant Canvas. Ce composable occupe une certaine taille (fournie par l'utilisateur) et vous permet de dessiner à l'aide de CanvasScope. (I0d622)
Changement de nom : le modificateur
BorderdevientDrawBorder. (I8ffcc)Ajout du composant Box pour combiner les fonctionnalités courantes de mise en page et de dessin. (I6e2a7)
Mise à jour des Scrollers, qui intègrent désormais le mouvement natif Android de glissement d'un geste vif. (I922af, b/147493715)
Remplacement de DrawBorder par le modificateur Border. (Id335a)
Changement de nom : Modifier.tag devient Modifier.layoutId pour éviter toute confusion avec Modifier.testTag. (I995f0)
Changement de nom : le paramètre "percent" utilisé lors de la création des consignes de ConstraintLayout devient "fraction". (Ida2db)
Prise en charge des marges pour les barrières ConstraintLayout. (I47ffe)
Amélioration de la prise en charge de la lecture de droite à gauche dans ConstraintLayout. Ajout d'API incompatibles avec la lecture de droite à gauche. (I3b1c7)
Ajout d'un DSL pour ConstraintLayout. Pour en savoir plus, consultez les exemples. (Icaa9a)
Ajout de l'annotation @ExperimentalLayout. Elle sert désormais à marquer ConstraintLayout, FlowRow et FlowColumn pour indiquer que leurs API seront modifiées. (I412a8)
Ajout de
Modifier.padding(InnerPadding). (I94985, b/157133803)Suppression de RowAlign dans Row et de ColumnAlign dans Column, devenus obsolètes. (If60d4, b/155858731)
Suppression de LayoutTag(), devenu obsolète. Utilisez Modifier.tag() à la place. Suppression de Modifier.matchParent(), devenu obsolète. Utilisez Modifier.matchParentSize() à la place. (If8044)
Ajout du modificateur de mise en page offsetPx, qui permet de définir des décalages (dynamiques) en pixels. (I5af57)
Abandon du composable AlignmentLineOffset. Utilisez le modificateur relativePaddingFrom() à la place. Suppression du composable CenterAlignmentLine. (I60107)
Ajout du modificateur de mise en page defaultMinSizeConstraints, qui définit les contraintes de taille pour la mise en page encapsulée uniquement lorsque les contraintes correspondantes entrantes ne sont pas spécifiées (0 pour les contraintes minimales et l'infini pour les contraintes maximales). (I311ea, b/150460257)
Suppression de Container. Utilisez Box à la place. (Ibbc2b, b/151407926)
Suppression des modificateurs LayoutWidth/Height/Size, devenus obsolètes. (Ib0bc1)
Ajout de valeurs de paramètre par défaut pour le modificateur de décalage. (I37f06)
Ajout d'un modificateur de marge intérieure symétrique. (I39840)
Suppression du modificateur LayoutAspectRatio, devenu obsolète. (I65a74)
Suppression des modificateurs LayoutAlign, devenus obsolètes. (I10877)
Correction d'un bug dans les modificateurs de largeur et de hauteur : la mise en page encapsulée était mesurée sans aucune contrainte sur l'axe opposé. (I210b8, b/154797971)
Ajout des paramètres verticalGravity et horizontalGravity à Row et Column, respectivement. (I7dc5a)
Mise à jour de wrapContentWidth et wrapContentHeight, qui attendent désormais un alignement vertical ou horizontal au lieu d'un alignement quelconque. Le modificateur de gravité a été mis à jour pour accepter l'alignement vertical ou horizontal. Row, Column et Stack ont été mis à jour pour accepter les alignements continus personnalisés. (Ib0728)
Mise à jour de Alignment, désormais instanciable avec des valeurs arbitraires. Ajout d'alignements en 1D. (Ia0c05)
Changement de nom : EdgeInsets devient InnerPadding. Le paramètre "innerPadding" des boutons Material a été renommé "padding". (I66165)
Mise à jour d'alignToSiblings, qui accepte désormais un élément Measured au lieu de Placeable. (I5788d)
Ajout de modificateurs de dimensionnement aux mesures intrinsèques et abandon des composants utilisés à cette fin. (I8295d)
Prise en charge de la personnalisation des dimensions des enfants de ConstraintLayout. (Idb1a5)
Suppression des composables Wrap et Center, devenus obsolètes. (I29e23)
Ajout de LayoutModifier2, une nouvelle API permettant de définir des modificateurs de mise en page. Abandon de LayoutModifier. (If32ac)
Mise à jour des membres RowScope et ColumnScope, désormais accessibles en dehors de Row et Column. (I3a641)
Abandon de Container. Utilisez Box à la place. (I675ce, b/151407926)
Ajout du modificateur LayoutOffset pour décaler la position de la mise en page. (I0b8a3)
Prise en charge initiale de la lecture de droite à gauche (RTL) dans les mises en page Compose. (Ia5519)
Mise à jour de LayoutAlign pour ne plus occuper l'espace disponible. (I2b14f)
Suppression du composable AspectRatio, remplacé par le modificateur. Suppression des composables FlexColumn et FlexRow et du modificateur Spacing, devenus obsolètes. (Iec8a7)
Suppression du modificateur LayoutInflexible pour Row et Column. (I0d820)
Implémentation de poignées de sélection de déplacement pour modifier la sélection de TextField. (I27032)
Implémentation de LongPressAndDrag pour la sélection de TextField. (I17919)
Correction de bugs
- Abandon de FocusModifier, remplacé par Modifier.focus, Modifier.focusRequester et Modifier.focusObserver. Abandon de FocusState et FocusDetailedState, à remplacer par FocusState2. (I46919, b/160822875, b/160922136)
- Changement de nom :
runOnIdleComposedevientrunOnIdle. (I83607) - Changement de nom de plusieurs API de test pour une identification plus intuitive. Toutes les API findXYZ ont été renommées onNodeXYZ. Toutes les API doXYZ ont été renommées performXYZ. (I7f164)
- Suppression de Modifier.ripple, devenu obsolète. Clickable utilise l'ondulation comme indication par défaut (si vous avez défini un MaterialTheme {} dans votre application). Le plus souvent, il vous suffit d'utiliser Clickable pour d'obtenir l'indication d'ondulation. Si vous devez personnaliser le paramètre de couleur, taille ou limite pour l'ondulation, vous pouvez créer manuellement un RippleIndication et le transmettre à Clickable comme paramètre d'indication. (I663b2, b/155375067)
- Suppression des API obsolètes de test de la taille. (Iba0a0)
- Conversion de LayoutNode en API expérimentale. (I4f2e9)
- Implémentation de la version 1 du verrouillage de l'orientation du défilement dans Compose. (I1ce7a, b/150289741)
- Mise à jour des éléments Popup, Dialog et Menu, qui héritent désormais du MaterialTheme contextuel. (Ia3665, b/156527485)
- Suppression du paramètre de direction de la mise en page dans le bloc de mesure de la fonction Layout(). La direction de la mise en page reste disponible dans le rappel via l'objet de champ d'application de mesure. (Ic7d9d)
- Ajout d'AbsoluteArrangement, qui permet d'organiser les enfants dans Row sans mise en miroir automatique dans un contexte de lecture de droite à gauche. (I3a1df)
- Abandon de l'annotation @Untracked, remplacée par @ComposableContract(tracked=false). (Id211e)
- Avant cette modification, le plug-in de compilation de Compose interceptait de manière non triviale les appels de constructeurs dans une fonction @Composable lorsqu'une méthode "emit operator" était détectée dans le composeur résolu. Cette stratégie de résolution de l'appel prêtait à confusion et déviait des règles de résolution standard de Kotlin. Il s'agissait d'un concept vestigial ne faisant plus partie du modèle de réflexion qui structure Compose. (I5205a, b/158123804)
- Ajout d'un composable
viewModel(), qui permet de créer ou d'obtenir un ViewModel existant, ce qui reflète son fonctionnement dans Activity ou Fragment. (I5fdd1) Refactorisation de la classe Radius en classe inline. Les méthodes de création associées ont été supprimées et sont à remplacer par un constructeur de fonction avec par défaut un paramètre de rayon sur l'axe des ordonnées (y) correspondant au paramètre obligatoire de rayon sur l'axe des abscisses (x).
Mise à jour de DrawScope.drawRoundRect afin de consommer un seul paramètre de rayon au lieu de deux valeurs flottantes distinctes pour le rayon sur les axes x et y. (I46d1b)
Remplacement des utilisations de la classe Px dans différentes classes de Compose, dans le cadre d'une refactorisation généralisée qui vise à ne plus utiliser que les types Dp et primitifs pour les paramètres de pixel. La classe Px a été complètement supprimée. (I3ff33)
Remplacement des utilisations de la classe Px dans différentes classes de Compose, dans le cadre d'une refactorisation généralisée qui vise à ne plus utiliser que les types Dp et primitifs pour les paramètres de pixel. (I086f4)
Remplacement des utilisations de la classe Px dans différentes classes de Compose, dans le cadre d'une refactorisation généralisée qui vise à ne plus utiliser que les types Dp et primitifs pour les paramètres de pixel. (Id3434)
Remplacement des utilisations de la classe Px dans différentes classes de Compose, dans le cadre d'une refactorisation généralisée qui vise à ne plus utiliser que les types Dp et primitifs pour les paramètres de pixel. (I97a5a)
Ajout d'une animation de clignotement au curseur de TextField. (Id10a7)
Mise à jour des gestes partiels, qui ne nécessitent plus la transmission d'un GestureToken. (Id7ae5)
Remplacement des utilisations de la classe Px dans différentes classes de Compose, dans le cadre d'une refactorisation généralisée qui vise à ne plus utiliser que les types Dp et primitifs pour les paramètres de pixel. (I57bff)
Restauration de Modifier.semantics (précédemment abandonné) pour permettre son utilisation avec des composants de haut niveau. (I4cfdc)
Changement de nom : AnnotatedString.Builder.addAnnotationString devient addStringAnnotation. (I5059e)
Mise à jour de l'API Alignment et prise en charge de l'alignement absolu (sans mise en miroir automatique dans un contexte de lecture de droite à gauche). (I38cd3)
Mise à jour de Layout et LayoutModifier, dont les enfants peuvent désormais être mesurés avec une direction de mise en page différente. (Ibd731)
Introduction d'un paramètre rect facultatif dans ImagePainter pour permettre le tracé d'une sous-section d'un ImageAsset sous-jacent. (I0ea9e)
Correction d'un plantage dans AdapterList lors de la suppression d'éléments. (Ic64b0, b/153195921)
Modification de la mesure de la première mise en page placée dans le bloc activity.setContent { }. Auparavant, le système la forçait à remplir l'intégralité de l'écran de l'activité Désormais, on considère que la mise en page est placée dans une pile : elle peut donc être plus petite qu'un écran et sera positionnée en haut à gauche. Si vous souhaitez utiliser l'ancien comportement, vous pouvez appliquer la fonction Modifier.fillMaxSize() à votre mise en page. (Ie88a7, b/153453714)
Changement de nom : le module ui-text-compose devient ui-text. Mise à jour de ui-text, qui contient désormais les composables CoreText et CoreTextField. (Ib7d47)
Changement de nom : le module ui-text devient ui-text-core. (I57dec)
Déplacement des composables ui-framework/CoreText, CoreTextField sous ui-text-compose. Vous pouvez inclure ui-text-compose dans votre projet. (I32042)
Conversion des méthodes
runOnIdleComposeetrunOnUiThreadde ComposeTestRule en fonctions globales. (Icbe8f)Déplacement des opérateurs de délégation de propriété [Mutable]State vers des extensions pour prendre en charge les optimisations de délégation de propriété Kotlin 1.4. Les appelants doivent ajouter des importations pour continuer à utiliser
by state { ... }ouby mutableStateOf(...). (I5312c)Mise à jour de DrawLayerModifier et drawLayer(), qui définissent désormais clipToBounds et clipToOutline sur "false" par défaut. (I0eb8b, b/152810850)
Changement de nom : LayoutResult devient MeasureResult. (Id8c68)
Abandon du composable Center, à remplacer par le modificateur LayoutSize.Fill + LayoutAlign.Center, ou par l'un des composables Box ou Stack auxquels sont appliqués les modificateurs appropriés. (Idf5e0)
Changement de nom : LayoutFlexible devient LayoutWeight. Changement de nom : le paramètre tight devient fill. (If4738)
Conversion de la fonction modulable standard DrawVector en modificateur drawVector() qui dessine le vecteur comme arrière-plan dans une mise en page. (I7b8e0)
Remplacement de la fonction modulable Clip par le modificateur drawClip(). Le modificateur DrawClipToBounds est utile pour simplement rogner le contenu en fonction d'une couche selon une forme rectangulaire. (If28eb)
Remplacement de la fonction modulable DrawShadow par le modificateur drawShadow(). Les ombres sont maintenant dessinées dans LayerModifier. (I0317a)
Déplacement de androidx.compose.ViewComposer vers androidx.ui.node.UiComposer. androidx.compose.Emittable a été supprimé, car il faisait doublon avec ComponentNode. androidx.compose.ViewAdapters a été supprimé et n'est plus accepté. Compose.composeInto a été abandonné. Utilisez
setContentousetViewContentà la place. Compose.disposeComposition a été abandonné. Utilisez la méthodedisposesur leCompositionrenvoyé parsetContentà la place. androidx.compose.Compose.subcomposeInto a été déplacé vers androidx.ui.core.subcomposeInto. ComponentNode#emitInsertAt a été renommé ComponentNode#insertAt. ComponentNode#emitRemoveAt a été renommé ComponentNode#removeAt. ComponentNode#emitMode a été renommé ComponentNode#move. (Idef00)Abandon du composable Wrap, à remplacer par le modificateur LayoutAlign ou par le composable Stack. (Ib237f)
Propagation de la direction de la mise en page du nœud de mise en page du parent aux enfants. Ajout d'un modificateur de direction de la mise en page. (I3d955)
Changement de nom : Painter.toModifier devient Painter.asModifier, car le modificateur nouvellement créé comporte une référence au Painter d'origine qui peut être partagée entre plusieurs instances de modificateur. (I7195b)
Prise en charge du sens de lecture de droite à gauche dans le modificateur LayoutPadding. (I9e8da)
Fusion de Density et DensityScope en une seule interface. Vous pouvez désormais utiliser DensityAmbient.current au lieu d'ambientDensity(), et with(density) au lieu de withDensity(density). (I11cb1)
Suppression de la classe ValueHolder. Restructuration des classes AnimatedValue et AnimatedFloat pour rendre le champ de valeur d'animation abstrait, afin que les sous-classes puissent surveiller la mise à jour de la valeur.
- Ajout de classes de modèle pour AnimatedValue, AnimatedFloat, etc.
- Ajout d'un nouvel ensemble d'API @Composable légères pour créer des animations entre des valeurs.
- (I79530)
Modifications destructives apportées à l'API Ambients. Pour en savoir plus, consultez le journal et la documentation sur
Ambient<T>. (I4c7ee, b/143769776)Mise à jour des positions Int de la ligne d'alignement renvoyées par Placeable#get(AlignmentLine), désormais non nullables. Si la ligne d'alignement demandée n'est pas spécifiée, AlignmentLine.Unspecified sera renvoyé. (I896c5, b/158134875)
Correction d'un bug affectant ConstraintLayout qui provoquait un plantage au niveau des recompositions. (Ibee5a, b/158164341)
Modification de l'API de lambda de fin de WithConstraints. Au lieu de deux paramètres, elle possède un champ d'application receveur qui, outre les contraintes et layoutDirection, fournit les propriétés minWidth, maxWidth, minHeight et maxHeight dans Dp. (I91b9a, b/149979702)
Changement de nom : LayoutModifier2 devient LayoutModifier. (Id29f3)
Mise à jour des fonctions de mesures intrinsèques dans Layout et LayoutModifier2, qui disposent désormais d'un receveur pour IntrinsicMeasureScope, fournissant une direction de mise en page implicite à l'API qui interroge les fonctionnalités intrinsèques. (Id9945)
Abandon de LayoutDirectionAmbient. Pour lire la direction de la mise en page définie par les paramètres régionaux, utilisez localeLayoutDirection dans ConfigurationAmbient. (I851b1)
Ajout de positionInParent et boundsInParent pour LayoutCoordinates. (Icacdd, b/152735784)
Abandon du composable ParentData. Vous devez soit créer un modificateur qui implémente l'interface ParentDataModifier, soit utiliser le modificateur LayoutTag si vous avez simplement besoin d'ajouter des balises aux enfants de la mise en page pour les reconnaître dans le bloc de mesure. (I51368, b/150953183)
Ajout d'OnPositionedModifier et OnChildPositionedModifier pour remplacer les fonctions composables OnPositioned et OnChildPositioned. (I2ec8f)
Mise à jour de LayoutPadding, qui interdit désormais les marges intérieures négatives. Utilisez LayoutOffset à la place pour les décalages de position négatifs. (Ifb5b1)
Mise à jour de WithConstraints, qui accepte désormais le paramètre LayoutDirection. (I6d6f7)
Mise à jour de l'indicateur
ComposeFlags.COMPOSER_PARAM, désormais surtrue, ce qui modifie la stratégie de génération du code pour le plug-in Compose. De manière générale, des fonctions @Composable sont générées avec un paramètre synthétique supplémentaire, qui est transmis aux appels @Composable suivants afin que l'environnement d'exécution en gère correctement l'exécution. Il s'agit d'une modification destructive de la compatibilité binaire, qui ne devrait pas affecter la compatibilité du code source dans les utilisations sanctionnées de Compose. (I7971c)Mise à jour de LayoutCoordinates, pour définir providedAlignmentLines comme Set au lieu de Map, et faire en sorte que LayoutCoordinates implémente plutôt l'opérateur get() pour récupérer une valeur. Ce changement permet aux modificateurs de modifier plus facilement une ou plusieurs valeurs du Set sans devoir créer une collection pour chaque modificateur. (I0245a)
Suppression de la propriété position de LayoutCoordinates. Cette propriété n'était pas pertinente vis-à-vis de LayoutModifiers, de la rotation ou du scaling. À la place, les développeurs doivent utiliser parentCoordinates et childToLocal() pour calculer la transformation d'une LayoutCoordinate en une autre.
LayoutCoordinates utilise IntPxSize au lieu de PxSize pour la propriété de taille. Les mises en page utilisent un nombre entier de pixels pour définir les tailles. Toutes les tailles doivent être définies en nombres entiers et sans valeurs à virgule flottante. (I9367b)
Améliorations apportées à la surface de l'API Constraints. (I0fd15)
Ajout de TextDirection.Content. (I48f36)
Ajustement du menu de la barre d'outils pour afficher correctement les options copy (copier), cut (couper) et paste (coller). (Id3955)
Ajout de FloatingToolbar pour la sélection de TextField. (Ie8b07)
Changement de nom : TextDirectionAlgorithm devient TextDirection. (I75ce8)
Changement de nom : TextDirection devient ResolvedTextDirection. (I3ff38)
Ajout de HapticFeedback à la sélection de TextField. (I58050)
Ajout des méthodes Copy, Cut et Paste à la sélection de TextField. (Idb70b)
Suppression de TestTag et Semantics. Utilisez Modifier.testTag et Modifier.semantics à la place. (I15ff0, b/158841414)
Changement de nom : le package androidx.ui.text devient androidx.ui.intl pour Locale et LocaleList. (I8132c)
Modification apportée à l'API :
AnnotatedString(builder: Builder)est renomméannotatedString(builder: Builder). (Ia6377)Modification apportée à l'API :
AnnotatedString.Itemest renomméAnnotatedString.Range. (I2d44d)Ajout de Toolbar pour les opérations liées au texte. (I49d53)
Ajout LifecycleOwnerAmbient. Désormais, une activité utilisée avec l'interface utilisateur de Compose devrait étendre androidx.activity.ComponentActivity (ou AppCompatActivity). setContent sur android.app.Activity a été abandonné. (Idb25a, b/153141084)
Remplacement du nom du package ui-android-text (androidx.text) par androidx.ui.text.platform conformément aux règles d'AndroidX. (I42711)