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.
Dernière mise à jour Version stable Version finale Version bêta Version alpha
17 avril 2024 1.6.6 - - 1.7.0-alpha07

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.

GroupeDescription
compose.animationCréer des animations dans les applications Jetpack Compose afin d'enrichir l'expérience utilisateur.
compose.compilerTransformation de fonctions @Composable et prise en charge des optimisations avec un plug-in de compilation en Kotlin.
compose.foundationConception 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.materialCré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.material3Cré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.runtimeComposants 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.uiComposants 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.6.6"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.12"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.foundation:foundation:1.6.6")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.12"
    }

    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.

Signaler un nouveau problème

Pour en savoir plus, consultez la documentation sur l'outil Issue Tracker.

Version 1.7

Version 1.7.0-alpha07

17 avril 2024

Publication d'androidx.compose.foundation:foundation-*:1.7.0-alpha07. La version 1.7.0-alpha07 contient ces commits.

Nouvelles fonctionnalités

  • Ajout d'un objet TextDefaults contenant des méthodes permettant de construire un LinkAnnotation et d'analyser une chaîne avec balises HTML qui appliquent MaterialTheme aux liens. (I98532, b/139312671).
  • Ajout de la prise en charge de l'apparence et de la disparition des éléments dans LazyVerticalGrid et LazyHorizontalGrid. Auparavant, il était possible d'ajouter le modificateur Modifier.animateItemPlacement() afin de prendre en charge les animations d'emplacement (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'animations: l'apparence (fondu à l'ouverture), la disparition (fondu à la fermeture) et la réorganisation. (Ib7d12, b/330510929).
  • Ajout de la prise en charge de l'apparence et de la disparition des éléments dans LazyVerticalStaggeredGrid et LazyHorizontalStaggeredGrid. Auparavant, il était possible d'ajouter le modificateur Modifier.animateItemPlacement() afin de prendre en charge les animations d'emplacement (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'animations: 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 la LocalContextMenuTheme ProvidableCompositionLocal associée. Vous pouvez modifier les couleurs du menu contextuel des champs de texte et du texte sélectionnable en indiquant la composition locale. (Ifa154).
  • Les liens textuels ont reçu l'option de style d'état sous pression en plus du style normal, ont été survolés et ont été sélectionnés. (I5f864, b/139312671).
  • Introduction de ViewConfiguration.HandwritingGestureLineMargin pour les gestes d'écriture manuscrite. Prise en charge du geste d'écriture manuscrite pour BasicTextField. (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 de Placeable.PlacementScope.withDirectManipulationPlacement. De même, une mise en page qui change fréquemment la position de ses enfants peut désormais les placer à l'aide de withDirectManipulationPlacement (comme Scroll, implémenté par défaut). Cela permet aux animations basées sur approachLayout d'être plus intuitives, ce qui permet désormais de différencier le décalage à animer et les éléments à appliquer directement pour décider d'animer leur approche. (I60ec7).
  • Introduction de requestScrollToItem pour LazyStaggeredGrid. Pour chaque mesure-passée, le client peut désormais désactiver la gestion de l'index basé sur la clé en appelant requestScrollToItem. Cela ne modifie en aucune façon le comportement existant, sauf si requestScrollToItem est appelé. (I63983).
  • Introduction de requestScrollToPage dans Pager. Pour chaque mesure-passée, le client peut désormais désactiver la gestion de l'index basé sur la clé en appelant requestScrollToPage. Cela ne modifie en aucune façon le comportement existant, sauf si requestScrollToPage est appelé. (Ic4213).
  • Introduction de requestScrollToItem pour LazyGrids. Pour chaque mesure-passée, le client peut désormais désactiver la gestion de l'index basé sur la clé en appelant requestScrollToItem. Cela ne modifie en aucune façon le comportement existant, sauf si requestScrollToItem est appelé. (I0a7a0).
  • ClickableText est marqué comme obsolète. Pour ajouter des liens au texte, créez une AnnotatedString avec un LinkAnnotation correspondant à votre lien et transmettez cette AnnotatedString au composable Text. (I34d4b, b/323346994)
  • UrlAnnotation est obsolète. Utilisez LinkAnnotation.Url à la place. Si vous utilisez la thématisation Material, utilisez l'objet TextDefaults pour créer l'annotation en y appliquant la thématisation Material. (I8d180, b/323346545)
  • Changement de nom : String.parseAsHtml devient AnnotatedString.Companion.fromHtml. (I43dcd)
  • Ajout d'arguments de style (linkStyle, focusedLinkStyle, hoveredLinkStyle) et d'un écouteur d'interaction de lien à la méthode parseAsHtml. Lors de l'analyse de la chaîne comportant des balises HTML avec des balises <a>, la méthode crée une LinkAnnotation.Url pour chacune de ces balises, puis transmet les objets de style et l'écouteur d'interaction avec les liens à chaque annotation. (I7c977).
  • LinkAnnotation utilise désormais les arguments de style basés sur l'état et un LinkInteractionListener. Ajoutez cette annotation à AnnotatedString pour obtenir un lien hypertexte. En transmettant focusedState et/ou hoveredState, vous pouvez définir la configuration visuelle des liens lorsqu'ils sont sélectionnés et/ou survolés. (I81ce4, b/139312671).
  • Le flag de fonctionnalité pour les captures d'écran longues a été supprimé. (I28648, b/329128246).
  • 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 tout en obscurcissant le contenu. (I0588b).
  • Les sources NestedScroll Glisser et Fling sont remplacées par UserInput et SideEffect 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 sélection dépendant de la plate-forme qui est appliqué à la couche du modificateur Scrollable. (I27aa5, b/317453911).
  • Suppression de TextFieldCharSequence. Remplacement de TextFieldBuffer.originalValues par TextFieldBuffer.originalText et TextFieldBuffer.originalSelection. (I2c7d6).
  • ImeOptions.hintLocales ne peut plus avoir une valeur nulle. Si vous souhaitez transmettre une liste de paramètres régionaux vide, veuillez utiliser LocaleList.Empty. (Ic5bc4).
  • Changement de nom : getOffsetFractionForPage devient getOffsetDistanceInPages. (Ia05e2).

Correction de bugs

  • Lorsque les InputTransformations sont joints à next, leurs KeyboardOptions sont désormais correctement fusionnées par des options individuelles à l'aide de la nouvelle méthode KeyboardOptions.merge. (Ie5304, b/295951492).
  • Le targetValue de AnchoredDraggableState ne tient désormais plus compte des seuils de position. Il a désormais un seuil implicite de 50%, ce qui signifie que targetValue change au milieu entre deux ancres. (I82c2c).

Contribution externe

  • Changement de nom : 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 de l'apparence et de la disparition des éléments dans LazyColumn et LazyRow. Auparavant, il était possible d'ajouter le modificateur Modifier.animateItemPlacement() afin de prendre en charge les animations d'emplacement (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'animations: 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 gestion d'un index basé sur la clé pour la prochaine mesure-passée en appelant un LazyListState.requestToScroll non suspensif. (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 en AnnotatedString. Notez que toutes les balises ne sont pas compatibles. Par exemple, vous ne pouvez pas encore afficher de listes à puces. (I84d3d).
  • Nous avons implémenté la compatibilité expérimentale pour les captures d'écran longues dans les conteneurs de défilement Compose à l'aide de l'API Android officielle (ScrollCaptureCallback). Cette fonctionnalité est expérimentale et peut ne pas gérer correctement tous les cas pour le moment. C'est pourquoi elle est actuellement désactivée par défaut. Pour l'activer, définissez l'indicateur ComposeFeatureFlag_LongScreenshotsEnabled sur "true". Cet indicateur sera supprimé avant la version 1.7 bêta. (I2b055, b/329296471).
  • Introduction d'une nouvelle API GraphicsLayer pour offrir plus de flexibilité dans le placement et le rendu des instances GraphicsLayer, et prendre en charge les fonctionnalités de rendu intrinsèques sans avoir à se coordonner avec les implémentations de composables pour spécifier des instances de modificateur GraphicsLayer.

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éthode KeyboardOptions.merge.
  • KeyboardOptions.autoCorrect a été renommé autoCorrectEnabled et peut désormais avoir une valeur nulle, où "null" indique qu'aucune valeur n'a été spécifiée. (Ia8ba0, b/295951492).
  • Changement de nom : outOfBoundsPageCount devient beyondViewportPageCount. (I129c6).
  • fun ClipEntry.getMetadata() est passé à val ClipEntry.clipMetadata. (I50155).
  • Suppression de TextFieldState.valueAsFlow(). Vous préférez utiliser snapshotFlow { state.text } ou snapshotFlow { TextFieldCharSequence(state.text, state.selection) }. (I7d629)
  • Réorganisation des paramètres InputTransformation.transformInput. Suppression de originalValue: TextFieldCharSequence. À la place, TextFieldBuffer contient désormais cette valeur portant le même nom. Suppression du paramètre valueWithChanges: TextFieldBuffer. TextFieldBuffer est désormais le champ d'application du récepteur sur la fonction. (I919cc).
  • La variante BasicTextField(state) et BasicSecureTextField utilisent désormais KeyboardActionHandler au lieu de KeyboardActions pour traiter les actions effectuées par le clavier virtuel. (I58dda).
  • API de délégation de l'écriture manuscrite au stylet pour prendre en charge l'écriture manuscrite au stylet sur de "faux" champs de saisie de texte. (I9c09c, b/327271923).
  • Changement de nom : KeyboardOptions.shouldShowKeyboardOnFocus devient showKeyboardOnFocus. (Ib4b7a, b/295951492).
  • Suppression du paramètre hintMediaTypes de Modifier.contentReceiver. Les développeurs étaient déjà encouragés à vérifier le type de contenu du TransferableContent reçu, car il pouvait être incompatible avec le hintMediaTypes configuré. (I82f99).
  • Réorganisation des paramètres de BasicSecureTextField. Suppression des paramètres keyboardType et imeAction au profit de la classe KeyboardOptions complète, tout en conservant les mêmes valeurs par défaut appropriées pour BasicSecureTextField. Suppression du paramètre scrollState. (Ibbfa9).
  • Le type de TextFieldState.text est passé de TextFieldCharSequence à CharSequence uniquement. Par conséquent, nous avons ajouté TextFieldState.selection: TextRange et TextFieldState.composition: TextRange? pour lire les valeurs de sélection et de composition actuelles directement à partir de l'objet état.
  • Suppression de TextFieldState.forEachTextValue. (Idb2a2).
  • Suppression des fonctions ClipboardManager.getClipMetadata et ClipboardManager.hasClip. Veuillez utiliser clipEntry.getMetadata() pour lire les métadonnées de l'entrée actuelle de l'extrait. Vérifiez également le résultat de ClipboardManager.getClip s'il est nul ou pas pour savoir si le presse-papiers a un clip actif. (I50498).
  • ClipboardManager.setClip accepte désormais la valeur "null" pour pouvoir effacer le presse-papiers. (I7d2e9).
  • ReceiveContentListener est converti en une interface de fonction. Suppression de la surcharge Modifier.receiveContent qui accepte un lambda, car ReceiveContentListener est désormais une interface de fonction.
  • Modifier.receiveContent a été renommé Modifier.contentReceiver. (I1e6af).
  • Changement de nom : TransferableContent.consumeEach devient TransferableContent.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(basés sur la composition). (I54425).
  • Correction d'un bug qui empêchait Modifier.dragAndDropTarget() de référencer des données obsolètes dans certains scénarios avec une réutilisation de Modifier.Node. (I05bb1).
  • Annulation d'une modification récente du contrat où les appels AnchoredDraggableState#anchoredDrag étaient ancrés à la fin d'une opération anchoredDrag. (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 hyperliens. (Iebfa7).
  • Suppression du forçage expérimental de BasicText avec l'argument onLinkClicked. Une API de remplacement pour la prise en charge des hyperliens sera disponible prochainement. (I107d5).
  • Suppression des méthodes et propriétés liées aux points de code sous TextFieldState et TextFieldBuffer. Suppression des suffixes inChars des API restantes liées à la sélection et à la composition. (Ief7ce).
  • Le currentValue de AnchoredDraggable est désormais mis à jour lors du passage par un point d'ancrage. Utilisez settledValue pour recevoir la sémantique currentValue précédente, qui n'est mise à jour que lors du paramétrage 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) au lieu d'une propriété. (Ibe6e8, b/318707189, b/298271489, b/294991954).
  • BasicTextField(state), TextFieldState, InputTransformation, OutputTransformation, TextFieldLineLimits et TextFieldDecorator 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 de PlatformTextInputTestOverride. (I862ed, b/322680547).
  • Division de restrictedConstraints() en deux méthodes: fitPrioritizingWidth() et fitPrioritizingHeight(). (I6d7fd)

Contribution externe

  • Ajout de deux nouvelles API isLastScrollForward/isLastScrollBackward pour vérifier la direction de défilement pour la dernière action de défilement. Renvoie la valeur "false" si aucune action de défilement n'a encore été effectuée. (I63a0e).

Version 1.7.0-alpha04

6 mars 2024

Publication d'androidx.compose.foundation:foundation-*:1.7.0-alpha04. La version 1.7.0-alpha04 contient ces commits.

Modifications apportées à l'API

  • Prise en charge de la fonctionnalité d'écriture manuscrite au stylet sur les appareils après Android U. (I002e4).
  • Ajout de hintLocales à KeyboardOptions pour permettre à TextFields d'indiquer les IME avec 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 et BasicSecureTextField qui prenaient les paramètres value: String et onValueChange: () -> String. (I568b4).
  • Ajoutez une fonction applySemantics facultative à InputTransformation pour influencer la sémantique du BasicTextField2 auquel elle s'applique. (I74a2f, b/170648072).
  • Dans cette CL, nous ajoutons l'action sémantique GetScrollViewportLength afin de rediriger vers le système a11y des informations sur les composants que l'utilisateur fait défiler dans Compose. Cette CL applique également l'utilisation de ladite propriété dans les listes déroulantes de base. (Ic5fa2).
  • BasicTextField2 a été renommé BasicTextField. (Ie5713).
  • Mise à jour de FocusRequester.createRefs, désormais stable. (I4d92c, b/261436820)
  • Introduction de DelegatableNode.scrollIntoView() pour permettre aux nœuds de modificateur d'effectuer directement des requêtes scrollIntoView. (I2b3b7, b/299939840).
  • Introduction de DelegatableNode.requireView() pour permettre aux nœuds de modificateur d'obtenir le View Android actuel sans lire une composition en local. (I40768).
  • Introduction d'informations de mise en page contextuelles dans les champs d'application des lignes du flux contextuel et de la colonne du flux contextuel, avec l'index de ligne, la position et les contraintes de largeur et de hauteur maximales pour rester à la position spécifiée. Les éléments qui dépassent la largeur/hauteur maximales peuvent être insérés dans 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 ou readOnly de TextField. (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() afin d'obtenir le LayoutCoordinates actuel d'un Modifier.Node sans avoir à remplacer onPlaced et à stocker vous-même les coordonnées dans une propriété. (Ia8657).
  • Introduction de DelegatableNode.currentLayoutCoordinates afin d'obtenir le LayoutCoordinates actuel d'un Modifier.Node sans avoir à remplacer onPlaced et à stocker vous-même les coordonnées dans une propriété. (Iaebaa).
  • Optimisations des performances dans DraggableAnchors utilisées par AnchoredDraggable. (I89cff).
  • Déplacement de BasicTextField2 et des API associées sous le package androidx.compose.foundation.text2 vers androidx.compose.foundation.text. (I9f635).
  • BasicTextField2 n'accepte plus de paramètre CodepointTransformation. Utilisez BasicSecureTextField ou OutputTransformation. (Id34ff).
  • Ajout d'une méthode permettant de comparer uniquement les annotations de deux AnnotatedStrings. (I32659).
  • Découvrez ContextualFlowRow et la fonctionnalité FlowRow/Column améliorée avec MaxLines et Overflow. Nous sommes heureux d'annoncer que des améliorations ont été apportées aux FlowRow et FlowColumn expérimentales, qui incluent désormais maxLines et overflow, en plus des lancements de ContextualFlowRow et ContextualFlowColumn. Cette mise à jour est conçue pour fournir des composants offrant des performances optimales. ContextualFlow* est idéal pour un grand nombre d'éléments utilisant une configuration maxLines réduite et le bouton +N dynamique "Voir plus", tandis que FlowRow et FlowColumn sont parfaits pour un petit nombre d'éléments, mais moins de 100 éléments. Important: Pour conserver le comportement existant dans FlowRow ou FlowColumn, où tous les éléments sont composés, qu'ils correspondent ou non à la valeur maximale de l'axe transversal, définissez overflow sur FlowRowOverflow.Visible ou FlowColumnOverflow.Visible lors de l'initialisation. Explorez ContextualFlowRowSample et FlowRowSample 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).
  • Les constructeurs de copie obsolètes de KeyboardOptions copient désormais correctement toutes les propriétés. (If12de).

