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 |
---|---|---|---|---|
13 novembre 2024 | 1.7.5 | - | - | 1.8.0-alpha06 |
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.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.7.5") } 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.8
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
confirmValueChange
deAnchoredDraggableState
. Au lieu de bloquer les modifications d'état, les ancres non autorisées ne doivent pas figurer dans l'ensemble d'ancres actif, et unOverscrollEffect
doit être utilisé pour indiquer l'indisponibilité de l'action demandée. (Ia717f) - Définit le gestionnaire de saisie automatique comme une interface. (I84914, b/376080755)
- Ajout des API
OverscrollEffect#withoutDrawing
etOverscrollEffect#withoutEventHandling
. Ces API créent une instance encapsulée de l'effet de défilement excessif fourni qui ne dessine pas / ne gère pas les événements, ce qui permet de le rendre dans un composant distinct de celui qui distribue les événements. Par exemple, désactivez le dessin du défilement excessif dans une liste paresseuse, puis dessinez le défilement excessif séparément en haut ou ailleurs. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244) - Ajout de la fonctionnalité de saisie semi-automatique dans la barre d'outils de texte. (Ie6a4c)
- Abandon de
OverscrollConfiguration
etLocalOverscrollConfiguration
, et ajout derememberPlatformOverscrollFactory
pour créer une instance de / personnaliser les paramètres de l'implémentation par défaut du défilement forcé. Pour désactiver le défilement excessif, utilisezLocalOverscrollFactory provides null
au lieu deLocalOverscrollConfiguration provides null
. Pour modifier la couleur / la marge intérieure de l'aura, utilisezLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
au lieu deLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
. (Ie71f9, b/255554340, b/234451516) - Modification de la propriété
effectModifier
surOverscrollEffect
pour qu'elle soitnode: DelegatableNode
, conformément aux autres API. (Ic0b46, b/255554340) - Suppression de l'API
GlobalAssertions
expérimentale. Son utilisation prévue était d'exécuter des vérifications d'accessibilité. Pour ce faire, 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 regardez la taille de votre texte s'adapter à l'espace disponible. (Ice7e0, b/139320827) - Ajoute les API
OverscrollFactory
etLocalOverscrollFactory
pour permettre de configurer le défilement hors limites dans une hiérarchie. La valeur fournie viaLocalOverscrollFactory
sera utilisée par défaut pour créer unOverscrollEffect
. Pour créer et mémoriser un effet à partir de l'usine fournie, utilisezrememberOverscrollEffect()
. (I51ca4, b/255554340)
Modifications apportées à l'API
- Introduction de
CompositionLocal
, qui permet de modifier la teinte de la mise en surbrillance de la saisie automatique réussie. (I32092) ScrollableDefaults.overscrollEffect
a été supprimé. Utilisez plutôtrememberOverscrollEffect
. Une instance de l'implémentation actuelle du défilement forcé fournie avecLocalOverscrollFactory
sera créée. (I1651a, b/255554340),(b/234451516)- Introduction d'une nouvelle interface
AutofillManager
permettant d'affiner le parcours de saisie automatique des utilisateurs et d'un indicateurisSemanticAutofillEnabled
pour 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.combinedClickable
, comme avec les autres API de modification. (I4b658) - Ajoute des surcharges à
horizontalScroll
,verticalScroll
,LazyColumn
,LazyRow
,LazyHorizontalGrid
,LazyVerticalGrid
,LazyHorizontalStaggeredGrid
,LazyVerticalStaggeredGrid
,HorizontalPager
etVerticalPager
avec la possibilité de spécifier unOverscrollEffect
personnalisé. LeOverscrollEffect
fourni recevra des événements et sera affiché dans les limites de ces composants. Notez que le dessin du mêmeOverscrollEffect
deux fois n'est pas pris en charge. Vous ne pouvez donc pas dessiner le mêmeOverscrollEffect
fourni à l'un de ces composants séparément avecModifier.overscroll
. Le cas d'utilisation consistant à dessiner le 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 des rappels
DelegatableNode#onDensityChange
etDelegatableNode#onLayoutDirectionChange
pour permettre la mise à jour de l'état du nœud lorsqu'il change. (I04f3e, b/340662451) - Le paragraphe et
ParagraphIntrinsics
acceptent désormais une liste de toutes les annotations appliquées àAnnotatedString
, alors qu'auparavant, ils n'acceptaient qu'une liste deSpanStyles
. (I12f80) - Introduction de
PointerInputModifierNode#touchBoundsExpansion
, qui permet d'agrandir les limites tactiles d'un modificateur d'entrée à pointeur unique. (Iccf02, b/335339283)
Correction de bugs
- Correction d'un bug qui empêchait les seuils de position transmis à
AnchoredDraggableDefaults.flingBehavior
d'être pris en compte correctement dans certains cas. (Ifdf0d, b/367660226) - Correction d'un problème lié aux éléments à faire défiler imbriqués qui sont supprimés de l'arborescence des nœuds lors d'un fling en cours. Ces nœuds annuleront désormais le fling et enverront correctement l'événement
onPostFling
avec la vitesse restante. Nous introduisons également l'indicateurNewNestedScrollFlingDispatchingEnabled
pour 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
OverscrollEffects
transmis à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 Kotlin vers la version 1.9 (I1a14c)
- Introduction de l'indicateur
DraggableAddDownEventFixEnabled
(I848d5) - Ajout d'un nouveau rôle sémantique appelé "Carousel" pour émuler le comportement de la liste dans les paginations pour les services d'accessibilité. (Id354b, b/354109776, b/239672673)
- Suppression du modificateur
graphicsLayer
implicite du composableBasicText
. Ajout d'un indicateur expérimentalComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled
pour pouvoir revenir à l'ancien comportement. (Ie478d) - Ajout de
Modifier.recalculateWindowInsets()
pour permettre aux enfants de la hiérarchie d'utiliserinsetsPadding
même lorsque les parents les ont alignés sansconsumeWindowInsets()
. (I7f9e4)
Correction de bugs
- Implémentez la sélection des gestes dans
detectDragGestures
, les éléments déplaçables et les éléments à faire défiler. Désormais, si un élément enfant déplaçable abandonne un geste, le parent peut le reprendre. Cela permet une gestion des gestes plus continue et intégrée. (Ic88fe) - Modification du comportement d'annulation de la balayage dans les éléments à faire défiler. Désormais, si un élément à faire défiler est lancé et atteint les limites, la vitesse de glissement est correctement transmise au prochain élément à faire défiler de la chaîne au lieu de continuer à entraîner le glissement. (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.StartEllipsis
etTextOverflow.MiddleEllipsis
sont désormais disponibles, ce qui permet de placer des points de suspension au début ou au milieu de la ligne du 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.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 paresseuse. Il s'agissait d'une cause 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
BasicText
lorsque minLines est défini sur une valeur autre que la valeur 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é aux éléments draggables qui manquaient d'événements vers le bas, ce qui faisait apparaître les flings plus lents que la normale.
Version 1.7.1
10 septembre 2024
- Aucune modification n'a été apportée aux artefacts Android. Les artefacts
-desktop
ont été supprimés, et des artefacts-jvmStubs
et-linuxx64Stubs
ont été ajoutés. Aucune de ces cibles n'est destinée à être utilisée. Il s'agit de repères destinés à 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.scrollable
etModifier.draggable
ont é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 d'obtenir des implémentations d'indications plus performantes que l'ancienne APIrememberUpdatedInstance
(désormais obsolète). Pour en savoir plus sur la migration, consultez developer.android.com. clickable
/combinedClickable
/selectable
/toggleable
accepte désormais un paramètreMutableInteractionSource
nullable. Si la valeur est nulle et que l'indication fournie est unIndicationNodeFactory
, elle ne peut être créée de manière paresseuse que si nécessaire, ce qui améliore les performances. Si vous n'utilisez pasMutableInteractionSource
et que vous ne l'élevez pas, nous vous recommandons de transmettre la valeur nulle au lieu deremember { MutableInteractionSource() }
.Indication#rememberUpdatedInstance
est 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,
BasicTextField
à l'aide d'unTextFieldState
est désormais stable. Nous conseillons à tous les sites d'appels de commencer à migrer deBasicTextField(value, onValueChange)
versBasicTextField(TextFieldState)
.ClickableText
est obsolète. Pour ajouter des liens cliquables à votre texte, utilisezBasicText
avec la nouvelle annotationLinkAnnotation
dans votreAnnotatedString
.LinkAnnotation
permet d'utiliser un style personnalisé en fonction de l'état du lien (par exemple, en surbrillance ou en survol).- Présentation de
ContextualFlowRow
etEnhanced FlowRow/Column
avecMaxLines
etOverflow
. Nous sommes heureux d'annoncer des améliorations apportées auxFlowRow
etFlowColumn
expérimentaux, qui incluent désormaismaxLines
et la prise en charge du débordement, ainsi que le lancement deContextualFlowRow
etContextualFlowColumn
. Cette mise à jour est conçue pour fournir des composants optimisant les performances.ContextualFlow*
est parfait pour un grand nombre d'éléments utilisant une petite configuration maxLines et des boutons "+N Voir plus" dynamiques.FlowRow
etFlowColumn
sont parfaits pour un petit nombre d'éléments, moins de 100 éléments. Important: Pour conserver le comportement existant dansFlowRow
ouFlowColumn
, où tous les éléments sont composés, que ce soit ou non pour s'adapter à la taille maximale de l'axe croisé, définissez le débordement surFlowRowOverflow.Visible
ouFlowColumnOverflow.Visible
lors de l'initialisation. DécouvrezContextualFlowRowSample
etFlowRowSample
pour voir comment ces nouvelles fonctionnalités fonctionnent. (Ib9135, b/293577082) - La prise en charge de l'animation d'apparition et de disparition des éléments a été ajoutée à
LazyColumn
etLazyRow
. Auparavant, il était possible d'ajouter le modificateurModifier.animateItemPlacement()
pour prendre en charge les animations d'emplacement (réorganisation). Nous avons abandonné ce modificateur et lancé un nouveau modificateur non expérimental appeléModifier.animateItem()
, qui vous permet de prendre en charge les trois types d'animation: l'apparition (fondu), la disparition (fondu) et le réordonnancement. (I2d7f7, b/150812265) - 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
). - Les sources
NestedScroll
"Drag" (Glisser) et "Fling" (Flotter) sont remplacées parUserInput
etSideEffect
pour tenir compte de la définition étendue de ces sources, qui incluent désormais les animations (effet secondaire), la molette de la souris et le clavier (UserInput
). - Les requêtes de préchargement
LazyLayout
peuvent désormais être marquées comme urgentes. Cela signifie que nous nous attendons à ce que cet élément soit nécessaire dans le frame suivant et que nous souhaitons ignorer le budget de frame pour nous assurer de faire plus de travail à l'avance (Id513f). - Prise en charge de la fonctionnalité d'écriture manuscrite avec stylet sur les appareils équipés d'Android U ou version ultérieure. (I002e4)
- Plusieurs API ont été définies comme stables.
- Les paginations, l'ancrage et les 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 qui entraînait un plantage lorsqu'un élément était sélectionné dans un parent pouvant être sélectionné (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
SemanticsNodeInteraction
liées à la saisie de texteperformTextReplacement
,performTextInput
etperformTextClearance
génèrent désormais des erreurs d'assertion lorsqu'elles sont appelées surTextFields
en lecture seule. (I4ae8f) - Correction d'un problème visuel dans les liens hypertextes. (I23311)
- Correction du problème de non-fonctionnement du modificateur
contentReceiver
avec certains IME. - Génération de vitesse: empêche la propagation de valeurs NaN dans l'UI et la fondation de Compose.
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
SnapFlingBehavior
et 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 texte très volumineux qui entraînait un plantage dans la nouvelle
BasicTextField
(6b7575) - Annule 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
- Ajout d'une API expérimentale permettant de configurer le comportement de préchargement de
LazyGrids
, semblable à l'API expérimentale existante pourLazyLists
. Cela inclut la précharge des éléments dans lesLazyGrids
imbriqué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) SemanticsProperties.Editable
a été renomméIsEditable
etSemanticsPropertyReceiver.editable
a été remplacé par une valeurisEditable
. La propriété est désormais booléenne et toujours spécifiée par des champs de texte. (I8acd8)- Les valeurs par défaut de
basicMarquee
ont été déplacées vers l'objetMarqueeDefaults
. (I12ff6) - Modification du nom du paramètre
delayMillis
debasicMarquee
enrepeatDelayMillis
. (I12ff6) - Mise à jour de l'API pour styliser les liens: déplacement de
TextLinkStyles
versTextStyle
et suppression deTextDefaults
de Material (I5477b)
Correction de bugs
LayoutCoordinates.introducesFrameOfReference
a été renomméLayoutCoordinates.introducesMotionFrameOfReference
pour mieux refléter son objectif. Modification du nom de la fonction associée pour calculer les coordonnées en fonction de cet indicateur. (I3a330)- Suppression de "Par défaut" des propriétés
MarqueeDefaults
. (I1d8a0) - "Marquee" a été supprimé des propriétés
MarqueeDefaults
. (Iad4f4) - Suppression de
TextLinkStyles
de la classeTextStyle
.TextLinkStyles
fait plutôt partie du constructeurLinkAnntation
et de la méthodeAnnotatedString.fromHtml
(I90b2b). - Correction d'un bug qui faisait que le pager s'arrêtait brusquement lorsqu'il était lancé vers une limite alors qu'il était déjà à cette limite. (I9f373, b/339171222)
- BTF2 dispose désormais des gestes de sélection de la souris appropriés. (Ibe8c6)
Contribution externe
- Réenvoyer "Make compose/measure time calculation content-type based in prefetch to improve accuracy" (Iea622)
- Calcul du temps de composition/mesure basé sur le type de contenu dans le préchargement pour améliorer la précision (Ibccb1)
- Disponibilité des modificateurs
WindowInsetsPadding
à partir d'un 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.shouldShowKeyboardOnFocus
en tant que propriété obsolète masquée pour la compatibilité binaire. (I15cfe) Modifier.anchoredDraggable
inverse désormais les deltas de glissement par défaut pour les composants à orientation horizontale lorsqu'ils sont utilisés dans une mise en page RTL. (I3c6d9)AnnotatedString.hasEqualsAnnotations
est désormaishasEqualAnnotations
. (I685c0)- Mise à jour de l'API pour obtenir des liens de style Material dans le texte. Plus précisément, les méthodes de
TextDefaults
ont été supprimées pour la création deLinkAnnotations
thématiques et l'analyse du code HTML avec des liens thématiques. Au lieu de cela, une classeTextLinkStyles
a été ajoutée pour styliser les liens en tant que paramètre du composable Text. (I31b93) - Remplacement de
onDragStarted
etonDragStopped
par des rappels sans suspension. (I59de8)
Correction de bugs
- Correction d'un bug qui provoquait le plantage de Pager lorsque
contentPadding
était plus grand que les 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 avec clic droit dans
BasicTextField
etSelectionContainer
avec des éléments pour les actions Couper, Copier, Coller et Tout sélectionner. (If8c93, Ia2b49, I6f268)
Modifications apportées à l'API
- Les requêtes de préchargement
LazyLayout
peuvent désormais être marquées comme urgentes. Cela signifie que nous nous attendons à ce que cet élément soit nécessaire dans le frame suivant et que nous souhaitons ignorer le budget de frame pour nous assurer de faire plus de travail à l'avance (Id513f). - Changement de nom :
isPositionedByParentWithDirectManipulation
devientintroducesFrameOfReference
. Notez que l'effet est maintenant inverse, ce qui signifie que par défaut, la plupart desLayoutCoordinates
introduisent un cadre de référence et que la propriété n'est définie sur "false" que lorsqu'elle est soumise à une manipulation directe. Pour interroger la position uniquement avec celles qui introduisent un cadre de référence, utilisezpositionInLocalFrameOfReference(...)
. OupositionInLocalLookaheadFrameOfReference
à partir d'unLookaheadScope
. (Ifc5f7) onClicked
renomméonClick
dansLinkInteractionListener
(Iaa35c)- Modification du lambda d'action pour
getScrollViewportLength
conformément aux commentaires du conseil de l'API. (Ibc74a) - Renaming the stylus handwriting delegation APIs. (Ica45f, b/327271923)
TextInclusionStrategy.isInside
a été renomméisIncluded
. Faites en sorte que le type de retour deParagraph/MultiParagraph#getRangeForRect()
ne puisse pas être nul. (I51f26)
Correction de bugs
- Ajout de l'option "Tout sélectionner" à tous les menus contextuels de texte dans
SelectionContainer
. (Ib750e, b/240143283) - Correction d'un problème de capture de longue capture d'écran pour les conteneurs à défilement avec
reverseScrolling=true
. (I7c59c) - Correction d'un problème qui entraînait la modification du
currentValue
deAnchoredDraggableState
lorsque l'on approchait des limites de l'état. (Iea30b, b/333846848)
Contribution externe
PrefetchExecutor
a été renomméPrefetchScheduler
pour mieux refléter ses responsabilités. (Ib9154)- Prise en charge de la précharge des éléments dans les
LazyLists
imbriquées (par exemple, unLazyColumn
qui affiche desLazyRows
imbriquées). Ce changement devrait réduire les pertes de frames lors du défilement pour cesLazyLists
. Par défaut, l'implémentation précharge 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
TextDefaults
contenant des méthodes permettant de créer unLinkAnnotation
et d'analyser une chaîne taguée en HTML qui appliqueMaterialTheme
aux liens. (I98532, b/139312671) - La prise en charge de l'animation d'apparition et de disparition des éléments a été ajoutée à
LazyVerticalGrid
etLazyHorizontalGrid
. Auparavant, il était possible d'ajouter le modificateurModifier.animateItemPlacement()
pour prendre en charge les animations d'emplacement (réorganisation). Nous avons abandonné ce modificateur et lancé un nouveau modificateur non expérimental appeléModifier.animateItem()
, qui vous permet de prendre en charge les trois types d'animation: l'apparition (fondu), la disparition (fondu) et le réordonnancement. (Ib7d12, b/330510929) - La prise en charge de l'animation d'apparition et de disparition des éléments a été ajoutée à
LazyVerticalStaggeredGrid
etLazyHorizontalStaggeredGrid
. Auparavant, il était possible d'ajouter le modificateurModifier.animateItemPlacement()
pour prendre en charge les animations d'emplacement (réorganisation). Nous avons abandonné ce modificateur et lancé un nouveau modificateur non expérimental appeléModifier.animateItem()
, qui vous permet de prendre en charge les trois types d'animation: l'apparition (fondu), la disparition (fondu) et le réordonnancement. (I69bc9, b/330511290)
Modifications apportées à l'API
- Ajoute
ContextMenuColors
et leProvidableCompositionLocal
LocalContextMenuTheme
associé. Vous pouvez modifier les couleurs du menu contextuel dans les champs de texte et le texte sélectionnable en fournissant la composition locale. (Ifa154) - Les liens textuels ont reçu une option de style pour l'état enfoncé en plus du style normal, du style en survol et du style en surbrillance. (I5f864, b/139312671)
- Introduction de
ViewConfiguration.HandwritingGestureLineMargin
pour les gestes d'écriture manuscrite. Prise en charge du geste d'écriture manuscrite pourBasicTextField
. (Ie6e13, b/325660505) DelegatableNode.scrollIntoView
a été supprimé pour la version 1.7, car nous n'avons pas eu le temps de stabiliser le reste de la surface de l'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
excludeDirectManipulationOffset
pour 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 surapproachLayout
d'être plus intuitives, car vous pouvez désormais différencier le décalage à animer et ce que vous devez appliquer directement lorsque vous décidez d'animer votre approche. (I60ec7) - Introduction de
requestScrollToItem
pourLazyStaggeredGrid
. Pour chaque mesure, le client peut désormais désactiver la gestion de l'index en fonction de la clé en appelantrequestScrollToItem
. Cela ne modifie en rien le comportement existant, sauf sirequestScrollToItem
est appelé. (I63983) - Ajout de
requestScrollToPage
dans Pager. Pour chaque mesure, le client peut désormais désactiver la gestion de l'index en fonction de la clé en appelantrequestScrollToPage
. Cela ne modifie en rien le comportement existant, sauf sirequestScrollToPage
est appelé. (Ic4213) - Introduction de
requestScrollToItem
pourLazyGrids
. Pour chaque mesure, le client peut désormais désactiver la gestion de l'index en fonction de la clé en appelantrequestScrollToItem
. Cela ne modifie en rien le comportement existant, sauf sirequestScrollToItem
est appelé. (I0a7a0) ClickableText
est marqué comme obsolète. Pour ajouter des liens au texte, créez unAnnotatedString
avec unLinkAnnotation
correspondant à votre lien, puis transmettez ceAnnotatedString
au composableText
. (I34d4b, b/323346994)UrlAnnotation
est obsolète. Utilisez plutôtLinkAnnotation.Url
. Si vous utilisez la thématisation Material, utilisez l'objetTextDefaults
pour créer l'annotation avec la thématisation Material appliquée. (I8d180, b/323346545)String.parseAsHtml
renommé enAnnotatedString.Companion.fromHtml
(I43dcd)- Ajout d'arguments de style (
linkStyle
,focusedLinkStyle
ethoveredLinkStyle
) et d'un écouteur d'interaction de lien à la méthodeparseAsHtml
. Lors de l'analyse de la chaîne taguée en HTML avec des balises<a>
, la méthode crée unLinkAnnotation.Url
pour chaque balise de ce type et transmet les objets de style et l'écouteur d'interaction de lien à chaque annotation. (I7c977) LinkAnnotation
accepte désormais les arguments de style basés sur l'état et unLinkInteractionListener
. Ajoutez cette annotation àAnnotatedString
pour obtenir un lien hypertexte. En transmettantfocusedState
et/ouhoveredState
, vous pouvez définir la configuration visuelle des liens lorsqu'ils sont sélectionnés et/ou survolés. (I81ce4, b/139312671)- L'indicateur de fonctionnalité pour les captures d'écran longues a été supprimé. (I28648, b/329128246)
LazyColumn
affiche désormais correctement les en-têtes persistants dans les captures d'écran longues. (I8d239, b/329296635)- Stabilisation de la majorité des API expérimentales restantes introduites avec la nouvelle
BasicTextField
. (I714e2) - Ajout du paramètre
textObfuscationCharacter
àBasicSecureTextField
, qui contrôle le caractère à utiliser lors de l'obscurcissement du contenu. (I0588b) - Les sources
NestedScroll
"Drag" (Glisser) et "Fling" (Flotter) sont remplacées parUserInput
etSideEffect
pour tenir compte de la définition étendue de ces sources, qui incluent désormais les animations (effet secondaire), la molette de la souris et le clavier (UserInput
). (I40579) - Introduction de
LocalBringIntoViewSpec
, un comportement de défilement de sélection dépendant de la plate-forme qui est appliqué au niveau de la couche de modificateur Scrollable. (I27aa5, b/317453911) - Suppression de
TextFieldCharSequence
.TextFieldBuffer.originalValues
est remplacé parTextFieldBuffer.originalText
etTextFieldBuffer.originalSelection
. (I2c7d6) ImeOptions.hintLocales
n'est plus nullable. Si vous souhaitez transmettre une liste de paramètres régionaux vide, veuillez utiliserLocaleList.Empty
. (Ic5bc4)- Changement de nom :
getOffsetFractionForPage
devientgetOffsetDistanceInPages
. (Ia05e2)
Correction de bugs
- Lorsque des
InputTransformations
sont joints à desnext
, leursKeyboardOptions
sont désormais correctement fusionnées par options individuelles à l'aide de la nouvelle méthodeKeyboardOptions.merge
. (Ie5304, b/295951492) - Le
targetValue
deAnchoredDraggableState
n'est plus pris en compte pour les seuils de position. Il dispose désormais d'un seuil implicite de 50%, ce qui signifie quetargetValue
change au milieu entre deux ancrages. (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 à
LazyColumn
etLazyRow
. Auparavant, il était possible d'ajouter le modificateurModifier.animateItemPlacement()
pour prendre en charge les animations d'emplacement (réorganisation). Nous avons abandonné ce modificateur et lancé un nouveau modificateur non expérimental appeléModifier.animateItem()
, qui vous permet de prendre en charge les trois types d'animation: l'apparition (fondu), la disparition (fondu) et le réordonnancement. (I2d7f7, b/150812265) - Les clients de
LazyColumn/LazyRow
peuvent désormais désactiver la maintenance d'un indice basé sur la clé pour le prochain passage de mesure en appelant unLazyListState.requestToScroll
sans suspension. (I98036, b/209652366) - Ajout de la méthode
parseAsHtml
pour 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 acceptées. Par exemple, vous ne pouvez 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 ne gère peut-être pas tous les cas correctement pour le moment. C'est pourquoi elle est actuellement désactivée par défaut. Pour activer cette option, définissez l'indicateurComposeFeatureFlag_LongScreenshotsEnabled
sur "true". Cet indicateur sera supprimé avant la version bêta 1.7. (I2b055, b/329296471) - Introduction d'une nouvelle API
GraphicsLayer
pour plus de flexibilité dans l'emplacement et le rendu des instancesGraphicsLayer
, et prise en charge des fonctionnalités de rendu intrinsèques sans avoir à se coordonner avec les implémentations Composable pour spécifier des instances de modificateurGraphicsLayer
.
Modifications apportées à l'API
- Tous les paramètres
KeyboardOptions
ont désormais une valeur non spécifiée par défaut. Ajout de la méthodeKeyboardOptions.merge
. KeyboardOptions.autoCorrect
a été renommé enautoCorrectEnabled
et peut désormais être nul, ce qui indique qu'aucune valeur n'a été spécifiée. (Ia8ba0, b/295951492)- Changement de nom :
outOfBoundsPageCount
devientbeyondViewportPageCount
. (I129c6) fun ClipEntry.getMetadata()
devientval ClipEntry.clipMetadata
. (I50155)- Suppression de
TextFieldState.valueAsFlow()
. Utilisez de préférencesnapshotFlow { state.text }
ousnapshotFlow { TextFieldCharSequence(state.text, state.selection) }
. (I7d629) - Réorganisation des paramètres
InputTransformation.transformInput
.originalValue: TextFieldCharSequence
a été supprimé. À la place,TextFieldBuffer
porte désormais cette valeur avec le même nom. Suppression du paramètrevalueWithChanges: TextFieldBuffer
.TextFieldBuffer
est désormais le champ d'application du récepteur de la fonction. (I919cc) - La variante
BasicTextField(state)
etBasicSecureTextField
utilisent désormaisKeyboardActionHandler
au lieu deKeyboardActions
pour 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 champs de saisie de texte "factices". (I9c09c, b/327271923)
- Changement de nom :
KeyboardOptions.shouldShowKeyboardOnFocus
devientshowKeyboardOnFocus
. (Ib4b7a, b/295951492) - Suppression du paramètre
hintMediaTypes
deModifier.contentReceiver
. Les développeurs étaient déjà invités à vérifier le type de contenu multimédia de l'TransferableContent
reçu, car il pouvait être incompatible avec l'hintMediaTypes
configuré. (I82f99) - Réorganisation des paramètres de
BasicSecureTextField
. Suppression des paramètreskeyboardType
etimeAction
au profit de la classeKeyboardOptions
complète, tout en conservant les valeurs par défaut appropriées pourBasicSecureTextField
. Suppression du paramètrescrollState
. (Ibbfa9) - Le type de
TextFieldState.text
est passé deTextFieldCharSequence
àCharSequence
. Par conséquent, nous avons ajoutéTextFieldState.selection: TextRange
etTextFieldState.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.getClipMetadata
etClipboardManager.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.getClip
est nul ou non pour savoir si le presse-papiers contient un extrait actuel. (I50498) ClipboardManager.setClip
accepte désormais la valeur nulle pour pouvoir effacer le presse-papiers. (I7d2e9)ReceiveContentListener
est converti en interface de fonction. La surchargeModifier.receiveContent
qui accepte un lambda est également supprimée, carReceiveContentListener
est désormais une interface de fonction.Modifier.receiveContent
a été renomméModifier.contentReceiver
. (I1e6af)- Changement de nom :
TransferableContent.consumeEach
devientTransferableContent.consume
. (I1e462) rememberTextFieldState
est désormais 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 à des données obsolètes dans certains cas avec la réutilisation de
Modifier.Node
.Modifier.dragAndDropTarget()
(I05bb1) - Modification révoquée du contrat récent, qui entraînait le blocage des appels
AnchoredDraggableState#anchoredDrag
à 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
LocalTextLinkStyle
expérimentale pour styliser les liens hypertextes. (Iebfa7) - Suppression du forçage expérimental de
BasicText
avec l'argumentonLinkClicked
. Une API de remplacement pour la prise en charge des liens hypertextes sera disponible à l'avenir. (I107d5) - Suppression des méthodes et propriétés associées aux codepoints sous
TextFieldState
etTextFieldBuffer
. Suppression des suffixesinChars
des API restantes liées à la sélection et à la composition. (Ief7ce) currentValue
deAnchoredDraggable
est désormais mis à jour lors du passage par un point d'ancrage. UtilisezsettledValue
pour recevoir la sémantiquecurrentValue
précédente, en ne la mettant à jour que lorsque vous vous arrêtez sur un 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
,TextFieldLineLimits
etTextFieldDecorator
sont passés à la version stable. (I9582b)- Ajout de
InterceptPlatformTextInput
pour faciliter l'écriture de tests de bas niveau liés à l'IME et d'autres cas d'utilisation de l'IME de bas niveau.PlatformTextInputTestOverride
est maintenant obsolète. (I862ed, b/322680547) - Séparation de
restrictedConstraints()
en deux méthodes:fitPrioritizingWidth()
etfitPrioritizingHeight()
(I6d7fd)
Contribution externe
- Ajout de deux nouvelles API
isLastScrollForward
/isLastScrollBackward
pour vérifier la direction de défilement de la dernière action de défilement. Renvoie la valeur "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 avec stylet sur les appareils équipés d'Android U ou version ultérieure. (I002e4)
- Ajout de
hintLocales
àKeyboardOptions
pour permettre àTextFields
d'indiquer aux IME des paramètres régionaux spécifiques afin de prédéfinir une langue préférée. (Id18c2) - Suppression des surcharges expérimentales
BasicTextField2
etBasicSecureTextField
qui acceptaient les paramètresvalue: String
etonValueChange: () -> String
. (I568b4) - Ajoutez une fonction
applySemantics
facultative àInputTransformation
pour influencer la sémantique duBasicTextField2
auquel elle s'applique. (I74a2f, b/170648072) - Dans cette CL, nous ajoutons l'action sémantique
GetScrollViewportLength
afin de pouvoir transmettre des informations sur les composants défilés dans Compose au système a11y. Cette CL applique également l'utilisation de cette propriété dans les listes déroulantes Foundation. (Ic5fa2) BasicTextField2
a été renomméBasicTextField
. (Ie5713)FocusRequester.createRefs
est désormais stable (I4d92c, b/261436820).- Ajout de
DelegatableNode.scrollIntoView()
pour permettre aux nœuds de modification d'envoyer directement des requêtesscrollIntoView
. (I2b3b7, b/299939840) - Ajout de
DelegatableNode.requireView()
pour permettre aux nœuds de modification d'obtenir l'View
Android actuel sans lire une composition locale. (I40768) - Présentation d'informations de mise en page contextuelle dans le champ d'application de la ligne et de la colonne du flux contextuel, avec l'indice de ligne, la position et les contraintes de largeur et de hauteur maximales pour rester dans la position spécifiée. Les éléments dont la largeur/hauteur dépasse la valeur maximale peuvent être affichés sur la ligne suivante ou être omis en fonction des paramètres de débordement. (Id13f8, b/292114798)
Correction de bugs
- Correction d'un bug qui provoquait un plantage en cas d'activation ou de désactivation des attributs
enabled
oureadOnly
deTextField
dans certaines conditions. (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 laLayoutCoordinates
actuelle d'unModifier.Node
sans avoir à remplaceronPlaced
et à stocker vous-même les coordonnées dans une propriété. (Ia8657) - Ajout de
DelegatableNode.currentLayoutCoordinates
pour obtenir laLayoutCoordinates
actuelle d'unModifier.Node
sans avoir à remplaceronPlaced
et à stocker vous-même les coordonnées dans une propriété. (Iaebaa) - Optimisations des performances dans
DraggableAnchors
utilisées parAnchoredDraggable
. (I89cff) BasicTextField2
et les API associées du packageandroidx.compose.foundation.text2
sont déplacées versandroidx.compose.foundation.text
. (I9f635)BasicTextField2
n'accepte plus de paramètreCodepointTransformation
. UtilisezBasicSecureTextField
ouOutputTransformation
. (Id34ff)- Ajout d'une méthode permettant de comparer uniquement les annotations de deux
AnnotatedStrings
. (I32659) - Présentation de
ContextualFlowRow
et deFlowRow
/Column
améliorés avecMaxLines
etOverflow
. Nous sommes heureux d'annoncer des améliorations apportées auxFlowRow
etFlowColumn
expérimentaux, qui incluent désormaismaxLines
et la prise en charge du débordement, ainsi que le lancement deContextualFlowRow
etContextualFlowColumn
. Cette mise à jour est conçue pour fournir des composants optimisant les performances.ContextualFlow*
est parfait pour un grand nombre d'éléments utilisant une petite configurationmaxLines
et des boutons dynamiques "+N Voir plus".FlowRow
etFlowColumn
sont parfaits pour un petit nombre d'éléments, moins de 100 éléments. Important: Pour conserver le comportement existant dansFlowRow
ouFlowColumn
, où tous les éléments sont composés, que ce soit ou non en fonction de la taille maximale de l'axe croisé, définissezoverflow
surFlowRowOverflow.Visible
ouFlowColumnOverflow.Visible
lors de l'initialisation. DécouvrezContextualFlowRowSample
etFlowRowSample
pour voir comment ces nouvelles fonctionnalités fonctionnent. (Ib9135, b/293577082)
Correction de bugs
- L'animation du curseur ne demande plus de frames entre les états "activé" et "désactivé". (Ia2253)
- Les constructeurs de copie obsolètes de
KeyboardOptions
copient 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
,VerticalPager
etPagerState
sont définis comme stables. (I67660, b/316966909)- Ajout d'une composition locale
LocalTextLinkStyle
permettant de modifier le style des liens dans le texte dans l'application. Si vous utilisez votre propre thème dans l'application, vous devez définir cette composition locale en fonction de votre thématisation. Lorsque vous utilisez le thème Material, la couleur du lien est définie par défaut sur la couleur primaire de Material. (I7eb10) - Ajout du modificateur
receiveContent
, qui permet aux développeurs de recevoir du contenu enrichi dans Jetpack Compose. receiveContent
s'intègre àBasicTextField2
pour 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
SnapFlingBehavior
parTargetedFlingBehavior
dans le pager pour ouvrir d'autres cas d'utilisation et offrir plus de flexibilité. (I762ea) - Avec ce changement, nous rendons les API de collage stables. Nous nettoyons également une partie du code de test et ajoutons d'autres exemples à l'ancrage. (Id8da9)
- Présentation de
TargetedFlingBehavior
, unFlingBehavior
qui 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
BasicTextField2
maintient désormais le curseur visible pendant la saisie lorsqu'il a été masqué par le défilement ou qu'il risque de l'être en raison d'une 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 d'obtenir des implémentationsIndication
plus performantes que l'ancienne APIrememberUpdatedInstance
(désormais obsolète). Pour en savoir plus sur la migration, consultez developer.android.com. clickable / combinedClickable / selectable / toggleable
accepte désormais un paramètreMutableInteractionSource
pouvant être nul. Si la valeur est nulle et que l'Indication
fournie est unIndicationNodeFactory
, la création de l'Indication
ne peut être effectuée de manière paresseuse que si nécessaire, ce qui améliore les performances. Si vous n'utilisez pasMutableInteractionSource
, nous vous recommandons de transmettre la valeur null.
Modifications apportées à l'API
- Introduction de
DecayAnimation
dansAnchoredDraggable
. Cette modification ajoute un paramètredecayAnimationSpec
àAnchoredDraggable
, ce qui permet d'utiliser une animation de décroissance lors de l'ancrage sur l'une des ancres. Cette modification inclut également le changement de nom deanimationSpec
existant ensnapAnimationSpec
pour faciliter la compréhension du cas d'utilisation de chaque spécification. BasicTextField2
est disponible à des fins expérimentales. Il doit être à peu près équivalent àBasicTextField
en termes de fonctionnalités, et son comportement doit être prêt à être déployé en production. Toutefois, l'API reste expérimentale pour le moment. Avant d'être stabilisé, il sera renomméBasicTextField
et déplacé dans le même package.- Introduction de la première ébauche de l'API
OutputTransformation
pourBasicTextField2
. Cette API remplace la plupart des cas d'utilisation deVisualTransformation
dans l'ancienneBasicTextField
. Elle n'est toutefois pas encore terminée, et certaines fonctionnalités ne fonctionneront pas correctement. Nous serions toutefois ravis de recevoir vos commentaires sur l'usabilité de l'API pour vos cas d'utilisation. (aosp/2708848) - Introduction de
LinkAnnotation
, qui permet d'ajouter des liens et des éléments cliquables dans le texte. La fonctionnalité Liens n'est pas encore terminée, et d'autres modifications de l'API sont à venir. - Ajout du modificateur
receiveContent
, qui permet aux développeurs de recevoir du contenu enrichi dans Jetpack Compose. receiveContent
s'intègre àBasicTextField2
pour accepter le contenu enrichi fourni par le clavier logiciel ou via le collage depuis le presse-papiers.KeyboardOptions.shouldShowKeyboardOnFocus
vous permet de désactiver le comportement par défaut deBasicTextField
, qui consiste à demander un clavier logiciel lors de la sélection.TextInputService
etLocalTextInputService
sont désormais obsolètes. Utilisez plutôtPlatformTextInputModifierNode
pour intégrer directement les API IME de la plate-forme. (aosp/2862698)Indication#rememberUpdatedInstance
est 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
BasicTextField
prévalidera désormais une petite sélection de mappages de décalage lorsqueVisualTransformation
est transmis. Cela permet de détecter les erreurs de codage courantes qui entraînent des exceptions irrécupérables lors des mesures ou des passes de dessin ultérieures. En générant une exception pendant 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)VisualTransformation
ne génère pas d'exception si vous renvoyez 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 provoquait un plantage en cas d'activation ou de désactivation des attributs
enabled
oureadOnly
deTextField
dans certaines conditions. (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 aux bugs difficiles à reproduire dans les lignes/colonnes: (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
- Un geste de sélection par appui long suivi d'un glissement qui sort des limites de mise en page du texte dans le premier frame du glissement ne provoque plus de plantage. (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 correcte de
AnimateContentSize
. (I07051) - Correction d'un problème qui entraînait une surcharge de la mise en cache de
intrinsicHeight
de texte dans certains cas. (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 décalée lorsque le défilement dépasse la limite. (bffc39)
- Ajout d'une vérification de la mise en page avec de grandes dimensions. (e74af5)
- Correction du positionnement des éléments de taille 0 au début de la grille décalé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.anchoredDraggable
qui permet de faire glisser et d'animer des éléments entre un ensemble d'ancrages prédéfinis. Ce modificateur est destiné à remplacerModifier.swipeable
. Découvrez comment l'utiliser et migrer depuisModifier.swipeable
dans le guide de migration. - La fonctionnalité de glisser-déposer entre les applications et les composants a été ajoutée. Pour commencer, consultez
DragAndDropTarget
,Modifier.dragAndDropSource
et d'autres API. Modifier.draggable2D
est le nouveau modificateur qui permet de faciliter la prise en charge du glisser-déposer en 2D. Consultez Exemple.AndroidExternalSurface
etAndroidEmbeddedExternalSurface
ont été ajoutés pour faciliter l'ajout de composants basés sur la surface dans Compose.- Diverses modifications et améliorations de l'API dans
Pager
etsnapFlingBehaviour
- Plusieurs API de mise au point, de texte et d'encarts sont désormais disponibles en version stable.
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 du plantage qui affectait le texte très volumineux mesuré avec des contraintes infinies. (I1a7df, b/312294386)
PlatformImeOptions
est désormais une classe concrète et non plus 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 du problème de non-mise à jour de
canScroll
après un défilement de redisposition uniquement. (I60a86) - Correction pour
Modifier.animateItemPlacement()
etLookaheadScope
aprè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
DragAndDropTarget
accepte désormais explicitement leDragAndDropTarget
destinataire et dispose d'un lambda pour activer une session de glisser-déposer. Il existe désormais deux fonctions d'usine pour unDragAndDropModifierNode
. L'un pour recevoir les transferts et l'autre pour transférer des données (I69481) - Modification de
maximumFlingVelocity
pour qu'il soit représenté en tant que Float. Mise à jour de la documentation pour clarifier l'unitémaximumFlingVelocity
. (I8adc7) onDragAndDropStart
dans l'usineDragAndDropModifierNode
a été renomméacceptDragAndDropTransfer
.acceptsDragAndDropTransfer
a été ajouté à laModifier
dragAndDropTarget
pour accepter à partir d'une session de glisser-déposer. Ce lambda renvoie unDragAndDropTarget
viable si vous souhaitez une session de glisser-déposer. Les autres lambdas permettant de traiter les événements de glisse ont été remplacés par celui-ci.Une fonction de fabrique
DragAndDropTarget
a été ajoutée pour recevoir des sessions de glisser-déposer (Iebf3a).L'exposition de
startDragImmediately
dansAnchoredDraggable
permet de contrôler la détection des gestes de glissement lors de son utilisation. Il est utile de le définir lorsque le widget effectue une animation vers un ancrage cible. Consultez Exemple. (Ie6d13, b/285139987)Les API d'info-bulle Foundation sont désormais
@ExperimentalFoundationApi
(I30b0b)Suppression de
DragAndDropInfo
en tant que type.DragAndDropModifierNode.drag
accepte désormais des paramètres pour le lambdaDrawScope
transferData
, la taille de la décoration et la décoration de glissement.DragAndDropTarget
comporte des méthodes pour des événements de glisser-déposer particuliers au lieu d'être une méthode abstraite unique.onDragAndDropEvent
dans la fonction d'usine d'unDragAndDropModifierNode
a été renomméonDragAndDropStart
pour mieux indiquer que l'DragAndDropTarget
fourni n'est valide que pour une session de glisser-déposer donnée.Suppression de
DragAndDropEventType
. (I645b1)Changement de nom :
PlatformTextInputModifierNode.runTextInputSession
devientestablishTextInputSession
. (I03cd0)Remplacez
OriginalText
parTextSubstitution
. (Ifa5a8)Changement de nom :
PlatformTextInputModifierNode.textInputSession
devientrunTextInputSession
. (Ie9c6b)Les enfants de
SubcomposeLayout
(et les mises en page commeLazyColumn
qui s'y basent) 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. Les autres API de test filtreront les nœuds désactivés par défaut. (I2ef84, b/187188981)Le paramètre
clippingEnabled
deModifier.magnifier
est renomméclip
.Le paramètre
magnifierCenter
deModifier.magnifier
est rendu nullable, ce qui préserve le même comportement par défaut. (I6aa66)Les API Material
SwipeToReveal
(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émonstration et l'exemple de code pour savoir comment utiliser la nouvelle API. (Ia8943)
Correction de bugs
- Implémentez equals et le code de hachage pour
PageSize.Fixed
. (Ie3ede, b/300134276) - Correction d'un bug qui empêchait la mise en page de
BasicText
de se réduire lorsqueminWidth
changeait et queminWidth
était inférieur aux contraintes de mesure initialesmaxWidth
(Idb19c) - Ajout de la prise en charge du dégradé de balayage dans le moteur de rendu
ArcLine
. (I4d5bb) - Correction d'un problème de compatibilité binaire avec le changement de marge intérieure de la fenêtre (Iee695)
- Suppression de la couche de base Material pour le chip/bouton Material3, car les micro-benchmarks 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.draggable2D
est le nouveau modificateur qui permet de faciliter la prise en charge du glisser-déposer en 2D. Voir l'exemple (Id95f5, b/214412658)
Modifications apportées à l'API
- Le lambda
onDrawDragShadow
deModifier.dragAndDrawSource
a été renommédrawDragDecoration
, et le paramètre de taille deDragAndDropInfo
a été renommédragDecorationSize
. (Id0e30, b/303904810) - Le paramètre
decorationBox
deBasicTextField2
est renommédecorator
. Son type est également remplacé par une interface de jeuTextFieldDecorator
équivalente. (I23c1c)
Correction de bugs
- Amélioration de la documentation sur
BasicTextField
concernant 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
PlatformTextInputMethodTestOverride
pour écrire des tests pour les éditeurs de texte personnalisés. (Id159b) GraphicsSurface
renommé enAndroidExternalSurface
(I11680)- Ajout d'un indicateur temporaire
DisableNonLinearFontScalingInCompose
pour désactiver l'ajustement non linéaire de la police. DéfinissezDisableNonLinearFontScalingInCompose = true
dans vos tests si vous avez besoin de temps pour les nettoyer. Cet indicateur sera supprimé dans Compose 1.6.0-beta01. (Ic9486) - Ajout de collections
ColorList
etColorSet
qui évitent les allocations. (I744bd) - Cette modification supprime
shortSnapVelocityThreshold
, qui a été transformé en détail d'implémentation des implémentations deSnapLayoutInfoProvider
. (I65f6d) - Ajout du modificateur
dragAndDropSource
pour démarrer des sessions de glisser-déposer et du modificateurdragAndDropTarget
pour recevoir des sessions de glisser-déposer. (Ib7828, b/286038936) - Mise à jour de la documentation et de la méthode de position de
SnapPositionInLayout
. Ajout de marges intérieures au contenu de la méthode de position dansSnapPositionInLayout
. (Id7938, b/300116110) - Ajout de
UndoState
àTextFieldState
, qui permet d'annuler/de rétablir les modifications apportées par l'utilisateur. (Icc024)
Correction de bugs
- Correction du problème d'absence d'animation de
basicMarquee
après modification de la 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 de composables pour
SurfaceView
,TextureView: GraphicsSurface()
etEmbeddedGraphicsSurface()
. Il s'agit d'une API expérimentale susceptible d'être modifiée. (I9ddb2) Modifier.magnifier()
est désormais une API stable. Cela inclut la suppression deMagnifierStyle
au profit de paramètres intégrés dans le modificateur lui-même. (I83bec, b/298381260, b/262367109, b/261438887)
Modifications apportées à l'API
updateCurrentPage
etupdateTargetPage
ont été introduits dansScrollScope
. Il s'agit des dernières pièces 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 deSnapLayoutInfoProvider
disposent déjà d'un moyen d'accéder à la densité. Le champ d'application du récepteur pourrait être supprimé, ce qui entraînerait une implémentation moins complexe deSnapFlingBehavior
et deSnapLayoutInfoProviders
. (I153c3) - Plus de modificateurs marqués comme stables. (I56af1, b/298046462)
SnapStepSize
a été supprimé deSnapLayoutInfoProvider
. Le calcul doit être effectué à l'aide des informations de mise en page et fourni via les décalages d'approche ou d'accrochage. (If320c)
Nouveaux comportements
- Compose utilise désormais une mise à l'échelle de la police non linéaire pour améliorer la lisibilité et l'accessibilité. Lorsque l'échelle de la police est supérieure à 100% dans les paramètres système, la taille du texte de petite taille augmente normalement, mais celle du texte déjà de grande taille n'augmente que légèrement. De plus, les hauteurs de ligne définies dans SP s'ajustent automatiquement pour rester proportionnelles à la hauteur prévue à 100 %. Pour en savoir plus, consultez les bonnes pratiques concernant l'ajustement de la taille de la police. (I11518)
Correction de bugs
- Suppression de l'utilisation de
rememberSaveable
pour 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
BasicSecureTextField
qui acceptent une valeur immuable et un rappel pour modifier cette valeur, comme l'APIBasicTextField
actuelle. (Ia4882) - Ajout de
Modifier.preferKeepClear()
pour marquer comme composable, car il est préférable de ne pas utiliser de fenêtres flottantes sur l'API 33 ou version ultérieure. (Ib51d5, b/297260115) - Les vitesses de balayage dans les composants View tels que
ScrollView
etRecyclerView
sont limitées àViewConfiguration.ScaledMaximumFlingVelocity
. Compose contient désormais sa propre version demaximumFlingVelocity
, qui s'applique désormais àDraggable
. (Ibf974) - Suppression des surcharges
Pager
etPagerState
obsolètes. (Iea07e) - Ajout de
BasicTooltipBox
àcompose.foundation
et mise à jour dePlainTooltipBox
etRichTooltipBox
pour utiliserTooltipBox
avec les nouveaux composablesPlainTooltip
etRichTooltip
. (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
ReusableComposition
pour gérer le cycle de vie et la réutilisation des sous-compositions. (I812d1, b/252846775) Modifier.focusGroup
est défini comme une API stable. (I7ffa3)- Ajoutez des surcharges pour
BasicTextField2
qui acceptent une valeur immuable et un rappel pour modifier cette valeur, comme l'APIBasicTextField
actuelle. (I3f2b8) GridItemSpan::currentLineSpan
est désormais une API stable. (Icc29c)- Le canevas qui accepte
contentDescription
est désormais une API stable. (Ib3d29) - Introduction de
viewportSize
dansScrollState
, qui permet de connaître la tailleviewPort
du composant qui utiliseScrollState
après la mesure. (I8b85a, b/283102682) - Correction d'un problème où le préchargement dans Pager ne correspondait pas au comportement dans les vues. (I93352, b/289088847)
Modifier.consumeWindowInsets(PaddingValues)
est désormais stable.- L'API
Deprecated Modifier.consumedWindowInsets
est désormais 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) - Prise en charge de la configuration de
privateImeOptions
(Idb772)
Correction de bugs
- Correction des champs de texte qui affichaient le clavier et étaient modifiables lorsque
readOnly
était défini sur "true". Correction du problème de non-affichage du clavier lorsquereadOnly
est défini sur "false" au lieu de "true" lorsqu'il est sélectionné. (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
- Introduction de
PagerLayoutInfo
avec des informations collectées après un passage de mesure dansPager
. Ajout dePageInfo
, les informations sur une seule page mesurée dansPager
. (Iad003, b/283098900) - Annotations supplémentaires pour spécifier les entrées autorisées dans les composables (I51109)
- Ajout de
SemanticsNodeInteraction.requestFocus
pour demander la mise au point de manière plus pratique et visible dans les tests. (Ie8722) - Refonte complète de l'API
PlatformTextInput*
. (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardController
etLocalSoftwareKeyboardController
ne sont plus au stade expérimental.LocalSoftwareKeyboardController
est désormais unCompositionLocal
approprié. (I4c364)Modifier.transformable
fournit désormais un delta de panoramique dans le paramètrecanPan
pour déterminer la direction du panoramique à autoriser ou non. (I692aa, b/266829800)- Mise à jour du modificateur
consumeWindowInsets
pour étendre la super-classeAbstractComposeView
. (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
AnchoredDraggable
dans Foundation. Il peut être utilisé pour créer des composants pouvant être glissés entre des états distincts, comme des bottom sheets modales. Cette API remplace l'APISwipeable
de Material. (I4a2ed)
Modifications apportées à l'API
- Prise en charge de
InputConnection#requestCursorUpdates
(I0c69b) - Introduction de
scrollAnimationSpec
pour permettre les spécifications d'animation personnalisées. ParamètreBringIntoViewCalculator
remplacé parBringIntoViewScroller
. (Idb741) - Ajout du type
ResourceResolutionException
pour encapsuler les throwables générés lors de la tentative de chargement d'éléments bitmap avec une description du chemin d'accès de 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 la traduction de texte. (I4a6bc)
- Ajout d'une API
BringIntoViewCalculator
permettant de personnaliser la manière dont des composants tels queScrollable
répondent aux requêtesbringIntoView
. Modification de la surcharge de scrollable pour qu'elle accepte éventuellement une instance deBringIntoViewCalculator
. (Iaf5af)
Correction de bugs
- Ajout d'une vérification lint pour vous avertir si vous créez un
MutableInteractionSource
en composition sans vous en souvenir, comme les vérifications lint pour créer un état modifiable /Animatable
. (I5daae) - Ajout de la possibilité de sélectionner des éléments à l'aide de 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 unFocusTarget
personnalisé. (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 nouveauté.
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 provoquait 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 qui affichaient le clavier et étaient modifiables lorsque
readOnly
était défini sur "true". Correction du problème de non-affichage du clavier lorsquereadOnly
est défini sur "false" au lieu de "true" lorsqu'il est sélectionné. (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 les frais généraux liés à la composition initiale. - Amélioration de la stabilité des paginations. De nombreux bugs ont été corrigés.
- Les paramètres
pageCount
se trouvent désormais dansPagerState
au 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 de 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 les sorties de lint de votre projet, modifiez sa gravité de "informationnel" à "avertissement" (ou plus) en déclarantwarning "AutoboxingStateCreation"
dans la configurationbuild.gradle
oubuild.gradle.kts
de 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
PlatformDataProvider
pour fournir la fréquence cardiaque et le nombre de pas quotidiens. L'interfaceSensorGateway
est supprimée de l'API publique. (I55b84)
Correction de bugs
- Réduction des allocations lors des mesures de listes/grilles/etc. différées (Iaf9e2)
- Allocations réduites lors de l'application d'instantanés (I65c09)
- Suppression des allocations des animations de rétroaction (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) - Introduction d'un
SnapLayoutInfoProvider
pouvant être utilisé avecLazyGridState
. (I92134, b/269237141, b/260914964) Modifier.animateItemPlacement()
expérimental a été ajouté pour le champ d'application des éléments de grilles décalées différées. Vous pouvez l'appliquer aux éléments pour obtenir les animations de changement de position/de réorganisation automatiques. (I4b62d, b/257034719)- Promotion de
GridCells.FixedSize
en version stable.FixedSize
définit unLazyGrid
où chaque cellule prend la taille exacte sur l'axe transversal, l'espace restant étant réparti selon l'arrangement de l'axe transversal. (I8542f) - Ajout du champ d'application du récepteur
PagerScope
pour le pager et d'une fonction utilitaire pour calculer un décalage de page donné. (If2577) - Introduisez
snapPositionalThreshold
lorsque vous créez un comportement de glissement d'un geste vif. Utilisez ce paramètre pour spécifier un seuil de position pour l'ancrage court dans Pager. (If8f7f) SnapLayoutInfoProvider.calculateSnappingOffsetBounds
a été remplacé parcalculateSnappingOffset
. Dans cette nouvelle méthode, nous demandons simplement le prochain décalage à utiliser. Le calcul des limites doit être effectué au niveau de l'implémentation, car il peut varier en fonction de la façon dont l'ancrage doit se produire. (I923a4)- Les API
LazyStaggeredGrid
sont désormais considérées comme stables. (I633a5) - Suppression de
pageCount
deHorizontal/VerticalPager
. Cette valeur doit être fournie lors de la création de l'état. Mise à jour dePagerState
etrememberPagerState
pour accepterpageCount
. (Ieb52d, b/266965072) - Suppression de
pageCount
deHorizontal/VerticalPager
. Cette valeur doit être fournie lors de la création de l'état. Mise à jour dePagerState
etrememberPagerState
pour accepterpageCount
. (Ifa3cb, b/266965072) - Présentez
shortSnapVelocityThreshold
dans leSnapFlingBehavior
de Pager. (I7379e, b/275579012) - Ajoute un
FlowRowScope
et unFlowColumnScope
. (I54fe2)
Correction de bugs
- Les appels permettant d'obtenir des sémantiques sur le texte lorsque les contraintes comportent
minWidth
etminHeight
ne plantent plus. (Ibd072) - Correction de la régression où le clavier ne s'affichait pas pour les champs de texte dans les boîtes de dialogue qui n'étaient pas 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 du texte pour Compose. La nouvelle pile est optimisée pour les performances. Vous ne devriez donc pas voir 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. Ce paramètre force la recomposition. 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
- Rend
FlowColumn/FlowRow
en 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
LazyGrid
et leur organisation avec une disposition croisée des axes. (I83ed9, b/235121277, b/267942510) - Prise en charge des voies de taille fixe dans
LazyStaggeredGrid
et organisation avec une disposition croisée des axes. (I7d519) - Les
UrlAnnotation
dans lesAnnotatedString
peuvent désormais être ouverts via des services d'accessibilité tels queTalkBack
. (If4d82, b/253292081) - Ajout de l'action de sémantique
InsertTextAtCursor
pour les champs de texte. (I11ed5) - Les actions de test liées au texte (par exemple,
performTextInput
) demanderont désormais directement la sélection, à 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 des axes croisés à l'aide de
verticalArrangement
dansFlowRow
ethorizontalArrangement
dansFlowColumn
. Nous supprimons également lesverticalAlignment
ethorizontalAlignment
de premier niveau dansFlowRow/FlowColumn
. Les développeurs peuvent utiliserModifier.align
à la place. Cela permet d'éviter toute confusion entre les conventions d'attribution de noms deverticalAlignment
et deverticalArrangement
. (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
BasicText
sont refactorisés pour utiliser le nouveau système de modificateur. Dans de nombreux cas, cela permet d'améliorer considérablement les performances. Aucune modification ne devrait être visible. (If1d17, b/246961435) - Ajout de l'action de sémantique
PerformImeAction
pour appeler l'action IME sur les nœuds de l'éditeur de texte. (Ic606f, b/269633506)
Correction de bugs
- Mise à jour des composants internes de
Modifier.hoverable
. Le modificateurhoverable
ne 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 (seulement une mise à niveau de version).
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
Text
etTextField
, ainsi que dans le paragraphe de niveau inférieur. Activé par défaut lorsque emojicompat est configuré. EmojiCompat
peut ê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
onHover
expérimental dansClickableText
(I6938f) - Introduction de surcharges expérimentales pour les fonctions
runComposeUiTest
etcreate*ComposeRule
qui acceptent les paramètresCoroutineContext
. Le contexte sera utilisé pour la composition de test, ainsi que pour les appelsLaunchedEffect
etrememberCoroutineScope()
dans la composition. (I10614, b/265177763) FlowRow
etFlowColumn
sont 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
PlatformTextInputAdapter
de bas niveau pour créer des implémentations de saisie de texte personnalisées qui communiquent directement avec les API de la plate-forme. (I58df4) - Ajout de la prise en charge de la mise en page inversée dans
LazyStaggeredGrid
. (I3ef4a)
Correction de bugs
- L'action de sémantique
SetText
deBasicTextField
met désormais à jour le tampon de texte à l'aide du même chemin de code que les mises à jour de l'IME et les fonctions de test (par exemple,performTextReplacement
). - Les fonctions de test de texte
performTextClearance
,performTextReplacement
etperformTextSelection
utilisent 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 lorsqueLayout
est réutilisé (par exemple, en tant qu'élément deLazyColumn
). Correction deFocusTargetModifierNode
pour réinitialiser correctement l'état sélectionné. (I65495, b/265201972) - Ajout des paramètres
BlendMode
aux méthodesDrawScope.drawText
,Paragraph.paint
etMultiParagraph.paint
pour 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
TextField
vide. (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
Text
etTextField
, ainsi que dans le paragraphe de niveau inférieur. Activé par défaut lorsque emojicompat est configuré. EmojiCompat
peut être configuré sur un texte spécifique en utilisantPlatformParagraphStyle
.
Modifications apportées à l'API
- Ajout d'une implémentation courante de l'API
PinnableContainer
utilisée dans tous lesLazyLayouts
pour 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
,LazyGridLayoutInfo
etLazyStaggeredGridItemInfo
. (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
onHover
expérimental dansClickableText
. (I6938f) - Introduction de surcharges expérimentales pour les fonctions
runComposeUiTest
etcreate*ComposeRule
qui acceptent les paramètresCoroutineContext
. Le contexte sera utilisé pour la composition de test, ainsi que pour les appelsLaunchedEffect
etrememberCoroutineScope()
dans la composition. (I10614, b/265177763)
Modifications apportées à l'API
- Fusionne les API avant/après d'
OverscrollEffect
dans les fonctions "décorateur"applyToScroll
etapplyToFling
combiné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
LineBreak
etHyphens
deTextStyle
passent à 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.basicMarquee
s'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
notifyFocusedRect
dansTextInputSession
etTextInputService
ne 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
FlowRow
etFlowColumn
sont 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
AndroidFont
avecvariationSettings
est maintenant une API stable. Vous pouvez l'utiliser pour créer des types de descripteurs de police. (I5adcc, b/261565807) - Introduction de l'API
PinnableContainer
propagé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 à
bringIntoViewRequesters
ainsi 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
àTextStyle
pour définir le texte sur "Static(default)
" ou "Animé". UtilisezTextMotion.Animated
si un ajustement, une translation ou une rotation du texte doivent être effectués par une animation. (I24dd7) - Ajout de
TextFieldFocusModifier
pour corriger le comportement de sélection de navigation sur la plate-forme Android (I00303) - Remplacement de l'argument
maxSize: IntSize
dansdrawText
parsize: Size
pour l'aligner sur d'autres fonctionsDrawScope
.size
est défini surSize.Unspecified
par 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
SnapFlingBehaviour
pour 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.NoSuchFieldError
peut 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.material
etandroidx.compose.material3
vers 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
withFrameNanos
ne 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 directementwithFrameNanos
ouwithFrameMillis
et 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) -> Unit
facultatif au constructeurTestMonotonicFrameClock
et à 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
,PageLeft
etPageRight
. Celles-ci ne sont disponibles qu'à partir de l'API 29. (Ida4ab) - Ajout de
HorizontalPager
etVerticalPager
, qui permettent d'afficher des composables en mode pagination. Ajout dePagerState
pour 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.performFling
pour 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/backward
renvoient tous les deux la valeur "false"). (I1a4b0, b/255554340, b/255557085) - Ajout de
ScrollableState#canScrollForward
etScrollableState#canScrollBackward
pour demander si unScrollableState
peut 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 àScrollableStates
qui 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
Clickable
pour retarder correctement les interactions liées à une pression du doigt susceptible de devenir un événement de défilement. - Correction de
Clickables
qui 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
snapStepSize
pour 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
awaitFirstDown
etwaitForUpOrCancellation
acceptent désormaisPointerEventPass
pour 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
minLines
dansBasicText
etBasicTextField
. 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.imeAnimationSourc
e etWindowInsets.imeAnimationTarget
pour 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) ContentInViewModifier
ne 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
LazyVerticalStaggeredGrid
etLazyHorizontalStaggeredGrid
ont été introduites. SnapFlingBehavior
,rememberSnapFlingBehavior
et d'autres API correspondantes ont été ajoutées à titre expérimental.Modifier.clickable
,Modifier.toggleable
etModifier.selectable
affichent 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
lowVelocityAnimationSpec
utilisé 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
BringIntoViewResponder
peuvent 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 Grid
expérimentale. (I10b82) - Ajout d'une marge intérieure dans la fonction
Staggered Grid
expérimentale. (I342ea) - Remplacement de l'argument
size:IntSize
parconstraints: Constraints
dans la méthodeTextMeasurer.measure
pour prendre en charge les contraintes de largeur minimale. (I37530, b/242707525) - Ajout de
Modifier.withConsumedWindowInsets()
pour pouvoir utiliserWindowInsets
en dehors dewindowInsetsPadding
. - Ajout de
MutableWindowInsets
pour permettre de modifier facilementWindowInsets
sans 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
StaggeredGrid
expérimental. (Ia48be) - Changement de nom :
FocusDirection.In
etFocusDirection.Out
deviennentFocusDirection.Enter
etFocusDirection.Exit
. (Ia4262, b/183746982) - Introduction d'une surcharge
rememberSnapFlingBehavior
qui permet d'activer rapidement l'ancrage dansLazyLists
. (Ifb48a) - Remplacement de la fabrique
snapFlingBehavior
par une classeSnapFlingBehavior
concrète. Définition du champ d'application des méthodesSnapLayoutInfoProvider
sur la densité pour faciliter les conversions Dp<->Px pour les utilisateurs de l'API. (I54a11) - Mise à jour de
LazyLayoutMeasureScope.measure
afin 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 unLazyListState
pour créer une instance deSnapLayoutInfoProvider
permettant d'activer un ancrageFlingBehavior
pourLazyLists
. (I2dd10)
Correction de bugs
- Refactorisation de
AwaitPointerEventScope#awaitLongPressOrCancellation
pour 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
pointerPosition
deOverscrollEffect
. Les effets qui dépendent de la position du pointeur peuvent utiliserModifier.pointerInput { }
danseffectModifier
pour obtenir la position actuelle du pointeur. (I9f606, b/241239306) - Exposition de
AwaitPointerEventScope#awaitLongPressOrCancellation
comme composant supplémentaire pour la détection des gestes plus complexes. (I04374, b/181577176) - Introduction de
lazyListSnapLayoutInfoProvider
pour 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 deSnapLayoutInfoProvider
avec 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
PlatformTextStyle
etLineHeightStyle
. (I64bef) - Les champs de texte génèrent désormais des exceptions plus détaillées lorsque le
OffsetMapping
fourni par unVisualTransformation
renvoie 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 etTextInputSession
dans 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
drawText
surDrawScope
pour permettre d'afficher du texte multistyle sur les composables et les modificateurs fonctionnant sur un élémentDrawScope
tel queCanvas
oudrawBehind
. (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
UrlAnnotation
et des méthodes associées pour permettre la compatibilité avec les liensTalkBack
dans lesAnnotatedString
. (I1c754, b/231495122)
Correction de bugs
BasicTextField
cursorBrush
peut 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
LazyVerticalGrid
etLazyHorizontalGrid
sont 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
userScrollEnabled
qui permet de désactiver le défilement via les gestes de l'utilisateur. - Une API expérimentale appelée
LazyLayout
a é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
OverscrollEffect
a é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
OverscrollEffect
expérimental permettant de générer des effets de défilement hors limites personnalisés, ainsi que des surchargesModifier.scrollable
qui l'acceptent. - Changement de nom et déplacement de la propriété expérimentale
LocalOverScrollConfiguration
, renomméeLocalOverscrollConfiguration
et déplacée defoundation.gesture
vers 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
LazyVerticalGrid
du 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
IntervalList
etMutableIntervalList
. 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.ime
pour indiquer que les encartsime
sont 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
DeleteSurroundingTextCommand
etDeleteSurroundingTextInCodePointsCommand
, 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
BeyondBoundsInterval
expérimental utilisable par les implémentations personnalisées deLazyList
lorsqu'elles mettent en page des éléments au-delà des limites visibles. (Ifabfb, b/184670295) - Changement de nom :
LineHeightBehavior
devientLineHeightStyle
. - Changement de nom :
LineVerticalAlignment
devientLineHeightStyle.Alignment
. - Changement de nom :
LineHeightTrim
devientLineHeightStyle.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.itemsCount
devientitemCount
. (Id409c) - Ajout d'un pinceau à
TextStyle
et àSpanStyle
pour permettre l'affichage de texte avec un dégradé de couleurs. (I53869, b/187839528) - Remplacement des attributs
trimFirstLineTop
ettrimLastLineBottom
deLineHeightBehavior
par une seule énumération :LineHeightTrim
.LineHeightTrim
peut prendre quatre valeurs d'état (FirstLineTop
,LastLineBottom
, Both et None), définies par deux booléens. (Ifc6a5, b/181155707) Ajout de
LineHeightBehavior
àTextStyle
et àParagraphStyle. LineHeightBehavior
pour 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
trimFirstLineTop
ettrimLastLineBottom
ne fonctionnent correctement que siincludeFontPadding
est 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.bringIntoView
de 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.bringIntoView
simultané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 plusonGloballyPositioned
dé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.maxHeight
est 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 utiliserisConsumed
pour 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 dePointerInputChange
seront consommées une fois que l'une des copies aura été consommée. Si vous souhaitez créer unPointerInputChange
non 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émentLazyColumn
deLazyVerticalGrid
. Elle est disponible depuis peu et pourra être modifiée dans les prochaines versions. (Iba2bc, b/166591700) - Mise à jour de
AndroidFont
, qui accepte désormaistypefaceLoader
comme paramètre de constructeur. (I2c971) - Mise à jour des
WindowInsets
compagnons, 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
PinnableParent
permettant 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
LazyListLayoutInfo
etLazyGridLayoutInfo
, qui comportent désormais des champsbeforeContentPadding
etafterContentPadding
. (I3b628, b/200920410) - Ajout de
KeyboardType.Decimal
comme alternative àKeyboard.Number
pour 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.Scroll
etPointerEvent.scrollDelta
comme API stables. (I574c5, b/225669674) - Ajout d'une configuration de compatibilité pour
includeFontPadding
dansTextStyle/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.Resolver
pour intégrer le paramètre d'accessibilité Texte en gras à l'échelle du système. (I6c1e7) - Mise à jour de la propriété d'extension
consumeWindowInsets
deComposeView
, qui permet désormais aux développeurs de désactiver la consommation des WindowInsets Android. ChaqueComposeViews
dans la hiérarchie peut ainsi appliquer desWindowInsets
sans 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
RequestFocus
permettant de positionner le curseur sur la cible sélectionnable. (I17b71) - Fusion de
FocusOrder
avecFocusProperties
.focusProperties()
présente désormais toutes les fonctionnalités defocusOrder()
. Abandon deFocusOrder
etfocusOrder()
. La méthodefocusOrder()
qui accepte unfocusRequester
doit ê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
VectorPainter
si 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_RESIZE
dans 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
LazyVerticalGrid
etLazyHorizontalGrid
, désormais considérés comme stables. (I307c0) - Remplacement de
LazyGridItemInfo.Unknown
par deux éléments distincts :LazyGridItemInfo.UnknownRow
etLazyGridItemInfo.UnknownColumn
. (I56d51) - Mise à jour de
LazyVerticalGrid
/LazyHorizontalGrid
et des API associées, désormais déplacés dans le sous-package.grid
. Remplacez vos importations deandroidx.compose.foundation.lazy
parandroidx.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.onFocusedBoundsChanged
expé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
LazyVerticalGrid
permettant 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 breaking
avant les éléments qui ne tiennent pas sur la ligne actuelle. (I05c40, b/207462103) - Changement de nom :
excludeFromSystemGestures
devientsystemGesturesExclusion
. (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
,ComposableTargetMarker
etComposableOpenTarget
pour 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
ComposeNode
ou une fonction modulable associée.Pour les applicateurs personnalisés, les fonctions modulables qui appellent
ComposeNode
ouReusableComposeNode
doivent ajouter une annotationCompoableTarget
pour 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 à unComposbleTarget
avec 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
notifyFocusedRect
dansTextInputSession
etTextInputService
. 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
FontFamilyResolver
viaLocalFontFamilyResolver.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.resourceLoader
a é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.ResourceLoader
en dehors de la composition via la fonction d'extensionFont.AndroidResourceLoader
. - Ajout du paramètre
loadingStrategy
aux 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 surLazyGridScope
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. (I7b355, b/215372836) - Ajout de propriétés à
LazyListLayoutInfo
etLazyGridLayoutInfo
:viewportSize
,orientation
etreverseLayout
. (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
FontLoader
pour ordinateur. - Nouvelle fabrique
createFontFamilyResolver
sur 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
NonRestartableComposable
aux 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
excludeFromSystemGesture
pour faciliter l'accès auxsetSystemGestureExclusionRects
d'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.verticalScroll
et 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
,LazyRow
etLazyVerticalGrid
pour 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
onSizeChanged
au 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
TextField
qui 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
NullPointerException
dansandroidx.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 zones 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 zones cibles tactiles. Par exemple, la zone 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 zones 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.item
ouLazyListScope.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 laSemanticsNodeInteraction
sur 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
performGesture
etGestureScope
, remplacés parperformTouchInput
etTouchInjectionScope
. (Ia5f3f, b/190493367) - Ajout de
touchBoundsInRoot
àSemanticsNode
, qui inclut la taille minimale des zones 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-alpha03
vers 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 zones 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.size
etrequiredSize
. (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/main
ou 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
,S
etP
et 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.SlotTable
aurait 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(): Boolean
surLayoutNode
aurait 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
H
signale qu'il s'agit d'une méthode "hot" qui doit être compilée à l'avance.Une méthode associée à l'indicateur
S
signale 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
P
signale 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
FocusState
par 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
,detectVerticalGestures
etdetectHorizontalGestures
, 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.ScrollToIndex
pour faire défiler une liste d'éléments indexés jusqu'à l'élément ayant un certain point de l'index, et deSemanticsProperties.IndexForKey
pour 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.dp
par 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
,accessibilityActionScrollRight
etaccessibilityActionScrollDown
. 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
,BoxScope
etBoxWithConstraintsScope
. (I4e83e, b/181869067)
Correction de bugs
- Correction du problème de mauvais positionnement des éléments de
LazyColumn
/LazyRow
situé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, appelerwithFrameNanos
ouRecomposer.runRecomposeAndApplyChanges
sansMonotonicFrameClock
gé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
LocalSoftwareKeyboardController
pour remplacer l'ancienne interface SoftwareKeyboardController sur TextField. (I5951e, b/168778053) - Ajout d'une nouvelle API locale de composition
LocalSoftwareKeyboardController
pour 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
InteractionState
par[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 queButton
etModifier.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
defaultFactory
pourcompositionLocalOf
etstaticCompositionLocalOf
, 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
defaultFactory
doit 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ètreInteractionState
d'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ètreindication
est 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.enforce
parConstraints.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 class
des 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 étendComposeTestRule
et définitsetContent
, qui a été supprimé deComposeTestRule
. Ajout d'une méthode de fabriquecreateEmptyComposeRule()
qui renvoie uneComposeTestRule
et 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
initial
des 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
CompositionLifecycleObserver
parRememberObserver
, 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,onRemembered
est appelé pour chaque référence, tandis queonEnter
n'est appelé qu'une seule fois.onEnter
était appelé plusieurs fois si l'objet était utilisé dans des sous-compositions, telles queWithConstraints
etScaffold
, ce qui rendait un appel unique deonEnter
non fiable, justifiant sa suppression deRememberObserver
.RememberObserver
ajouteonAbandoned
, qui est appelé si l'instanceRememberObserver
est renvoyée par le rappel transmis àremember
, mais n'a pas été mémorisé dans l'état de la composition, faisant queonRemembered
n'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 deRememberObserver
qui suit la recommandation de référence unique ci-dessus suit une ressource externe,onForgotten
etonAbandoned
indiquent chacun que la ressource n'est plus nécessaire. Si l'objet suit le travail démarré ou les ressources allouées dansonRemembered
,onAbandoned
peut être ignoré, car il ne sera pas appelé sionRemembered
est 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 == 0
signifie 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
Applier
pour 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
LayoutNode
etView
, 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
maxLines
deCoreTextField
. 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ètreorientationLock
n'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
children
comme nom de lambda de fin verscontent
, conformément à la vérification lint et aux consignes. (Iec48e) - Déplacement des API
foundation:foundation-text
versfoundation: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-text
avecfoundation: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
,id
devientlayoutId
.Measurable.id
devientMeasurable.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.toImeOptions
de 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
.current
sur 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
unbounded
aux 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ètreminWidth
devientmin
etmaxWidth
devientmax
.preferredWidthIn
,heightIn
etpreferredHeightIn
sont 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
createAndroidComposeRule
etAndroidInputDispatcher
, deandroidx.ui.test.android
versandroidx.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.hasAwaiters
pour déterminer si un élément attend un frame de cette horloge ; remplacement derunBlocking
parrunWithManualClock
lors 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
enabled
etonZoomStarted
ont é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
Row
etColumn
en 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-dev15
de 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
enabled
distinct à 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 zone 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
Border
devientDrawBorder
. (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 :
runOnIdleCompose
devientrunOnIdle
. (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
runOnIdleCompose
etrunOnUiThread
de 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
setContent
ousetViewContent
à la place. Compose.disposeComposition a été abandonné. Utilisez la méthodedispose
sur leComposition
renvoyé 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.Item
est 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)