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 |
---|---|---|---|---|
4 septembre 2024 | 1.7.0 | - | - | 1.8.0-alpha01 |
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.0" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.7.0") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
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-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.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 suivantes ont été apportées à l'API, en plus des modifications internes. <ph type="x-smartling-placeholder">- </ph>
- Ajout d'une nouvelle API Indication,
IndicationNodeFactory
. Cela permet d'obtenir des implémentations d'indication 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 avoir une valeur nulle. Si la valeur est nulle et que l'indication fournie est uneIndicationNodeFactory
, elle ne peut être créée en différé qu'en cas de besoin, ce qui améliore les performances. Si vous n'effectuez pas le hissage et que vous n'utilisez pasMutableInteractionSource
, il est recommandé de transmettre la valeur null au lieu de transmettreremember { MutableInteractionSource() }
.Indication#rememberUpdatedInstance
est maintenant obsolète. Elle nuit aux performances et empêche toute autre optimisation. Utilisez plutôt la nouvelle APIIndicationNodeFactory
.
- Ajout d'une nouvelle API Indication,
BasicTextField
utilisant unTextFieldState
est désormais stable. Nous recommandons à tous les sites d'appel de commencer la migration 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'appliquer un style personnalisé en fonction de l'état du lien (par exemple, sélectionné ou pointé).- Présentation de
ContextualFlowRow
etEnhanced FlowRow/Column
avecMaxLines
etOverflow
. Nous sommes heureux d'annoncer des améliorations apportées auxFlowRow
etFlowColumn
expérimentales, qui prennent désormais en chargemaxLines
et overflow, en plus des débuts deContextualFlowRow
etContextualFlowColumn
. Cette mise à jour est conçue pour fournir des composants dont les performances sont optimales.ContextualFlow*
est idéal pour un grand nombre d'éléments utilisant une petite configuration maxLines et les boutons dynamiques +N voir plus de boutons, tandis queFlowRow
etFlowColumn
sont parfaits pour un petit nombre d'éléments (moins de 100). Important: Pour conserver le comportement existant dansFlowRow
ouFlowColumn
où tous les éléments sont composés, qu'ils s'adaptent ou non à la valeur maximale de l'axe transversal, définissez le dépassement surFlowRowOverflow.Visible
ouFlowColumnOverflow.Visible
lors de l'initialisation. ExplorezContextualFlowRowSample
etFlowRowSample
pour découvrir des exemples concrets de ces nouvelles fonctionnalités. (Ib9135, b/293577082). - Ajout de la prise en charge des animations liées à l'apparence et à la disparition des éléments dans
LazyColumn
etLazyRow
. Auparavant, il était possible d'ajouter le modificateurModifier.animateItemPlacement()
afin de prendre en charge les animations de placement (réorganisation). Nous avons abandonné ce modificateur et introduit un nouveau modificateur non expérimental appeléModifier.animateItem()
, qui vous permet d'accepter les trois types d'animation: l'apparence (fondu à l'ouverture), la disparition (Fondu à la fermeture) et la réorganisation. (I2d7f7, b/150812265). - Implémentation de la compatibilité expérimentale pour les longues captures d'écran dans les conteneurs de défilement Compose à l'aide de l'API Android officielle (
ScrollCaptureCallback
). - Remplacement du glisser-déposer des sources
NestedScroll
parUserInput
etSideEffect
pour tenir compte de la définition étendue de ces sources, qui incluent désormais des animations (effet secondaire), ainsi que la molette et le clavier de la souris (UserInput
). - Les demandes de préchargement
LazyLayout
peuvent maintenant être marquées comme urgentes, ce qui signifie que cet élément devrait être nécessaire dans le frame suivant et ignorer le budget des frames pour s'assurer de faire plus de travail à l'avance. (Id513f) - Prise en charge de la fonctionnalité d'écriture manuscrite au stylet sur les appareils équipés d'Android U. (I002e4).
- Plusieurs API ont été promues à la version stable
<ph type="x-smartling-placeholder">
- </ph>
- Bipeurs, ancrage, encarts de fenêtre
Version 1.7.0-rc01
21 août 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.0-rc01
. La version 1.7.0-rc01 contient ces commits.
Correction de bugs
- Correction d'une régression où le plantage se produisait lorsqu'un élément était sélectionné à l'intérieur d'un parent sélectionnable (ou cliquable) et désactivé. (b/317561689).
Version 1.7.0-beta07
7 août 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.0-beta07
. La version 1.7.0-beta07 contient ces commits.
Correction de bugs
- Les fonctions
SemanticsNodeInteraction
liées à l'entrée de texteperformTextReplacement
,performTextInput
etperformTextClearance
vont désormais générer des erreurs d'assertion lorsqu'elles sont appelées en lecture seuleTextFields
. (I4ae8f). - Correction d'un problème visuel dans les liens hypertexte. (I23311).
- Résolution du problème de fonctionnement du modificateur
contentReceiver
avec certains IME. - Génération de vitesse: empêche la propagation des valeurs NaN dans l'interface utilisateur et les fondations 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
- Évitez les plantages lors de la mesure de très grandes lignes de texte (10 000 caractères, par exemple). (8157ab)
- Correction de la mesure des très grands caractères provoquant un plantage dans la nouvelle
BasicTextField
. (6b7575) - Cette opération rétablit un changement de comportement dans la mesure des lignes/colonnes qui interrompt l'utilisation de 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 pour configurer le comportement de préchargement de
LazyGrids
, semblable à l'API expérimentale existante pourLazyLists
. Cela inclut la prise en charge du préchargement des éléments dans 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). - Remplacement du nom
SemanticsProperties.Editable
parIsEditable
et de la valeurisEditable
deSemanticsPropertyReceiver.editable
. La propriété est désormais une valeur booléenne et toujours spécifiée par des champs de texte. (I8acd8). - Déplacement des valeurs par défaut de
basicMarquee
dans l'objetMarqueeDefaults
. (I12ff6). - Remplacement du nom du paramètre
delayMillis
basicMarquee
parrepeatDelayMillis
. (I12ff6). - Mise à jour de l'API pour styliser les liens: déplacement de
TextLinkStyles
versTextStyle
et suppression deTextDefaults
de Material. (I5477b)
Correction de bugs
- Remplacement du nom de
LayoutCoordinates.introducesFrameOfReference
parLayoutCoordinates.introducesMotionFrameOfReference
pour mieux refléter son objectif. Fonction associée renommée pour calculer les coordonnées en fonction de cet indicateur. (I3a330). - Suppression de la colonne "Par défaut" à partir des propriétés
MarqueeDefaults
. (I1d8a0). - Le rectangle de sélection a été supprimé. à partir des propriétés
MarqueeDefaults
. (Iad4f4). - Suppression de
TextLinkStyles
de la classeTextStyle
. À la place,TextLinkStyles
fait partie du constructeurLinkAnntation
et de la méthodeAnnotatedString.fromHtml
. (I90b2b) - Correction d'un bug qui provoquait un ancrage de la pagination lors d'un geste vif vers une limite alors qu'il était déjà réglé au niveau de la limite. (I9f373, b/339171222).
- Les gestes de sélection de la souris sont désormais corrects dans BTF2. (Ibe8c6).
Contribution externe
- Renvoyez "Faire en sorte que le calcul du temps de rédaction/mesure le type de contenu en fonction du préchargement pour améliorer la précision" (Iea622).
- Ajout/Mesure du type de contenu du calcul du temps de rédaction basé sur le préchargement pour améliorer la précision. (Ibccb1)
- Mise à disposition des modificateurs
WindowInsetsPadding
à partir de l'ensemble de sources commun. (I070b2)
Version 1.7.0-beta01
14 mai 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.0-beta01
. La version 1.7.0-beta01 contient ces commits.
Modifications apportées à l'API
- Ajout de la propriété
KeyboardOptions.shouldShowKeyboardOnFocus
comme obsolète, masquée pour assurer la compatibilité binaire. (I15cfe). Modifier.anchoredDraggable
inverse désormais les deltas de déplacement par défaut pour les composants à orientation horizontale lorsqu'ils sont utilisés dans une mise en page de droite à gauche. (I3c6d9).AnnotatedString.hasEqualsAnnotations
est désormaishasEqualAnnotations
. (I685c0).- Mise à jour de l'API permettant d'obtenir des liens sur le thème Material dans le texte. Plus précisément, suppression des méthodes de
TextDefaults
pour créer desLinkAnnotations
thématiques et analyser le code HTML avec des liens thématiques. À la place, nous avons ajouté une classeTextLinkStyles
qui permet de styliser les liens en tant que paramètre du composable Text. (I31b93). - Remplacement de
onDragStarted
etonDragStopped
par des rappels non suspendus. (I59de8).
Correction de bugs
- Correction d'un bug qui provoquait le plantage de Pager lorsque
contentPadding
était plus grand que les contraintes entrantes. Désormais, le Pager convertit (par coercition) les valeurs négatives renvoyées parPageSize
en 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 par clic droit sur
BasicTextField
etSelectionContainer
, avec des options permettant de couper, copier, coller et sélectionner tout. (If8c93, Ia2b49, I6f268).
Modifications apportées à l'API
- Les demandes de préchargement
LazyLayout
peuvent maintenant être marquées comme urgentes, ce qui signifie que cet élément devrait être nécessaire dans le frame suivant et ignorer le budget des frames pour s'assurer de faire plus de travail à l'avance. (Id513f) - Changement de nom :
isPositionedByParentWithDirectManipulation
devientintroducesFrameOfReference
. Notez que cela a désormais l'effet inverse, ce qui signifie que par défaut, la plupart desLayoutCoordinates
introduisent un frame de référence. Ce n'est qu'en cas de manipulation directe que la propriété sera fausse. Pour interroger des positions uniquement avec celles qui introduisent un frame de référence, utilisezpositionInLocalFrameOfReference(...)
. OupositionInLocalLookaheadFrameOfReference
à partir d'unLookaheadScope
. (Ifc5f7). - Changement de nom :
onClicked
devientonClick
dansLinkInteractionListener
. (Iaa35c) - Modification du lambda d'action pour
getScrollViewportLength
conformément aux commentaires du conseil de l'API. (Ibc74a). - API de délégation de l'écriture manuscrite au stylet renommées. (Ica45f, b/327271923).
TextInclusionStrategy.isInside
a été renomméisIncluded
. Rend le type renvoyéParagraph/MultiParagraph#getRangeForRect()
non nullable. (I51f26).
Correction de bugs
- Option "Tout sélectionner" ajoutée à tous les menus contextuels textuels dans
SelectionContainer
. (Ib750e, b/240143283). - Correction de la longue capture d'écran pour les conteneurs défilants avec
reverseScrolling=true
. (I7c59c). - Correction d'un problème où
currentValue
deAnchoredDraggableState
changeait à l'approche des limites de l'état. (Iea30b, b/333846848).
Contribution externe
PrefetchExecutor
a été renommé ->PrefetchScheduler
pour mieux refléter ses responsabilités. (Ib9154).- Ajout de la prise en charge du préchargement des éléments dans les
LazyLists
imbriqués (par exemple, unLazyColumn
qui affiche desLazyRows
imbriqués). Cette modification 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 pour construire uneLinkAnnotation
et analyser la chaîne taguée HTML qui appliqueMaterialTheme
aux liens. (I98532, b/139312671). - Ajout d'une prise en charge des animations liées à l'apparence et à la disparition des éléments dans
LazyVerticalGrid
etLazyHorizontalGrid
. Auparavant, il était possible d'ajouter le modificateurModifier.animateItemPlacement()
afin de prendre en charge les animations de placement (réorganisation). Nous avons abandonné ce modificateur et introduit un nouveau modificateur non expérimental appeléModifier.animateItem()
, qui vous permet d'accepter les trois types d'animation: l'apparence (fondu à l'ouverture), la disparition (Fondu à la fermeture) et la réorganisation. (Ib7d12, b/330510929). - Ajout de la prise en charge des animations liées à l'apparence et à la disparition des éléments dans
LazyVerticalStaggeredGrid
etLazyHorizontalStaggeredGrid
. Auparavant, il était possible d'ajouter le modificateurModifier.animateItemPlacement()
afin de prendre en charge les animations de placement (réorganisation). Nous avons abandonné ce modificateur et introduit un nouveau modificateur non expérimental appeléModifier.animateItem()
, qui vous permet d'accepter les trois types d'animation: l'apparence (fondu à l'ouverture), la disparition (Fondu à la fermeture) et la réorganisation. (I69bc9, b/330511290).
Modifications apportées à l'API
- Ajoute
ContextMenuColors
et leProvidableCompositionLocal
LocalContextMenuTheme
associé. Les couleurs du menu contextuel des champs de texte et du texte sélectionnable peuvent être modifiées en fournissant la composition localement. (Ifa154). - L'option de style "En appuyant sur les liens de texte" est disponible en plus du style normal. (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). - Suppression de
DelegatableNode.scrollIntoView
pour la version 1.7, car nous n'avons pas eu le temps de terminer la stabilisation du reste de la surface d'API associée. Cette fonction sera réintroduite dans la version 1.8. (I6cf61, b/333421581, b/332900232) - Lorsque vous interrogez des 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
(par exemple, le défilement, qui est implémenté par défaut). Cela permet aux animations basées surapproachLayout
d'être plus intuitives, et de différencier le décalage à animer et les éléments à appliquer directement pour décider d'animer leur approche. (I60ec7). - Introduction de
requestScrollToItem
pourLazyStaggeredGrid
. Pour chaque mesure réussie, le client peut désormais désactiver la maintenance de l'index basé sur la clé en appelantrequestScrollToItem
. Cela ne modifie en rien le comportement existant, sauf sirequestScrollToItem
est appelé. (I63983). - Introduction de
requestScrollToPage
dans le pager. Pour chaque mesure réussie, le client peut désormais désactiver la maintenance de l'index basé sur la clé en appelantrequestScrollToPage
. Cela ne modifie en rien le comportement existant, sauf sirequestScrollToPage
est appelé. (Ic4213). - Introduction de
requestScrollToItem
pourLazyGrids
. Pour chaque mesure réussie, le client peut désormais désactiver la maintenance de l'index basé sur 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)- Abandon de
UrlAnnotation
. 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) - Changement de nom :
String.parseAsHtml
devientAnnotatedString.Companion.fromHtml
. (I43dcd) - Ajout d'arguments de style (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) et d'un écouteur d'interaction entre les liens à la méthodeparseAsHtml
. Lors de l'analyse de la chaîne taguée HTML avec des balises<a>
, la méthode construit uneLinkAnnotation.Url
pour chacune de ces balises et transmet les objets de style et l'écouteur d'interaction des liens à chaque annotation. (I7c977). LinkAnnotation
accepte désormais les arguments de style basé 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 pointés. (I81ce4, b/139312671).- Le flag de fonctionnalité a été supprimé pour les longues captures d'écran. (I28648, b/329128246).
LazyColumn
affiche désormais correctement les en-têtes persistants dans les longues captures d'écran. (I8d239, b/329296635).- Stabilisation de la majorité des API expérimentales restantes introduites avec le nouveau
BasicTextField
. (I714e2). - Ajout du paramètre
textObfuscationCharacter
àBasicSecureTextField
, qui contrôle le caractère à utiliser pour obscurcir le contenu. (I0588b). - Remplacement du glisser-déposer des sources
NestedScroll
parUserInput
etSideEffect
pour tenir compte de la définition étendue de ces sources, qui incluent désormais des animations (effet secondaire), ainsi que la molette et le clavier de la souris (UserInput
). (I40579). - Introduction de
LocalBringIntoViewSpec
, un comportement de défilement de la sélection dépendant de la plate-forme, appliqué au niveau de la couche de modificateur de défilement. (I27aa5, b/317453911). - Suppression de
TextFieldCharSequence
. Remplacement deTextFieldBuffer.originalValues
parTextFieldBuffer.originalText
etTextFieldBuffer.originalSelection
. (I2c7d6). ImeOptions.hintLocales
ne peut plus avoir une valeur nulle. 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 les
InputTransformations
sont jointes ànext
, leursKeyboardOptions
sont désormais correctement fusionnés par des options individuelles à l'aide de la nouvelle méthodeKeyboardOptions.merge
. (Ie5304, b/295951492). targetValue
deAnchoredDraggableState
ne prend désormais plus en compte les seuils de position. Elle a désormais un seuil implicite de 50%, ce qui signifie que letargetValue
change au milieu entre deux ancres. (I82c2c).
Contribution externe
- Renommage de deux API de défilement. (I56a75)
Version 1.7.0-alpha06
3 avril 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.0-alpha06
. La version 1.7.0-alpha06 contient ces commits.
Nouvelles fonctionnalités
- Ajout de la prise en charge des animations liées à l'apparence et à la disparition des éléments dans
LazyColumn
etLazyRow
. Auparavant, il était possible d'ajouter le modificateurModifier.animateItemPlacement()
afin de prendre en charge les animations de placement (réorganisation). Nous avons abandonné ce modificateur et introduit un nouveau modificateur non expérimental appeléModifier.animateItem()
, qui vous permet d'accepter les trois types d'animation: l'apparence (fondu à l'ouverture), la disparition (Fondu à la fermeture) et la réorganisation. (I2d7f7, b/150812265). - Les clients de
LazyColumn/LazyRow
peuvent désormais désactiver la maintenance d'un index basé sur la clé pour la prochaine étape 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 de balises HTML enAnnotatedString
. Notez que toutes les balises ne sont pas prises en charge. Par exemple, il n'est pas encore possible d'afficher des listes à puces. (I84d3d). - Implémentation de la compatibilité expérimentale pour les longues captures d'écran dans les conteneurs de défilement Compose à l'aide de l'API Android officielle (
ScrollCaptureCallback
). Cette fonctionnalité est expérimentale et peut ne pas gérer correctement tous les cas pour le moment. C'est pourquoi elle est actuellement désactivée par défaut. Pour l'activer, définissez l'indicateurComposeFeatureFlag_LongScreenshotsEnabled
sur "true". Cet indicateur sera supprimé avant la version 1.7 bêta. (I2b055, b/329296471). - Introduction de la nouvelle API
GraphicsLayer
pour offrir plus de flexibilité dans le placement et l'affichage des instancesGraphicsLayer
, et pour prendre en charge les fonctionnalités d'affichage intrinsèques sans avoir à coordonner les implémentations des composables pour spécifier les 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éautoCorrectEnabled
et peut désormais avoir une valeur nulle, où la valeur null indique qu'aucune valeur n'a été spécifiée. (Ia8ba0, b/295951492).- Changement de nom :
outOfBoundsPageCount
devientbeyondViewportPageCount
. (I129c6). fun ClipEntry.getMetadata()
est remplacé parval ClipEntry.clipMetadata
. (I50155).- Suppression de
TextFieldState.valueAsFlow()
. Préférence poursnapshotFlow { state.text }
ousnapshotFlow { TextFieldCharSequence(state.text, state.selection) }
. (I7d629) - Réorganisation des paramètres
InputTransformation.transformInput
.originalValue: TextFieldCharSequence
a été supprimé. À la place,TextFieldBuffer
contient désormais cette valeur avec le même nom. Le paramètrevalueWithChanges: TextFieldBuffer
a également été supprimé.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 virtuel. (I58dda). - API de délégation de l'écriture manuscrite au stylet pour la prise en charge de l'écriture manuscrite au stylet sur les "faux" des champs de saisie de texte. (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à encouragés à vérifier le type de contenu duTransferableContent
reçu, car celui-ci pouvait être incompatible avec lehintMediaTypes
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 mêmes valeurs par défaut pourBasicSecureTextField
. Le paramètrescrollState
a également été supprimé. (Ibbfa9). - Le type de
TextFieldState.text
passe deTextFieldCharSequence
àCharSequence
uniquement. 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 actuelle de l'extrait. Vérifiez également le résultat deClipboardManager.getClip
s'il est nul ou non pour déterminer si un clip est actuellement présent dans le presse-papiers. (I50498). ClipboardManager.setClip
accepte désormais la valeur null pour pouvoir effacer le presse-papiers. (I7d2e9).ReceiveContentListener
est converti en interface de fonction. De plus, la surchargeModifier.receiveContent
qui reçoit un lambda a été 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 devenu une API stable. (I37999).
Correction de bugs
- Correction d'un bug qui empêchait la variante
BasicTextField(state)
de fonctionner avec les claviers CJK(compositions). (I54425). - Correction d'un bug qui empêchait
Modifier.dragAndDropTarget()
de référencer des données obsolètes dans certains scénarios lors de la réutilisation deModifier.Node
. (I05bb1). - Annulation d'une modification de contrat récente provoquant l'ancrage 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
LocalTextLinkStyle
expérimentale en local pour appliquer un style aux liens hypertexte. (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 prochainement. (I107d5). - Suppression des méthodes et propriétés associées aux points de code sous
TextFieldState
etTextFieldBuffer
. Suppression des suffixesinChars
des autres API liées à la sélection et à la composition. (Ief7ce). - Le
currentValue
deAnchoredDraggable
sera désormais mis à jour lors du passage par un point d'ancrage. UtilisezsettledValue
pour recevoir la sémantiquecurrentValue
précédente, mise à jour uniquement lors de la définition au niveau d'une ancre. La progression est désormais exposée en tant que fonction (nécessitant un point de départ et d'arrivée) et non sous la forme d'une propriété. (Ibe6e8, b/318707189, b/298271489, b/294991954) BasicTextField(state)
,TextFieldState
,InputTransformation
,OutputTransformation
,TextFieldLineLimits
etTextFieldDecorator
passent à la version stable. (I9582b).- Introduction de
InterceptPlatformTextInput
pour faciliter l'écriture de tests liés aux IME de bas niveau et d'autres cas d'utilisation d'IME de bas niveau. Abandon dePlatformTextInputTestOverride
. (I862ed, b/322680547). - Division de
restrictedConstraints()
entre deux méthodes:fitPrioritizingWidth()
etfitPrioritizingHeight()
. (I6d7fd)
Contribution externe
- Ajout de deux nouvelles API
isLastScrollForward
/isLastScrollBackward
pour vérifier la direction du défilement pour la dernière action de défilement. La valeur renvoyée est "false" si aucune action de défilement n'a encore été effectuée. (I63a0e).
Version 1.7.0-alpha04
6 mars 2024
Publication d'androidx.compose.foundation:foundation-*:1.7.0-alpha04
. La version 1.7.0-alpha04 contient ces commits.
Modifications apportées à l'API
- Prise en charge de la fonctionnalité d'écriture manuscrite au stylet sur les appareils équipés d'Android U. (I002e4).
- Ajout de
hintLocales
àKeyboardOptions
pour permettre àTextFields
d'indiquer dans les 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 prenaient les paramètresvalue: String
etonValueChange: () -> String
. (I568b4). - Ajoutez une fonction
applySemantics
facultative àInputTransformation
pour influencer la sémantique de l'élémentBasicTextField2
auquel elle s'applique. (I74a2f, b/170648072). - Dans cette CL, nous ajoutons l'action sémantique
GetScrollViewportLength
afin de fournir au système a11y des informations sur les composants que l'utilisateur fait défiler dans Compose. Cette CL applique également l'utilisation de cette propriété dans les listes déroulantes de base. (Ic5fa2). BasicTextField2
a été renomméBasicTextField
. (Ie5713).FocusRequester.createRefs
est désormais stable. (I4d92c, b/261436820)- Introduction de
DelegatableNode.scrollIntoView()
pour permettre aux nœuds modificateurs d'envoyer directement des requêtesscrollIntoView
. (I2b3b7, b/299939840). - Introduction de
DelegatableNode.requireView()
pour permettre aux nœuds modificateurs d'obtenir leView
Android actuel sans lire de composition locale. (I40768). - Présentation des informations de mise en page contextuelle dans le champ d'application des lignes du flux contextuel et de la colonne du flux contextuel, avec l'index de ligne, la position et les contraintes sur la largeur et la hauteur maximales pour rester à la position spécifiée Les éléments qui dépassent la largeur ou la hauteur maximales peuvent s'afficher sur la ligne suivante ou être omis en fonction des paramètres de dépassement. (Id13f8, b/292114798).
Correction de bugs
- Correction d'un bug qui provoquait un plantage dans certaines conditions lors de l'activation ou de la désactivation des attributs
enabled
oureadOnly
deTextField
. (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
- Introduction de
DelegatableNode.requireLayoutCoordinates()
comme moyen d'obtenir leLayoutCoordinates
actuel d'unModifier.Node
sans avoir à remplaceronPlaced
et à stocker vous-même les coordonnées dans une propriété. (Ia8657). - Introduction de
DelegatableNode.currentLayoutCoordinates
comme moyen d'obtenir leLayoutCoordinates
actuel d'unModifier.Node
sans avoir à remplaceronPlaced
et à stocker vous-même les coordonnées dans une propriété. (Iaebaa). - Optimisations des performances en
DraggableAnchors
utilisées parAnchoredDraggable
. (I89cff). - Déplacement de
BasicTextField2
et des API associées dans le packageandroidx.compose.foundation.text2
versandroidx.compose.foundation.text
. (I9f635). BasicTextField2
n'accepte plus de paramètreCodepointTransformation
. UtilisezBasicSecureTextField
ouOutputTransformation
. (Id34ff).- Ajout d'une méthode pour comparer uniquement les annotations de deux
AnnotatedStrings
. (I32659). - Présentation de
ContextualFlowRow
et de l'amélioration deFlowRow
/Column
avecMaxLines
etOverflow
. Nous sommes heureux d'annoncer des améliorations apportées auxFlowRow
etFlowColumn
expérimentales, qui prennent désormais en chargemaxLines
et overflow, en plus des débuts deContextualFlowRow
etContextualFlowColumn
. Cette mise à jour est conçue pour fournir des composants dont les performances sont optimales.ContextualFlow*
est idéal pour un grand nombre d'éléments utilisant une petite configurationmaxLines
et les boutons dynamiques +N permettent d'afficher plus de boutons.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, qu'ils s'adaptent ou non à la taille maximale de l'axe transversal, définissezoverflow
surFlowRowOverflow.Visible
ouFlowColumnOverflow.Visible
lors de l'initialisation. ExplorezContextualFlowRowSample
etFlowRowSample
pour découvrir des exemples concrets de ces nouvelles fonctionnalités. (Ib9135, b/293577082).
Correction de bugs
- L'animation du curseur ne demande plus d'images entre les états "activé" et "désactivé". (Ia2253).
KeyboardOptions
min les constructeurs de copie obsolètes 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 considérés comme stables. (I67660, b/316966909).- Ajout de la composition
LocalTextLinkStyle
locale, qui permet 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 localement 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 principale de Material. (I7eb10). - Introduction 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 virtuel ou via une action de collage dans le presse-papiers. (I81b72).- Dans ce changement, nous remplaçons
SnapFlingBehavior
parTargetedFlingBehavior
dans Pager pour accéder à d'autres cas d'utilisation et offrir une plus grande flexibilité. (I762ea). - Avec cette modification, les API d'ancrage sont stables. Nous nettoyons également une partie du code de test et ajoutons des exemples à l'ancrage. (Id8da9).
- Introduction 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 dans le champ de la saisie lorsqu'il a été fait défiler pour le masquer ou qu'il disparaîtrait en raison de la saisie. (Ieb856, b/237190748).
Contribution externe
- Ajout d'une API expérimentale pour configurer le comportement de préchargement de 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
Indication API
,IndicationNodeFactory
. Cela permet d'obtenir des implémentationsIndication
plus performantes par rapport à l'APIrememberUpdatedInstance
précédente (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 avoir une valeur nulle. Si la valeur est nulle et que leIndication
fourni est unIndicationNodeFactory
, l'Indication
ne peut être créé en différé qu'en cas de besoin, ce qui améliore les performances. Si vous n'effectuez pas le hissage et que vous n'utilisez pasMutableInteractionSource
, il est recommandé de transmettre la valeur nulle.
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épréciation lorsque vous choisissez l'une des ancres. La modification inclut également le changement de nom duanimationSpec
existant ensnapAnimationSpec
pour vous aider à comprendre le cas d'utilisation de chaque spécification. BasicTextField2
est disponible pour une utilisation expérimentale. Elle doit présenter à peu près les mêmes fonctionnalités queBasicTextField
, et le comportement doit être prêt pour la production. Cependant, l'API reste expérimentale pour le moment. Avant la stabilisation, 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'ancienBasicTextField
. Cependant, elle n'est pas encore terminée et certaines choses ne fonctionneront pas correctement. Toutefois, n'hésitez pas à nous faire part de vos commentaires sur la facilité d'utilisation 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é de liens n'est pas encore terminée. D'autres modifications de l'API sont prévues. - Introduction 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 virtuel ou par le biais d'un collage depuis le presse-papiers.KeyboardOptions.shouldShowKeyboardOnFocus
vous permet de désactiver le comportement par défaut deBasicTextField
, qui consiste à activer la sélection d'un clavier virtuel.- Abandon de
TextInputService
etLocalTextInputService
. Utilisez plutôtPlatformTextInputModifierNode
pour intégrer directement les API IME de la plate-forme. (aosp/2862698). Indication#rememberUpdatedInstance
est maintenant obsolète. Elle nuit aux performances et empêche toute autre optimisation. Utilisez plutôt la nouvelle APIIndicationNodeFactory
.
Correction de bugs
BasicTextField
prévalide 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 de passes de mesure ou de dessin ultérieures. Lorsque les erreurs sont générées lors de la composition, il est plus probable que les développeurs voient ces erreurs pendant le développement, ce qui permet d'éviter les plantages de production. (I0fd42).VisualTransformation
n'est pas généré si vous renvoyez un index non valide pour un index non valide. (b/316401857 )
Version 1.6
Version 1.6.8
12 juin 2024
Publication d'androidx.compose.foundation:foundation-*:1.6.8
. La version 1.6.8 contient ces commits.
Version 1.6.7
1er mai 2024
Publication d'androidx.compose.foundation:foundation-*:1.6.7
. La version 1.6.7 contient ces commits.
Version 1.6.6
17 avril 2024
Publication d'androidx.compose.foundation:foundation-*:1.6.6
. La version 1.6.6 contient ces commits.
Correction de bugs
- Correction d'un bug qui provoquait un plantage dans certaines conditions lors de l'activation ou de la désactivation des attributs
enabled
oureadOnly
deTextField
. (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
- Le geste de sélection (appui de manière prolongée, puis glisser) qui sort des limites de la mise en page du texte dans la première image de l'action ne plante plus. (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 d'un problème de réinitialisation de
AnimateContentSize
. (I07051). - Résolution du problème de mise en cache excessive de
intrinsicHeight
de texte dans certaines circonstances. (3cd398, b/217910352).
Version 1.6.1
7 février 2024
Publication d'androidx.compose.foundation:foundation-*:1.6.1
. Liste des commits de la version 1.6.1
Correction de bugs
- Correction de la mesure de la grille décalée lorsque le défilement dépasse la limite. (bffc39).
- Ajout d'une vérification des mises 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 un ensemble prédéfini d'ancres. Ce modificateur est destiné à remplacerModifier.swipeable
. Découvrez comment l'utiliser et effectuer la migration depuisModifier.swipeable
dans le guide de migration. - Une fonctionnalité de glisser-déposer entre les applications et les composants a été ajoutée. Reportez-vous à
DragAndDropTarget
,Modifier.dragAndDropSource
et aux autres API pour commencer Modifier.draggable2D
est le nouveau modificateur qui facilite le déplacement en 2D. Consultez la section Exemple.AndroidExternalSurface
etAndroidEmbeddedExternalSurface
ont été ajoutés pour faciliter l'ajout de composants orientés surface dans Compose.- Diverses modifications et améliorations de l'API dans
Pager
etsnapFlingBehaviour
- Diverses API de ciblage, de texte et d'encarts ont été promues à des API stables
Version 1.6.0-rc01
10 janvier 2024
Publication d'androidx.compose.foundation:foundation-*:1.6.0-rc01
. Liste des commits de la version 1.6.0-rc01
Modifications apportées à l'API
- Le constructeur d'extension
DragAndDropTarget()
a été supprimé. Créez une instance à l'aide deobject: DragAndDropTarget {}
. (I32318).
Version 1.6.0-beta03
13 décembre 2023
Publication d'androidx.compose.foundation:foundation-*:1.6.0-beta03
. Liste des commits de la version 1.6.0-beta03
Correction de bugs
- Correction du plantage qui affectait les textes très volumineux, mesurés 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 de l'absence de mise à jour de
canScroll
après un défilement pour la remise en page uniquement. (I60a86). - Correction de
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
reçoit désormais explicitement l'DragAndDropTarget
de réception et dispose d'un lambda pour activer une session de glisser-déposer. Il existe désormais deux fonctions de fabrique pour unDragAndDropModifierNode
. une pour recevoir les transferts et une pour transférer des données. (I69481) - Mise à jour de
maximumFlingVelocity
pour qu'il soit représenté par une valeur flottante. Mise à jour de la documentation pour clarifier l'unitémaximumFlingVelocity
. (I8adc7). onDragAndDropStart
dans la zone "DragAndDropModifierNode
" La fabrique a été renomméeacceptDragAndDropTransfer
.acceptsDragAndDropTransfer
a été ajouté auModifier
dragAndDropTarget
pour accepter à partir d'une session de glisser-déposer. Ce lambda renvoie unDragAndDropTarget
si la session de glisser-déposer vous intéresse. D'autres lambdas pour le traitement des événements de déplacement ont été remplacés par cette option.Ajout d'une fonction de fabrique
DragAndDropTarget
pour la réception de sessions de glisser-déposer. (Iebf3a)L'exposition de
startDragImmediately
dansAnchoredDraggable
permet de contrôler la détection des gestes de déplacement lorsque vous l'utilisez. Il est utile de la définir lorsque le widget s'anime sur une ancre cible. Consultez la section Exemple. (Ie6d13, b/285139987).Les API Foundation Info-bulle sont désormais
@ExperimentalFoundationApi
. (I30b0b)Suppression de
DragAndDropInfo
en tant que typeDragAndDropModifierNode.drag
qui accepte désormais les paramètres du lambdatransferData
, de la taille de la décoration et de la décoration de déplacementDrawScope
Au lieu d'être une méthode abstraite unique,
DragAndDropTarget
propose des méthodes pour des événements de glisser-déposer spécifiques.onDragAndDropEvent
dans la fonction de fabrique d'unDragAndDropModifierNode
a été renomméonDragAndDropStart
pour mieux indiquer que leDragAndDropTarget
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 telles queLazyColumn
basées sur celui-ci) qui sont conservés pour être réutilisés à l'avenir sont considérés comme désactivés. Une nouvelle API de testassertIsDeactivated()
a été introduite pour tester de tels nœuds. Le reste des API de test filtre les nœuds désactivés par défaut. (I2ef84, b/187188981).Changement de nom : le paramètre
clippingEnabled
deModifier.magnifier
devientclip
.Le paramètre
magnifierCenter
deModifier.magnifier
peut désormais être nul, tout en conservant le même comportement par défaut. (I6aa66).Les API Material
SwipeToReveal
(pour les cartes et les puces) s'appuient désormais sur une API basée sur les 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'une modification destructive. Veuillez consulter la version de démonstration et l'exemple de code pour découvrir comment utiliser la nouvelle API. (Ia8943).
Correction de bugs
- Implémentez le code de hachage égal et le code de hachage pour
PageSize.Fixed
. (Ie3ede, b/300134276). - Correction d'un bug qui empêchait la mise en page de
BasicText
lorsqueminWidth
changeait et queminWidth
était inférieur aux contraintes de mesure initialesmaxWidth
. (Idb19c) - Ajout de la prise en charge du moteur de rendu pour le balayage du dégradé dans
ArcLine
. (I4d5bb). - Correction du problème de compatibilité binaire avec la modification de l'encart de fenêtre. (Iee695)
- Suppression de la couche principale Material pour la puce/le bouton Material3, car les microbenchmarks affichent de meilleures performances sans cet élément. (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 facilite le déplacement en 2D. Voir 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 convivialeTextFieldDecorator
é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
- Introduction de
PlatformTextInputMethodTestOverride
pour écrire des tests pour les éditeurs de texte personnalisés. (Id159b). - Changement de nom :
GraphicsSurface
devientAndroidExternalSurface
. (I11680) - Ajout de l'indicateur temporaire
DisableNonLinearFontScalingInCompose
pour désactiver la mise à l'échelle 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 des 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 la réception de sessions de glisser-déposer. (Ib7828, b/286038936) - Mise à jour de la documentation
SnapPositionInLayout
et de la méthode de position. Introduisez des marges intérieures de contenu à la méthode de position dansSnapPositionInLayout
. (Id7938, b/300116110). - Ajout de
UndoState
àTextFieldState
, qui permet d'annuler ou de rétablir les modifications apportées par l'utilisateur. (Icc024).
Correction de bugs
- Correction de
basicMarquee
qui ne s'animait pas après un changement de vitesse. (Id2e77, b/297974036).
Version 1.6.0-alpha06
20 septembre 2023
Publication d'androidx.compose.foundation:foundation-*:1.6.0-alpha06
. Liste des commits de la version 1.6.0-alpha06
Nouvelles fonctionnalités
- Nouveaux wrappers composables pour
SurfaceView
,TextureView: GraphicsSurface()
etEmbeddedGraphicsSurface()
. Il s'agit d'une API expérimentale qui peut être modifiée. (I9ddb2). Modifier.magnifier()
est désormais une API stable. Cela inclut la suppression deMagnifierStyle
au profit des paramètres intégrés dans le modificateur lui-même. (I83bec, b/298381260, b/262367109, b/261438887)
Modifications apportées à l'API
- Introduction de
updateCurrentPage
etupdateTargetPage
dansScrollScope
. Il s'agit des derniers éléments nécessaires pour permettre la personnalisation du défilement animé viaPagerState.scroll
. (I9cad5, b/267744105, b/243786897). - Supprimez la densité de
SnapFlingBehavior
. Toutes les implémentations deSnapLayoutInfoProvider
disposent déjà d'un moyen d'accéder à la densité. Le champ d'application du récepteur peut être supprimé, ce qui entraînera une implémentation moins complexe deSnapFlingBehavior
et deSnapLayoutInfoProviders
. (I153c3). - D'autres modificateurs sont 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 par le biais de l'approche ou des décalages d'ancrage. (If320c).
Nouveaux comportements
- Compose utilise désormais la mise à l'échelle non linéaire de la police pour améliorer la lisibilité et l'accessibilité. Lorsque l'échelle de police > 100% dans les paramètres système, la taille du texte en petits caractères augmente normalement, tandis que celle du texte déjà volumineux n'augmente que légèrement. De plus, la hauteur des lignes définie dans SP est automatiquement ajustée pour rester proportionnelle à la hauteur prévue à 100 %. Pour en savoir plus, consultez les bonnes pratiques de mise à l'échelle 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, tout comme l'APIBasicTextField
actuelle. (Ia4882). - Ajout de
Modifier.preferKeepClear()
pour marquer comme composable une option permettant d'éviter les fenêtres flottantes sur l'API 33 et les versions ultérieures. (Ib51d5, b/297260115). - Les vitesses de défilement dans les composants de vue 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 obsolètes
Pager
etPagerState
. (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
a été promu au statut d'API stable. (I7ffa3).- Ajoutez des surcharges pour
BasicTextField2
, qui acceptent une valeur immuable et un rappel pour modifier cette valeur, tout comme l'APIBasicTextField
actuelle. (I3f2b8). GridItemSpan::currentLineSpan
est désormais une API stable. (Icc29c).- Canvas qui accepte
contentDescription
est désormais une API stable. (Ib3d29). - Introduction de
viewportSize
dansScrollState
, un moyen de connaître la tailleviewPort
du composant qui utiliseScrollState
après la mesure. (I8b85a, b/283102682). - Correction d'un problème qui empêchait le préchargement dans Pager de correspondre au comportement dans les vues. (I93352, b/289088847).
Modifier.consumeWindowInsets(PaddingValues)
est désormais stable.- L'API
Deprecated Modifier.consumedWindowInsets
a été supprimée. UtilisezModifier.consumeWindowInsets
à la place. (Id72bb).
- L'API
Version 1.6.0-alpha03
9 août 2023
Publication d'androidx.compose.foundation:foundation-*:1.6.0-alpha03
. Liste des commits de la version 1.6.0-alpha03
Modifications apportées à l'API
- Ajout de la surcharge
LazyLayout
, qui accepte un lambda deLazyLayoutItemProvider
, qui n'est plus un objet brut comme auparavant. La surcharge précédente est obsolète. (I42a5a) - Ajout de la prise en charge de la configuration de
privateImeOptions
. (Idb772)
Correction de bugs
- Correction des champs de texte affichant le clavier et pouvant être modifiés lorsque
readOnly
est défini sur "true". Correction du problème d'affichage du clavier lorsquereadOnly
passe de "true" à "false" lorsque le curseur 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 les informations collectées après l'exécution d'une 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 pour les composables. (I51109)
- Ajout de
SemanticsNodeInteraction.requestFocus
comme moyen plus pratique et plus visible de demander la priorité aux tests. (Ie8722). - API
PlatformTextInput*
entièrement repensée. (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 le delta du panoramique dans le paramètrecanPan
afin de vous aider à déterminer la direction du panoramique pour l'autoriser ou l'interdire. (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 qui peuvent être faits glisser entre des états discrets, 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 des spécifications d'animation personnalisées.BringIntoViewCalculator
remplacé parBringIntoViewScroller
. (Idb741). - Ajout du type
ResourceResolutionException
pour encapsuler les éléments Throwables générés lors de la tentative de chargement des éléments bitmap avec une description du chemin d'accès de l'élément dont le chargement a échoué. (I19f44, b/230166331, b/278424788). - Ajout de propriétés et d'actions sémantiques pour la traduction de texte. (I4a6bc).
- Introduction d'une API
BringIntoViewCalculator
permettant de personnaliser la façon dont des composants tels queScrollable
répondent aux requêtesbringIntoView
. Modification de la surcharge du conteneur à défilement pour accepter éventuellement une instance deBringIntoViewCalculator
. (Iaf5af).
Correction de bugs
- Ajout d'une vérification lint pour vous avertir si vous créez un
MutableInteractionSource
dans la composition sans vous en souvenir, comme les vérifications lint pour créer un état modifiable /Animatable
. (I5daae). - Ajout de la prise en charge de la sélection par la souris. La sélection tactile est développée par mot et réduite 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 n'a pas été modifiée.
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 en cas d'invalidation de la sémantique.
Version 1.5.1
6 septembre 2023
Publication d'androidx.compose.foundation:foundation-*:1.5.1
. Liste des commits de la version 1.5.1
Correction de bugs
- Correction des champs de texte affichant le clavier et pouvant être modifiés lorsque
readOnly
est défini sur "true". Correction du problème d'affichage du clavier lorsquereadOnly
passe de "true" à "false" lorsque le curseur 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 d'autres ont été migrés vers l'APIModifier.Node
, ce qui réduit les frais généraux liés à la composition initiale. - Améliorations de la stabilité des bipeurs. 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 les types spécialisés correspondants pour les primitives. Son ID lint estAutoboxingStateCreation
. Auparavant, cette inspection était activée par défaut pour tous les projets. Pour afficher cet avertissement dans l'éditeur Android Studio et dans les résultats lint de votre projet, remplacez son niveau de gravité par "Information" à "Avertissement" (ou supérieur) 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 indiquer la fréquence cardiaque et le nombre de pas quotidiens. L'interfaceSensorGateway
a été supprimée de l'API publique. (I55b84).
Correction de bugs
- Réduisez les allocations lors des listes, des grilles, etc. différées. mesures. (Iaf9e2)
- Réduction des allocations 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 d'une
TextStyle.merge(...)
optimisée avec la liste complète des paramètres. (Iad234, b/246961787). - Introduisez un
SnapLayoutInfoProvider
pouvant être utilisé avecLazyGridState
. (I92134, b/269237141, b/260914964). - Ajout d'une version expérimentale
Modifier.animateItemPlacement()
pour le champ d'application des éléments de grilles décalées différées. Vous pouvez l'appliquer aux éléments afin d'obtenir l'automatisation pour le changement de position ou la réorganisation des animations. (I4b62d, b/257034719). - Promotion de
GridCells.FixedSize
en version stable.FixedSize
définit uneLazyGrid
où chaque cellule prend une taille exacte sur l'axe transversal, l'espace restant étant réparti selon la disposition sur l'axe transversal. (I8542f). - Introduction du champ d'application du récepteur
PagerScope
pour Pager et d'une fonction utilitaire permettant de calculer un décalage de page donné. (If2577). - Introduction de
snapPositionalThreshold
lors de la création d'un comportement de glissement d'un geste vif. Utilisez ce paramètre pour spécifier un seuil de position pour un ancrage court dans le pager. (If8f7f). SnapLayoutInfoProvider.calculateSnappingOffsetBounds
a été remplacé parcalculateSnappingOffset
. Dans cette nouvelle méthode, il nous suffit de demander le prochain décalage à appliquer. Le calcul des limites doit être effectué au niveau de l'implémentation, car cela peut varier en fonction de la manière dont l'ancrage doit être effectué. (I923a4).LazyStaggeredGrid
API ont été définies comme stables. (I633a5).- Suppression de
pageCount
deHorizontal/VerticalPager
. Vous devez le fournir lors de la création de l'état. Mise à jour dePagerState
etrememberPagerState
pour accepter lespageCount
. (Ieb52d, b/266965072). - Suppression de
pageCount
deHorizontal/VerticalPager
. Vous devez le fournir lors de la création de l'état. Mise à jour dePagerState
etrememberPagerState
pour accepter lespageCount
. (Ifa3cb, b/266965072). - Introduction de
shortSnapVelocityThreshold
dans le fichierSnapFlingBehavior
de Pager. (I7379e, b/275579012). - Ajoute
FlowRowScope
etFlowColumnScope
. (I54fe2).
Correction de bugs
- Les appels visant à obtenir la sémantique de Text 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 non créées par le composable
Dialog
. (I82551, b/262140644).
Version 1.5.0-alpha03
19 avril 2023
Publication d'androidx.compose.foundation:foundation:1.5.0-alpha03
et d'androidx.compose.foundation:foundation-layout:1.5.0-alpha03
. Liste des commits de la version 1.5.0-alpha03
Cette version active la nouvelle pile de rendu de texte pour Compose. La nouvelle pile est optimisée pour les performances. Vous ne devriez donc constater aucun changement visible.
Si vous constatez des modifications dans le texte affiché, vous pouvez effectuer le débogage en définissant NewTextRendering1_5 = false
pour confirmer la différence de comportement. Définir ce paramètre forcera la recomposition. Veuillez signaler les différences de comportement en tant que bugs.
L'indicateur de débogage sera supprimé avant la version 1.5 beta01.(Iada23, b/246960758)
Modifications apportées à l'API
- Alignez
FlowColumn/FlowRow
. (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 prise en charge des cellules de taille fixe dans
LazyGrid
et de leur disposition sur les axes transversaux. (I83ed9, b/235121277, b/267942510). - Ajout de la prise en charge des voies de taille fixe dans
LazyStaggeredGrid
et organisation d'une disposition en axes transversal. (I7d519). - Les
UrlAnnotation
dans lesAnnotatedString
peuvent désormais être ouverts via des services d'accessibilité commeTalkBack
. (If4d82, b/253292081). - Ajout de l'action sémantique
InsertTextAtCursor
pour les champs de texte. (I11ed5). - Les actions de test liées au texte (par exemple,
performTextInput
) demanderont désormais le focus directement à l'aide de l'action sémantique, au lieu de cliquer sur le champ. (I6ed05). - Ajout de la prise en charge de l'espacement/de l'agencement entre les axes à l'aide de
verticalArrangement
dansFlowRow
ethorizontalArrangement
dansFlowColumn
. Nous avons également supprimé les éléments de premier niveauverticalAlignment
ethorizontalAlignment
dansFlowRow/FlowColumn
. Les développeurs peuvent utiliserModifier.align
à la place. Cela réduit la confusion entre les conventions d'attribution de noms deverticalAlignment
etverticalArrangement
. (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. Cela permet d'améliorer considérablement les performances dans de nombreux cas. Aucune modification ne doit être visible. (If1d17, b/246961435). - Ajout de l'action 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'outil d'inspection 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 androidx.compose.foundation:foundation-layout:1.4.3
sans aucune modification (une augmentation de version uniquement).
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é des emoji à
Text
etTextField
, ainsi qu'au 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 à
LazyStaggeredGrid
(I28252) - Ajout d'une
onHover
expérimentale àClickableText
(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 en tant que fonctionnalité expérimentale pour afficher du contenu avec un effet de rectangle de sélection défilant. (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 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 sémantique
SetText
deBasicTextField
mettra désormais à jour le tampon de texte en utilisant le même chemin de code que les mises à jour IME et les fonctions de test (par exemple,performTextReplacement
). - Les fonctions de test de texte
performTextClearance
,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)