Version 1.7.0-alpha02

7 février 2024

Publication d'androidx.compose.foundation:foundation-*:1.7.0-alpha02. Liste des commits de la version 1.7.0-alpha02

Modifications apportées à l'API

  • HorizontalPager, VerticalPager et PagerState sont promus à la version stable. (I67660, b/316966909).
  • Ajout d'une composition LocalTextLinkStyle en local, qui permet de modifier le style des liens dans le texte de l'application. Si vous utilisez votre propre thème dans l'application, vous devez définir 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 l'action de collage dans le presse-papiers. (I81b72).
  • Dans ce changement, nous remplaçons SnapFlingBehavior par TargetedFlingBehavior dans le bipeur pour débloquer d'autres cas d'utilisation et offrir plus de flexibilité. (I762ea).
  • Avec cette modification, les API d'ancrage sont désormais stables. Nous nettoyons également une partie du code de test et ajoutons d'autres exemples à l'ancrage. (Id8da9).
  • Introduction de TargetedFlingBehavior, un FlingBehavior qui permet de propager des informations sur l'état de l'animation en cours et de son décalage de défilement cible. (I6a207).

Correction de bugs

  • BasicTextField2 conserve désormais le curseur dans la vue lors de la saisie, s'il a été fait défiler hors du champ ou qu'il était susceptible de l'être en raison d'une entrée. (Ieb856, b/237190748).

Contribution externe

  • Ajout d'une API expérimentale pour configurer le comportement de préchargement des LazyLists. (I022a4).

Version 1.7.0-alpha01

24 janvier 2024

Publication d'androidx.compose.foundation:foundation-*:1.7.0-alpha01. Liste des commits de la version 1.7.0-alpha01

Nouvelles fonctionnalités

  • Ajout d'un Indication API, IndicationNodeFactory. Cela se traduit par des implémentations Indication plus performantes que l'API rememberUpdatedInstance 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ètre MutableInteractionSource pouvant avoir une valeur nulle. Si la valeur est nulle et que le Indication fourni est un IndicationNodeFactory, le Indication ne peut être créé en différé que si nécessaire, ce qui améliore les performances. Si vous ne hissez pas et n'utilisez pas MutableInteractionSource, nous vous recommandons de transmettre une valeur nulle.

Modifications apportées à l'API

  • Ajout de DecayAnimation dans AnchoredDraggable. Cette modification ajoute un paramètre decayAnimationSpec à AnchoredDraggable, ce qui permet d'utiliser une animation de dépréciation lorsque vous choisissez l'un des ancrages. La modification inclut également le changement de nom du animationSpec existant en snapAnimationSpec pour vous aider à comprendre le cas d'utilisation de chaque spécification.
  • BasicTextField2 est disponible pour une utilisation expérimentale. Il devrait être à peu près au même niveau de fonctionnalités que BasicTextField, et son comportement doit être prêt pour la production. Toutefois, l'API reste expérimentale pour le moment. Avant la stabilisation, elle sera renommée BasicTextField et déplacée dans le même package.
  • Introduction du premier brouillon de l'API OutputTransformation pour BasicTextField2. Cette API remplace la plupart des cas d'utilisation de VisualTransformation dans l'ancienne BasicTextField. Elle n'est toutefois pas encore terminée et certaines choses ne fonctionneront pas correctement, mais nous aimerions connaître votre avis sur l'usabilité de l'API pour vos cas d'utilisation. (aosp/2708848).
  • Introduction de LinkAnnotation, qui permet d'ajouter des liens et des éléments cliquables dans le texte. La fonctionnalité d'associations n'est pas encore prête, et d'autres modifications de l'API seront bientôt apportées.
  • 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 un collage depuis le presse-papiers.
  • KeyboardOptions.shouldShowKeyboardOnFocus vous permet de désactiver le comportement par défaut de BasicTextField, qui consiste à demander un clavier virtuel actif.
  • Abandon de TextInputService et LocalTextInputService. Utilisez plutôt PlatformTextInputModifierNode pour procéder à une intégration directe avec les API IME de la plate-forme. (aosp/2862698).
  • Indication#rememberUpdatedInstance est maintenant obsolète. Elle entraîne une perte de performances inévitable élevée et empêche d'autres optimisations. Utilisez plutôt la nouvelle API IndicationNodeFactory.

Correction de bugs

  • Mise à jour de BasicTextField, qui prévalide désormais une petite sélection de mappages de décalage lorsque VisualTransformation est transmis. Cela permet de détecter les erreurs de codage courantes qui entraînent des exceptions irrécupérables lors des passes de mesure ou de dessin ultérieures. Si vous l'exécutez pendant la composition, il est plus probable que les développeurs voient ces erreurs pendant le développement, ce qui permet d'éviter les plantages en production. (I0fd42).
  • VisualTransformation ne sera pas généré si vous renvoyez un index non valide pour un index non valide. (b/316401857 )

Version 1.6

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 ou readOnly de TextField. (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 la ligne/colonne (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 consistant à appuyer de manière prolongée sur un élément, puis à le faire glisser en dehors des limites de la mise en page du texte dans la première image du déplacement 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 du problème de réinitialisation de AnimateContentSize. (I07051).
  • Correction d'un problème qui provoquait la mise en cache excessive de intrinsicHeight du 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 du décalage de la mesure de grille lors d'un défilement au-delà de la limite. (bffc39).
  • Ajout d'une vérification pour les mises en page de grandes dimensions. (E74af5).
  • Correction du placement 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 glisser-déposer et d'animer un ensemble d'ancres prédéfini. Ce modificateur est destiné à remplacer Modifier.swipeable. Découvrez comment l'utiliser et effectuer la migration depuis Modifier.swipeable dans le guide de migration.
  • Une fonctionnalité de glisser-déposer entre les applications et les composants a été ajoutée. Pour commencer, consultez DragAndDropTarget, Modifier.dragAndDropSource et d'autres API
  • Modifier.draggable2D est le nouveau modificateur qui facilite le déplacement en 2D. Consultez la section Exemple.
  • Ajout de AndroidExternalSurface et AndroidEmbeddedExternalSurface pour faciliter l'ajout de composants basés sur la surface dans Compose.
  • Diverses modifications et améliorations de l'API dans Pager et snapFlingBehaviour
  • Différentes API de ciblage, de texte et d'encarts ont été converties en 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 de object: 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 des plantages affectant 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 d'un problème de mise à jour de canScroll après un défilement lié à la remise en page uniquement. (I60a86).
  • Correction de Modifier.animateItemPlacement() et de LookaheadScope après de petits défilements. (I3a2b7).

Version 1.6.0-beta01

15 novembre 2023

Publication d'androidx.compose.foundation:foundation-*:1.6.0-beta01. Liste des commits de la version 1.6.0-beta01

Modifications apportées à l'API

  • Le modificateur DragAndDropTarget accepte désormais explicitement la DragAndDropTarget destinataire et dispose d'un lambda pour activer une session de glisser-déposer. Il existe désormais deux fonctions de fabrique pour un DragAndDropModifierNode. un pour la réception des transferts et un pour le transfert des données. (I69481)
  • Mise à jour de maximumFlingVelocity pour qu'il soit représenté par une valeur flottante. Mise à jour de la documentation pour plus de clarté sur l'unité maximumFlingVelocity. (I8adc7).
  • Changement de nom : onDragAndDropStart de la fabrique DragAndDropModifierNode devient acceptDragAndDropTransfer.

    acceptsDragAndDropTransfer a été ajouté au Modifier de dragAndDropTarget pour accepter depuis une session de glisser-déposer. Ce lambda renvoie un DragAndDropTarget viable si une session de glisser-déposer est intéressée. D'autres lambdas de traitement des événements de déplacement ont été remplacés par cet élément.

    Ajout d'une fonction de fabrique DragAndDropTarget pour la réception des sessions de glisser-déposer. (Iebf3a)

  • L'affichage de startDragImmediately dans AnchoredDraggable permet de contrôler la détection des gestes de déplacement lors de son utilisation. 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 d'info-bulle sur les fondations sont désormais @ExperimentalFoundationApi. (I30b0b)

  • Suppression de DragAndDropInfo en tant que type DragAndDropModifierNode.drag, qui accepte désormais les paramètres pour le lambda transferData, la taille de la décoration et la décoration de déplacement DrawScope.

    Au lieu d'être une méthode abstraite unique, DragAndDropTarget dispose de méthodes pour des événements de glisser-déposer spécifiques.

    Changement de nom : onDragAndDropEvent dans la fonction de fabrique d'un DragAndDropModifierNode devient onDragAndDropStart pour mieux indiquer que le DragAndDropTarget fourni n'est valide que pour une session de glisser-déposer donnée.

    Suppression de DragAndDropEventType. (I645b1)

  • Changement de nom : PlatformTextInputModifierNode.runTextInputSession devient establishTextInputSession. (I03cd0).

  • Remplacez OriginalText par TextSubstitution. (Ifa5a8).

  • Changement de nom : PlatformTextInputModifierNode.textInputSession devient runTextInputSession. (Ie9c6b).

  • Les éléments enfants de SubcomposeLayout (et les mises en page comme LazyColumn 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 test assertIsDeactivated() a été introduite pour tester ces nœuds. Les autres API de test filtrent les nœuds désactivés par défaut. (I2ef84, b/187188981).

  • Changement de nom : le paramètre clippingEnabled de Modifier.magnifier devient clip.

  • Le paramètre magnifierCenter de Modifier.magnifier peut désormais avoir une valeur nulle, en conservant le même comportement par défaut. (I6aa66).

  • Les API Material SwipeToReveal (pour les cartes et les chips) reposent désormais sur une API basée sur les emplacements (recommandée 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 des exemples d'utilisation de la nouvelle API. (Ia8943).

Correction de bugs

  • Implémentez les termes "é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 de se réduire lorsque minWidth changeait et minWidth de moins que les contraintes de mesure initiales maxWidth. (Idb19c)
  • Ajout de la prise en charge du moteur de rendu pour le gradient de balayage dans ArcLine. (I4d5bb).
  • Correction d'un 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 cela. (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. Consultez l'exemple. (Id95f5, b/214412658)

Modifications apportées à l'API

  • Le lambda onDrawDragShadow a été renommé drawDragDecoration pour Modifier.dragAndDrawSource, et le paramètre de taille a été renommé dragDecorationSize pour DragAndDropInfo. (Id0e30, b/303904810).
  • Changement de nom : le paramètre decorationBox de BasicTextField2 devient decorator. Son type est également remplacé par une interface amusante équivalente, TextFieldDecorator. (I23c1c).

Correction de bugs

  • Amélioration de la documentation sur BasicTextField concernant les exigences concernant onValueChange. (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 devient AndroidExternalSurface. (I11680)
  • Ajout de l'indicateur temporaire DisableNonLinearFontScalingInCompose pour désactiver la mise à l'échelle non linéaire de la police. Définissez des DisableNonLinearFontScalingInCompose = 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 et ColorSet qui évitent les allocations. (I744bd).
  • Cette modification supprime shortSnapVelocityThreshold, qui est devenu un détail d'implémentation des implémentations de SnapLayoutInfoProvider. (I65f6d).
  • Ajout du modificateur dragAndDropSource pour démarrer des sessions de glisser-déposer, et du modificateur dragAndDropTarget pour la réception depuis des 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 dans la méthode position dans SnapPositionInLayout. (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'anime pas après un changement de vélocité. (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() et EmbeddedGraphicsSurface(). Il s'agit d'une API expérimentale qui peut faire l'objet de modifications. (I9ddb2).
  • Modifier.magnifier() est désormais une API stable. Cela inclut la suppression de MagnifierStyle 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 et updateTargetPage dans ScrollScope. Il s'agit des derniers éléments nécessaires pour permettre la personnalisation du défilement animé dans PagerState.scroll. (I9cad5, b/267744105, b/243786897).
  • Supprimer la densité de SnapFlingBehavior. Toutes les implémentations de SnapLayoutInfoProvider disposent déjà d'un moyen d'accéder à la densité. Le champ d'application du récepteur peut être supprimé, ce qui rend l'implémentation moins complexe de SnapFlingBehavior et de SnapLayoutInfoProviders. (I153c3).
  • Davantage de modificateurs marqués comme stables (I56af1, b/298046462).
  • SnapStepSize a été supprimé de SnapLayoutInfoProvider. Le calcul doit être effectué à l'aide des informations de mise en page et fournis via l'approche ou les décalages d'ancrage. (If320c).

Nouveaux comportements

  • Compose utilise désormais la mise à l'échelle non linéaire des polices pour améliorer la lisibilité et l'accessibilité. Lorsque l'échelle de police est supérieure à 100% dans les paramètres système, la taille du texte en petits caractères augmente normalement, tandis que celle du texte déjà grand format n'augmente que légèrement. De plus, la hauteur de ligne définie dans SP s'ajuste automatiquement pour rester proportionnelle à la hauteur prévue de l'échelle de 100 %. Pour en savoir plus, consultez les bonnes pratiques concernant l'ajustement de la police. (I11518)

Correction de bugs

  • Supprimez 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

  • Ajout de surcharges pour BasicSecureTextField, qui acceptent une valeur immuable, ainsi qu'un rappel pour modifier cette valeur, tout comme l'API BasicTextField actuelle. (Ia4882).
  • Ajout de Modifier.preferKeepClear() pour indiquer qu'il est préférable d'éviter les fenêtres flottantes sur l'API 33 et versions ultérieures. (Ib51d5, b/297260115).
  • Les vitesses de déplacement dans les composants View tels que ScrollView et RecyclerView sont limitées à ViewConfiguration.ScaledMaximumFlingVelocity. Compose contient désormais sa propre version de maximumFlingVelocity, qui s'applique désormais à Draggable. (Ibf974).
  • Suppression des surcharges Pager et PagerState obsolètes. (Iea07e).
  • Ajout de BasicTooltipBox à compose.foundation, et mise à jour de PlainTooltipBox et RichTooltipBox pour utiliser TooltipBox avec les nouveaux composables PlainTooltip et RichTooltip. (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é promue API stable. (I7ffa3).
  • Ajout de surcharges pour BasicTextField2, qui acceptent une valeur immuable, ainsi qu'un rappel pour modifier cette valeur, tout comme l'API BasicTextField actuelle. (I3f2b8).
  • GridItemSpan::currentLineSpan est désormais une API stable. (Icc29c).
  • Mise à jour de Canvas, qui accepte contentDescription, est désormais une API stable. (Ib3d29).
  • Introduction de viewportSize dans ScrollState, un moyen de connaître la taille viewPort du composant qui utilise ScrollState après la mesure. (I8b85a, b/283102682).
  • Correction d'un problème qui empêchait le préchargement dans Pager de correspondre au comportement de Views. (I93352, b/289088847).
  • Mise à jour de Modifier.consumeWindowInsets(PaddingValues), désormais stable.
    • Suppression de l'API Deprecated Modifier.consumedWindowInsets. Utilisez plutôt Modifier.consumeWindowInsets. (Id72bb).

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 de LazyLayoutItemProvider, 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 qui affichent le clavier et peuvent être modifiés lorsque readOnly est défini sur "true". Correction d'un problème d'affichage du clavier lorsque readOnly passe de "true" à "false" alors que 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 la transmission d'une mesure dans Pager. Ajout de PageInfo, les informations concernant une seule page mesurée dans Pager. (Iad003, b/283098900).
  • Des annotations supplémentaires pour spécifier des entrées autorisées dans les composables. (I51109)
  • Ajout de SemanticsNodeInteraction.requestFocus, un moyen plus pratique et visible de demander la sélection dans les tests. (Ie8722).
  • API PlatformTextInput* entièrement repensée. (I6c93a, b/274661182, b/267235947, b/277380808).
  • SoftwareKeyboardController et LocalSoftwareKeyboardController ne sont plus au stade expérimental. LocalSoftwareKeyboardController est désormais un CompositionLocal approprié. (I4c364).
  • Modifier.transformable fournit désormais le delta du panoramique dans le paramètre canPan pour aider à déterminer la direction du panoramique afin de l'autoriser ou de l'interdire. (I692aa, b/266829800).
  • Mise à jour du modificateur consumeWindowInsets pour étendre la super-classe AbstractComposeView. (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 API AnchoredDraggable dans Foundation. Il peut être utilisé pour créer des composants qui peuvent être déplacés entre des états distincts, tels que des bottom sheets modales. Cette API remplace l'API Swipeable de Material. (I4a2ed).

Modifications apportées à l'API

  • Prise en charge de InputConnection#requestCursorUpdates. (I0c69b)
  • Introduction de scrollAnimationSpec pour permettre les spécifications d'animation personnalisées. BringIntoViewCalculator a été remplacé par BringIntoViewScroller. (Idb741).
  • Ajout du type ResourceResolutionException aux objets wrap-ables générés lors de la tentative de chargement d'éléments bitmap avec une description du chemin d'accès à l'élément dont le chargement a échoué. (I19f44, b/230166331, b/278424788).
  • Ajout de propriétés et d'actions sémantiques pour prendre en charge la traduction de texte. (I4a6bc).
  • Introduction d'une API BringIntoViewCalculator qui permet de personnaliser la façon dont des composants tels que Scrollable répondent aux requêtes bringIntoView. Modification de la surcharge de l'élément déroulant pour qu'il accepte éventuellement une instance de BringIntoViewCalculator. (Iaf5af).

Correction de bugs

  • Ajout d'une vérification lint pour vous avertir si vous créez un MutableInteractionSource dans la composition sans le mémoriser, comme les vérifications lint pour la création d'un état modifiable / Animatable. (I5daae).
  • Ajout de la compatibilité avec la sélection à la souris. La sélection tactile s'étend d'un mot à l'autre et diminue d'un caractère à l'autre. (Ic0c6c, b/180639271).
  • Ajout de l'interface FocusTargetModifierNode permettant de créer un FocusTarget 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 entraînait des plantages dans certaines circonstances lorsque la sémantique était invalidée.

Version 1.5.1

6 septembre 2023

Publication d'androidx.compose.foundation:foundation-*:1.5.1. Liste des commits de la version 1.5.1

Correction de bugs

  • Correction des champs de texte qui affichent le clavier et peuvent être modifiés lorsque readOnly est défini sur "true". Correction d'un problème d'affichage du clavier lorsque readOnly passe de "true" à "false" alors que 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'API Modifier.Node, ce qui réduit les frais généraux sur la composition initiale.
  • Améliorations de la stabilité des pagers. De nombreux bugs ont été corrigés.
  • Les paramètres pageCount se trouvent désormais dans PagerState 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 permettant de recommander la migration des appels mutableStateOf() vers les types spécialisés correspondants pour les primitives est disponible. Son ID lint est AutoboxingStateCreation. Auparavant, cette inspection était activée par défaut pour tous les projets. Pour afficher cet avertissement dans l'éditeur d'Android Studio et dans les sorties lint de votre projet, remplacez sa gravité par un avertissement (ou un avertissement) en déclarant warning "AutoboxingStateCreation" dans la configuration build.gradle ou build.gradle.kts de votre module, comme indiqué (I34f7e):

        android {
            lint {
                warning "AutoboxingStateCreation"
            }
            ...
        }
    

Version 1.5.0-beta03

28 juin 2023

Publication d'androidx.compose.foundation:foundation-*:1.5.0-beta03. Liste des commits de la version 1.5.0-beta03

Version 1.5.0-beta02

7 juin 2023

Publication d'androidx.compose.foundation:foundation-*:1.5.0-beta02. Liste des commits de la version 1.5.0-beta02

Version 1.5.0-beta01

24 mai 2023

Publication d'androidx.compose.foundation:foundation-*:1.5.0-beta01. Liste des commits de la version 1.5.0-beta01

Modifications apportées à l'API

  • Implémentez PlatformDataProvider pour fournir la fréquence cardiaque et le nombre de pas quotidiens. Suppression de l'interface SensorGateway de l'API publique. (I55b84).

Correction de bugs

  • Réduction des allocations lors des mesures différées des listes, des grilles, etc. (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).
  • Introduction d'un SnapLayoutInfoProvider qui peut être utilisé avec LazyGridState. (I92134, b/269237141, b/260914964).
  • Ajout de la fonctionnalité expérimentale Modifier.animateItemPlacement() pour le champ d'application des éléments dans les grilles décalées différées. Vous pouvez l'appliquer aux éléments pour obtenir des animations de changement/réorganisation de la position d'automatisation. (I4b62d, b/257034719).
  • Promotion de GridCells.FixedSize en version stable. FixedSize définit une LazyGrid où chaque cellule prend une taille exacte sur un axe transversal, avec la disposition transversale de l'espace restant. (I8542f).
  • Introduction du champ d'application receveur PagerScope pour Pager et d'une fonction utilitaire pour calculer un décalage de page donné. (If2577).
  • Introduction d'snapPositionalThreshold lors de la création d'un comportement de glissement d'un geste vif. Ce paramètre permet de spécifier un seuil positionnel pour un ancrage court dans le pager. (If8f7f).
  • SnapLayoutInfoProvider.calculateSnappingOffsetBounds a été remplacé par calculateSnappingOffset. Avec cette nouvelle méthode, il nous suffit de demander le décalage suivant sur lequel l'ancrage doit être effectué. Le calcul des limites doit être effectué au niveau de l'implémentation, car il peut varier en fonction de la façon dont l'ancrage est nécessaire. (I923a4).
  • Les API LazyStaggeredGrid sont passées à la version stable. (I633a5).
  • Suppression de pageCount de Horizontal/VerticalPager. Elle doit être fournie lors de la création de l'état. Mise à jour de PagerState et rememberPagerState pour accepter les pageCount. (Ieb52d, b/266965072).
  • Suppression de pageCount de Horizontal/VerticalPager. Elle doit être fournie lors de la création de l'état. Mise à jour de PagerState et rememberPagerState pour accepter les pageCount. (Ifa3cb, b/266965072).
  • Introduction de shortSnapVelocityThreshold dans le SnapFlingBehavior du pager. (I7379e, b/275579012).
  • Ajoute FlowRowScope et FlowColumnScope. (I54fe2).

Correction de bugs

  • Les appels pour obtenir la sémantique sur Text lorsque les contraintes minWidth et minHeight 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 étant optimisée pour les performances, vous ne devriez constater aucun changement visible.

Si vous constatez des modifications dans le texte affiché, vous pouvez procéder au débogage en définissant NewTextRendering1_5 = false pour confirmer la différence de comportement. La définition de cette option force 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

  • Alignement de 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 organisation avec une disposition transversale. (I83ed9, b/235121277, b/267942510).
  • Ajout de la prise en charge des voies de taille fixe dans LazyStaggeredGrid et de leur organisation selon un axe transversal. (I7d519).
  • Les UrlAnnotation dans les AnnotatedString peuvent désormais être ouverts via des services d'accessibilité tels que TalkBack. (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 et de la disposition transversaux à l'aide de verticalArrangement dans FlowRow et de horizontalArrangement dans FlowColumn. Nous supprimons également les éléments verticalAlignment et horizontalAlignment de premier niveau dans FlowRow/FlowColumn. Les développeurs peuvent utiliser Modifier.align à la place. Cela réduit la confusion entre les conventions de dénomination de verticalAlignment et de verticalArrangement. (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

  • Text et BasicText sont refactorisés pour utiliser le nouveau système de modificateurs. Cela se traduit par des améliorations substantielles des performances dans de nombreux cas. Aucune modification ne devrait ê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 éléments internes de Modifier.hoverable. Le modificateur hoverable 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 d'androidx.compose.foundation:foundation-layout:1.4.3 sans aucune modification (uniquement un saut de version).

Version 1.4.2

19 avril 2023

Publication d'androidx.compose.foundation:foundation:1.4.2 et d'androidx.compose.foundation:foundation-layout:1.4.2. Liste des commits de la version 1.4.2.

Version 1.4.1

5 avril 2023

Publication d'androidx.compose.foundation:foundation:1.4.1 et d'androidx.compose.foundation:foundation-layout:1.4.1. Liste des commits de la version 1.4.1

Version 1.4.0

22 mars 2023

Publication d'androidx.compose.foundation:foundation:1.4.0 et d'androidx.compose.foundation:foundation-layout:1.4.0. Liste des commits de la version 1.4.0.

Changements importants depuis la version 1.3.0

  • Ajout de l'intégration de la compatibilité avec les emoji à Text et TextField, 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 utilisant PlatformParagraphStyle.
  • Ajout de la prise en charge complète de l'étendue de la ligne dans LazyStaggeredGrid(I28252)
  • Ajout du onHover expérimental à ClickableText . (I6938f)
  • Introduction de surcharges expérimentales pour les fonctions runComposeUiTest et create*ComposeRule qui acceptent les paramètres CoroutineContext. Le contexte sera utilisé pour la composition de test, ainsi que pour les appels LaunchedEffect et rememberCoroutineScope() dans la composition. (I10614, b/265177763)
  • FlowRow et FlowColumn 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 pour afficher du contenu avec un effet de rectangle de sélection à défilement. (I2df44, b/139321650)

Version 1.4.0-rc01

8 mars 2023

Publication d'androidx.compose.foundation:foundation:1.4.0-rc01 et d'androidx.compose.foundation:foundation-layout:1.4.0-rc01. Liste des commits de la version 1.4.0-rc01.

Modifications apportées à l'API

  • Introduction d'une API PlatformTextInputAdapter de bas niveau pour créer des implémentations d'entrée 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 de BasicTextField met désormais à jour le tampon de texte à l'aide du même chemin de code que les mises à jour de l'IME et les fonctions de test (par exemple, performTextReplacement).
  • Les fonctions de test de texte performTextClearance, performTextReplacement et performTextSelection utilisent désormais SemanticsActions. (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 lorsque Layout est réutilisé (par exemple, en tant qu'élément de LazyColumn). Correction de FocusTargetModifierNode pour réinitialiser correctement l'état sélectionné. (I65495, b/265201972)
  • Ajout des paramètres BlendMode aux méthodes DrawScope.drawText, Paragraph.paint et MultiParagraph.paint pour accepter différents algorithmes de combinaison lors du tracé de texte sur Canvas. (I57508)
  • Suppression de l'API modifierElementOf(). Utiliser directement ModifierNodeElement à 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 et TextField, 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 utilisant PlatformParagraphStyle.

Modifications apportées à l'API

  • Ajout d'une implémentation courante de l'API PinnableContainer utilisée dans tous les LazyLayouts pour conserver les éléments qui quittent la composition, mais qui doivent rester actifs. (If45a4)
  • Changement de nom : PinnableContainer.PinnedHandle.unpin() devient release() (I4667a).

Contribution externe

  • Ajout de la propriété mainAxisItemSpacing à LazyListLayoutInfo, LazyGridLayoutInfo et LazyStaggeredGridItemInfo. (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 dans ClickableText. (I6938f)
  • Introduction de surcharges expérimentales pour les fonctions runComposeUiTest et create*ComposeRule qui acceptent les paramètres CoroutineContext. Le contexte sera utilisé pour la composition de test, ainsi que pour les appels LaunchedEffect et rememberCoroutineScope() 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 et applyToFling 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 et Hyphens de TextStyle 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 dans TextInputSession et TextInputService 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 et FlowColumn 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é par FocusRequesterNode (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • Le constructeur AndroidFont avec variationSettings 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é". Utilisez TextMotion.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 dans drawText par size: Size pour l'aligner sur d'autres fonctions DrawScope. size est défini sur Size.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 erreur java.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 votre androidx.compose.material et androidx.compose.material3 vers la dernière version (1.1.0-alpha04) ou revenez à la version 1.4.0-alpha03 de androidx.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 directement withFrameNanos ou withFrameMillis 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 constructeur TestMonotonicFrameClock et à une fonction de fabrique permettant d'exécuter du code après les rappels withFrameNanos, 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 et PageRight. Celles-ci ne sont disponibles qu'à partir de l'API 29. (Ida4ab)
  • Ajout de HorizontalPager et VerticalPager, qui permettent d'afficher des composables en mode pagination. Ajout de PagerState pour contrôler les pagers et demander des informations sur leur état actuel. Ajout de PageSize, un moyen de contrôler la taille d'une page de pagination. Permet de créer une pagination de type carrousel. Ajout de PagerSnapDistance, 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, si ScrollableState#canScrollForward/backward renvoient tous les deux la valeur "false"). (I1a4b0, b/255554340, b/255557085)
  • Ajout de ScrollableState#canScrollForward et ScrollableState#canScrollBackward pour demander si un ScrollableState 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 de ScrollableState. 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 un Scrollable 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 dans SnapLayoutInfoProvider. (Ife67c)
  • Ajout de EmojiCompat à Compose (Ibf6f9, b/139326806)
  • consumedWindowInsets() a été renommé consumeWindowInsets(), et withConsumedWindowInsets() 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 et waitForUpOrCancellation acceptent désormais PointerEventPass 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 dans BasicText et BasicTextField. 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 de forEachGesture(), mais la lecture en boucle des gestes fonctionne entièrement dans AwaitPointerEventScope, de sorte que les événements ne peuvent pas être perdus entre les itérations.
  • forEachGesture() a été abandonné au profit de awaitEachGesture(), car il permet la perte d'événements entre deux gestes. (Iffc3f, b/251260206)
  • Ajout de WindowInsets.imeAnimationSource et WindowInsets.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 et LazyHorizontalStaggeredGrid ont été introduites.
  • SnapFlingBehavior, rememberSnapFlingBehavior et d'autres API correspondantes ont été ajoutées à titre expérimental.
  • Modifier.clickable, Modifier.toggleable et Modifier.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 par constraints: Constraints dans la méthode TextMeasurer.measure pour prendre en charge les contraintes de largeur minimale. (I37530, b/242707525)
  • Ajout de Modifier.withConsumedWindowInsets() pour pouvoir utiliser WindowInsets en dehors de windowInsetsPadding.
  • Ajout de MutableWindowInsets pour permettre de modifier facilement WindowInsets 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 d'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 et FocusDirection.Out deviennent FocusDirection.Enter et FocusDirection.Exit. (Ia4262, b/183746982)
  • Introduction d'une surcharge rememberSnapFlingBehavior qui permet d'activer rapidement l'ancrage dans LazyLists. (Ifb48a)
  • Remplacement de la fabrique snapFlingBehavior par une classe SnapFlingBehavior concrète. Définition du champ d'application des méthodes SnapLayoutInfoProvider 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 un LazyListState pour créer une instance de SnapLayoutInfoProvider permettant d'activer un ancrage FlingBehavior pour LazyLists. (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 de OverscrollEffect. Les effets qui dépendent de la position du pointeur peuvent utiliser Modifier.pointerInput { } dans effectModifier 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 de SnapLayoutInfoProvider 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 et LineHeightStyle. (I64bef)
  • Les champs de texte génèrent désormais des exceptions plus détaillées lorsque le OffsetMapping fourni par un VisualTransformation 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é vers LayoutInfo.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. Utilisez SoftwareKeyboardController à la place dans le code de l'application et TextInputSession 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 sur DrawScope pour permettre d'afficher du texte multistyle sur les composables et les modificateurs fonctionnant sur un élément DrawScope tel que Canvas ou drawBehind. (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 liens TalkBack dans les AnnotatedString. (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 d'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 et LazyHorizontalGrid 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 surcharges Modifier.scrollable qui l'acceptent.
  • Changement de nom et déplacement de la propriété expérimentale LocalOverScrollConfiguration, renommée LocalOverscrollConfiguration et déplacée de foundation.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 avec LazyLayout. (Id6fab, b/233352497)
  • Suppression du composable obsolète LazyVerticalGrid du package androidx.compose.foundation.lazy. La nouvelle API stable se trouve dans androidx.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 et MutableIntervalList. 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é par LazyColumn, 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 encarts ime 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 et DeleteSurroundingTextInCodePointsCommand, 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 d'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 de LazyList lorsqu'elles mettent en page des éléments au-delà des limites visibles. (Ifabfb, b/184670295)
  • Changement de nom : LineHeightBehavior devient LineHeightStyle.
  • Changement de nom : LineVerticalAlignment devient LineHeightStyle.Alignment.
  • Changement de nom : LineHeightTrim devient LineHeightStyle.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 devient itemCount. (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 et trimLastLineBottom de LineHeightBehavior 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 par TextStyle(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 et trimLastLineBottom ne fonctionnent correctement que si includeFontPadding 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ésactiver includeFontPadding à l'aide de l'attribut TextStyle.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 de TextField. (I01423, b/171394808)
  • Mise à jour de Modifier.bringIntoViewRequester, qui n'utilise plus onGloballyPositioned 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 utiliser consume() pour consommer complètement le changement. Vous pouvez utiliser isConsumed 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 de PointerInputChange seront consommées une fois que l'une des copies aura été consommée. Si vous souhaitez créer un PointerInputChange 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ément LazyColumn de LazyVerticalGrid. Elle est disponible depuis peu et pourra être modifiée dans les prochaines versions. (Iba2bc, b/166591700)
  • Mise à jour de AndroidFont, qui accepte désormais typefaceLoader 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 et LazyGridLayoutInfo, qui comportent désormais des champs beforeContentPadding et afterContentPadding. (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 et PointerEvent.scrollDelta comme API stables. (I574c5, b/225669674)
  • Ajout d'une configuration de compatibilité pour includeFontPadding dans TextStyle/ParagraphStyle. includeFontPadding, modifiable via TextStyle(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 de ComposeView, qui permet désormais aux développeurs de désactiver la consommation des WindowInsets Android. Chaque ComposeViews dans la hiérarchie peut ainsi appliquer des WindowInsets 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 avec FocusProperties. focusProperties() présente désormais toutes les fonctionnalités de focusOrder(). Abandon de FocusOrder et focusOrder(). La méthode focusOrder() qui accepte un focusRequester doit être remplacée par un modificateur focusRequester() 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() et Modifier.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 et LazyHorizontalGrid, désormais considérés comme stables. (I307c0)
  • Remplacement de LazyGridItemInfo.Unknown par deux éléments distincts : LazyGridItemInfo.UnknownRow et LazyGridItemInfo.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 de androidx.compose.foundation.lazy par androidx.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 par includeFontPadding=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ésormais line breaking avant les éléments qui ne tiennent pas sur la ligne actuelle. (I05c40, b/207462103)
  • Changement de nom : excludeFromSystemGestures devient systemGesturesExclusion. (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 et ComposableOpenTarget 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 ou ReusableComposeNode doivent ajouter une annotation CompoableTarget pour la fonction et un type de paramètre lambda de composable. Il est toutefois recommandé de créer une annotation marquée avec ComposableTargetMarker, puis d'utiliser l'annotation marquée plutôt que d'utiliser directement ComposableTarget. Une annotation composable marquée avec ComposableTargetMarker équivaut à un ComposbleTarget avec le nom complet de la classe d'attribut en tant que paramètre d'applicateur. Pour obtenir un exemple d'utilisation de ComposableTargetMarker, 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() et LazyGridState.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 dans TextInputSession et TextInputService. Ces méthodes ne seront pas appelées. Utilisez BringIntoViewRequester à 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 via LocalFontFamilyResolver.current.
    • Ajout de createFontFamilyResolver(context) et createFontFamilyResolver(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 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'extension Font.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)
  • 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ôt FontFamilyResolver.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ôt FontFamilyResolver.preload. (If8e7c, b/174162090)
  • Mise à jour permettant de spécifier le type de contenu des éléments de LazyVerticalGrid. Les fonctions item/items sur LazyGridScope 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 et LazyGridLayoutInfo : viewportSize, orientation et reverseLayout. (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 acceptait maxSlotsToRetainForReuse. Il est remplacé par un nouveau constructeur, qui accepte SubcomposeSlotReusePolicy, 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)
  • 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 aux setSystemGestureExclusionRects 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 utilisant Modifier.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 et LazyVerticalGrid 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 dans androidx.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() et LazyListState.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 ou LazyListScope.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)

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 la SemanticsNodeInteraction 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

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 et GestureScope, remplacés par performTouchInput et TouchInjectionScope. (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 Kotlin 1.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

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 AGP 7.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ôt composeTestRule.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épertoire src/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ères H, S et P 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 classe androidx.compose.runtime.SlotTable aurait comme descripteur Landroidx/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éthode fun isPlaced(): Boolean sur LayoutNode aurait pour signature isPlaced()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é par Modifier.focusTarget(). (I6c860)
  • Remplacement de l'énumération KeyboardType par une classe inline. (I73045, b/187055290)
  • Remplacement de l'énumération FocusState par une interface FocusState. (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 et detectHorizontalGestures, 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 d'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 de SemanticsProperties.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 de SemanticsNodeInteraction.performScrollToKey, qui fait défiler une liste jusqu'à l'élément associé à la clé donnée. (I4fe63, b/178483889, b/161584524)
  • 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 d'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 et accessibilityActionScrollDown. 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 d'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 devient show().
    • 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 et BoxWithConstraintsScope. (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ètre count. 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 d'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, appeler withFrameNanos ou Recomposer.runRecomposeAndApplyChanges sans MonotonicFrameClock génère une exception IllegalStateException. (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 d'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 d'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 que Button et Modifier.clickable(), utilisez interactionSource = 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 pour compositionLocalOf et staticCompositionLocalOf, 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() par Indication#rememberUpdatedIndication(InteractionState), et suppression du paramètre InteractionState 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 dans rememberUpdatedIndication(). En outre, le paramètre indication est désormais obligatoire dans Modifier.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 d'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 avec ComposeTestRule. (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 par Constraints.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 que remember { mutableStateOf(0) }. Suivant cet exemple, nous allons supprimer le composable savedInstanceState { 0 }. Nous vous invitons à utiliser rememberSaveable { 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ètre stateSaver. 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 d'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) et itemsIndexed(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 étend ComposeTestRule et définit setContent, qui a été supprimé de ComposeTestRule. Ajout d'une méthode de fabrique createEmptyComposeRule() qui renvoie une ComposeTestRule et ne lance pas d'Activity pour vous. Utilisez cette option lorsque vous souhaitez lancer votre Activity au cours du test, par exemple en utilisant ActivityScenario.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)
  • 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 par RememberObserver, 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 que onEnter n'est appelé qu'une seule fois. onEnter était appelé plusieurs fois si l'objet était utilisé dans des sous-compositions, telles que WithConstraints et Scaffold, ce qui rendait un appel unique de onEnter non fiable, justifiant sa suppression de RememberObserver.

    RememberObserver ajoute onAbandoned, qui est appelé si l'instance RememberObserver est renvoyée par le rappel transmis à remember, mais n'a pas été mémorisé dans l'état de la composition, faisant que onRemembered 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 de RememberObserver qui suit la recommandation de référence unique ci-dessus suit une ressource externe, onForgotten et onAbandoned indiquent chacun que la ressource n'est plus nécessaire. Si l'objet suit le travail démarré ou les ressources allouées dans onRemembered, onAbandoned peut être ignoré, car il ne sera pas appelé si onRemembered 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 d'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 un val 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() par animateAsState(), qui renvoie State<T> au lieu de T. 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 et LazyListState.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() devient insertTopDown().

    Ajout d'une méthode insertBottomUp().

    Un applicateur insère des nœuds dans l'arborescence modifiée à l'aide de insertTopDown() ou de insertBottomUp(), selon leur performance.

    Il est beaucoup plus efficace de construire certaines arborescences, telles que LayoutNode et View, 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 écrase insertBottomUp() pour créer une arborescence de bas en haut ou insertTopDown() 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 d'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 de CoreTextField. Si vous souhaitez limiter la hauteur du champ de texte en fonction du nombre de lignes, utilisez BasicTextField à 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ètre orientationLock 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 vers content, conformément à la vérification lint et aux consignes. (Iec48e)
  • Déplacement des API foundation:foundation-text vers foundation: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 avec foundation: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 devient layoutId. Measurable.id devient Measurable.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 de LazyColumn/Row, comme pour Modifier.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(...). Utilisez PointerInputFilter.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ètre minWidth devient min et maxWidth devient max. preferredWidthIn, heightIn et preferredHeightIn 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 et AndroidInputDispatcher, de androidx.ui.test.android vers androidx.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 de runBlocking par runWithManualClock lors de l'exécution de tests nécessitant un ManualFrameClock ; accès facilité au coordinateur d'UI principal pour vos tests avec TestUiDispatcher.Main.

    Par 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")
        }
    }
    

    (I0a85b, b/161247083)

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() devient PlacementScope.place(), tandis que le précédent PlacementScope.place() devient PlacementScope.placeRelative(). Par conséquent, la méthode PlacementScope.place() ne met plus automatiquement en miroir la position dans les contextes lus de droite à gauche. Si cette approche est souhaitée, utilisez plutôt PlacementScope.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èle by 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 et onZoomStarted 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 et Column 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)
    1. Suppression de l'interface OffsetBase, qui n'était pas utilisée.
    2. Alignement des classes Offset et IntOffset pour que la surface de l'API soit cohérente.
    3. Changement de nom : IntOffset.Origin devient IntOffset.Zero pour assurer la cohérence avec l'API Offset.
    4. Migration de la méthode nativeCanvas de l'interface de Canvas pour permettre aux consommateurs de créer leurs propres instances de Canvas.
    5. 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.
    6. Application de la casse Pascal dans le nom des énumérations ClipOp.
    7. Application de la casse Pascal dans le nom des énumérations FilterQuality.
    8. Application de la casse Pascal dans le nom des énumérations StrokeJoin.
    9. Application de la casse Pascal dans le nom des énumérations PointMode.
    10. Application de la casse Pascal dans le nom des énumérations PaintingStyle.
    11. Application de la casse Pascal dans le nom des énumérations PathFillType.
    12. Application de la casse Pascal dans le nom des énumérations StrokeCap.
    13. Mise à jour de l'implémentation de DrawCache pour cesser d'utiliser les paramètres lateinit.
    14. Mise à jour de DrawScope pour cesser d'utiliser la délégation Lazy pour les paramètres internes fillPaint et strokePaint.
    15. Mise à jour du composable Image pour éviter l'utilisation de Box et réduire la charge.
    16. Mise à jour de la classe Outline pour inclure les annotations @Immutable.
    17. Mise à jour de PathNode pour inclure des annotations @Immutable à chaque instruction du tracé.
    18. Mise à jour de la sous-composition de Vector pour supprimer les vérifications conditionnelles redondantes d'égalité, car Compose les gère déjà.
    19. Abandon des méthodes de constructeur associées à Rect, à remplacer par des constructeurs de fonction.
    20. Mise à jour des classes Brush et des constructeurs de fonctions avec les API @Immutable et @Stable.
    21. Application de la casse Pascal dans le nom de l'énumération VertexMode.
    22. 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.
    23. 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. Utilisez SemanticsNodeInteraction.performGesture à la place. (Id9b62)

  • Changement de nom : SemanticsNodeInteraction.getBoundsInRoot() devient SemanticsNodeInteraction.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() et isNotFocused() 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ée PaintBox(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 devient DrawBorder. (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 devient runOnIdle. (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 et runOnUiThread 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 { ... } ou by 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 ou setViewContent à la place. Compose.disposeComposition a été abandonné. Utilisez la méthode dispose sur le Composition renvoyé par setContent à 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 sur true, 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)