Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Compose UI

Ces composants fondamentaux de l'interface utilisateur de Compose nécessaires pour interagir avec l'appareil, y compris la mise en page, le dessin et la saisie.
Dernière mise à jour Version stable Version finale Version bêta Version alpha
11 janvier 2023 1.3.3 - - 1.4.0-alpha04

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 de base 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.material3.Création d'UI Jetpack Compose grâce aux composants Material Design 3, la nouvelle évolution de Material Design. Material 3 inclut des thématisations et des composants mis à jour ainsi que des fonctionnalités de personnalisation Material You telles que les couleurs dynamiques. Material 3 est conçu pour correspondre au nouveau style visuel et à l'UI du système Android 12.
compose.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 des artefacts dont vous avez besoin dans le fichier build.gradle de votre application ou module :

Groovy

dependencies {
    implementation "androidx.compose.ui:ui:1.3.3"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.3.2"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.ui:ui:1.3.3")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.3.2"
    }

    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 problème

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

Version 1.4

Version 1.4.0-alpha04

11 janvier 2023

Publication d'androidx.compose.ui:ui-*:1.4.0-alpha04. Liste des commits de la version 1.4.0-alpha04

Nouvelles fonctionnalités

  • Ajout d'une nouvelle API PinnableContainer permettant d'épingler des éléments de liste différée afin qu'ils ne soient pas supprimés lorsqu'ils sont hors vue suite au défilement. Par exemple, Modifier.focusable() utilise ce mécanisme pour épingler l'élément actuellement sélectionné. (Ib8881, b/259274257, b/195049010)
  • Réécriture du système de sélection à l'aide des nouvelles API expérimentales Modifier.Node. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • Ajout à la propriété sémantique IsContainer sur les surfaces. Cette propriété sera utilisée lors d'une modification ultérieure qui détermine l'ordre de navigation en fonction de la signification sémantique des éléments tels que les surfaces. (I63379)
  • Ajout du nouveau rôle d'accessibilité DropdownList. Il permet de répliquer le comportement de TalkBack's lorsque l'élément android.widget.Spinner est sélectionné. (I177e5, b/236159001)
  • Vous pouvez désormais utiliser PlatformTextStyle(emojiSupportMatch) pour désactiver la prise en charge des emoji sur un seul paragraphe. (Ia7100, b/139326806)
  • Les tests de l'UI d'Android Compose exécuteront désormais des contrôles de mise en page pour chaque image lors de l'exécution d'images pour arriver à l'inactivité (par exemple, via waitForIdle). Cela peut affecter les tests qui s'appliquent à des images individuelles d'animations de mise en page. (I8ea08, b/222093277)
  • Ajout de la propriété expérimentale TextMotion à TextStyle pour définir le texte sur "Static(default)" ou "Animé". Utilisez TextMotion.Animated si le texte doit être ajusté, traduit ou pivoté par une animation. (I24dd7)

Modifications apportées à l'API

  • 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)
  • Suppression du constructeur de police expérimental obsolète. (I8a724, b/261435386)
  • La classe de données ui-tooling Group dispose désormais d'un champ, isInline, qui indique si le groupe est destiné à un appel à une fonction modulable intégrée. Si isInline est défini sur true, il s'agit d'un appel à une fonction modulable intégrée. Toutefois, la valeur peut être "false" pour les appels à des fonctions modulables intégrées qui proviennent de modules compilés avec une version du plug-in de compilation Compose qui ne génère pas d'informations sur la fonction intégrée. (Idb846)
  • Reclassement d'un certain nombre d'API expérimentales en version stable.
  • L'API Rotary Scroll Event est désormais stable (I42ad3, b/261561229).
  • L'API FontVariation est désormais stable (I8779f, b/241016309).
  • Tous les constructeurs Font() sont désormais des API stables (I5948b, b/261435386).
  • DeviceFontFamilyName est désormais stable (I8b640, b/261435386).
  • 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)
  • L'API createFontFamilyResolver est désormais stable. Cela permet d'identifier les exceptions non détectées lors du chargement asynchrone des polices. (Ibb481, b/261435386)
  • L'API Font.loadingStrategy est désormais stable. (I5937c, b/261435386)
  • L'API GoogleFont est désormais stable. (Ic90b0, b/261435386)
  • Reclassement de TextUnit(float, TextUnitType), désormais considérée comme une API stable. (I90c84, b/261561612)
  • Reclassement de pluralStringResource, désormais considérée comme une API stable. (I09849, b/261439703)

Version 1.4.0-alpha03

7 décembre 2022

Publication d'androidx.compose.ui:ui-*:1.4.0-alpha03. Liste des commits de la version 1.4.0-alpha03

Modifications apportées à l'API

  • Suppression d'ExperimentalComposeUiApi de PointerIcon. (I23af8)
  • 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)
  • Mise à jour de la vue de paramètre rememberNestedScrollConnection, de vue racine en vue hôte. (Ia5200)
  • 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.
  • Changement de nom : CompositingStrategy.Always devient Offscreen, pour indiquer que graphicsLayer sera toujours affiché dans un tampon intermédiaire. (I47dc1)
  • Stabilisation de la surcharge de mise en page avec plusieurs emplacements de contenu. (I10566, b/248294649)
  • Ajout des nouvelles API expérimentales PerfettoTrace.record {} et PerfettoTraceRule pour capturer les traces de Perfetto (également appelées traces système) dans le cadre d'un test, afin d'inspecter le comportement et les performances du test. (I3ba16)
  • 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 cet atelier 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'EmojiCompat à Compose. (Ibf6f9, b/139326806)
  • Ajout d'un paramètre de fond d'écran à @Preview pour prendre en charge les couleurs dynamiques. (I9f512)

Corrections de bugs

  • Les notifications d'application d'instantanés sont désormais envoyées une fois que Recomposer a terminé d'appliquer les modifications. (Iad6c0, b/222093277)
  • Modification de captureToImage, afin de permettre les captures d'écran multifenêtres. Utile pour les tests de captures d'écran qui utilisent des fenêtres pop-up de Compose. (I169c5)

Mises à jour des dépendances

  • Mise à jour de Compose UI et Compose Material, qui dépendent désormais de Lifecycle 2.5.1. (I05ab0, b/258038814)

Version 1.4.0-alpha02

9 novembre 2022

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

Modifications apportées à l'API

  • Mise à jour de GraphicsLayerScope pour exposer la taille actuelle de graphicsLayer. Utile pour calculer les transformations de graphicsLayer en tant que fonction de la taille du composable. (If8c43,b/181387080)
  • Introduction de CompositingStrategy pour déterminer quand utiliser une couche de composition hors écran pour le rendu du contenu du graphicsLayer. L'option "Auto" conserve le comportement par défaut, qui exploite une couche en interne si la valeur alpha ou un RenderEffect/Overscroll sont appliqués. L'option "Always" introduit systématiquement un tampon hors écran, où ModulateAlpha évitera d'utiliser un tampon hors écran et modulera chacune des instructions de dessin enregistrées dans le graphicsLayer. L'activation de ModulateAlpha continuera d'exploiter un tampon hors écran pour les utilisations de RenderEffect/Overscroll. (I25e82, b/256382834)
  • Ajout de invalidateSubtree() à Modifier.Node pour permettre l'annulation de hiérarchies entières pour le tracé et la mise en page. (I4bd90)
  • Promotion de rememberNestedScrollInteropConnection en version stable. Ajout de la possibilité de transmettre une vue racine à rememberNestedScrollInteropConnection. Cela peut aider la vue personnalisée à mieux réagir aux contraintes de défilement, en particulier dans les vues non standards (par exemple, ModalBottomSheetDialog). (I9e107)
  • Ajout de l'interface ObserverNode, qui peut être utilisée par les implémentations Modifier.Node qui doivent être notifiées lorsqu'une valeur précédemment lue a changé. (I5728b, b/247716483)
  • Ajout d'un constructeur à Paint, qui accepte un android.graphics.Paint natif. Ajout d'une fonction d'extension toComposePaint() qui convertit un objet Paint natif existant en objet Compose Paint. (Ica91b)
  • Ajout de FontFamily.Resolver.resolveAsTypeface à utiliser sur Android. (I8950b)
  • Ajout de ToolingState pour permettre aux outils de modifier les états internes du composable. (Ie6614)
  • Refactorisation des outils pour une meilleure compatibilité avec les nouvelles animations. (I8677b)
  • Ajout du paramètre minLines dans le texte Material et Material3, ainsi que TextField et OutlinedTextField, ce qui permet de définir la hauteur minimale du composant en termes de nombre de lignes. (I4af1d)

Version 1.4.0-alpha01

24 octobre 2022

Publication d'androidx.compose.ui:ui-*: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)
  • Abandon du recyclage des objets accessibles sur AndroidX. Nous avons constaté que les variations de performances étaient négligeables, même dans les versions compatibles les plus anciennes. (I0a961)
  • Ajout de DrawStyle en tant qu'attribut expérimental à TextStyle et SpanStyle pour permettre le tracé de texte avec contours. (If24b8, b/155421273)
  • Mise à jour de AnnotatedString.Builder, qui implémente désormais kotlin.text.Appendable. (I1a061, b/231030444)
  • Mise à jour de AnnotatedString.Builder, qui dispose désormais d'une méthode append(AnnotatedString, start: Int, end: Int) pour ajouter une sous-chaîne d'une AnnotatedString et les styles qui se croisent.
  • Ajout du paramètre DrawStyle aux fonctions Paint Paragraph et MultiParagraph pour permettre le tracé de texte avec contours. (Ic8102, b/155421273)

Contribution externe

  • Merci à vighnesh d'avoir ajouté les appareils TV à Preview. (Ie15cd)

Version 1.3

Version 1.3.3

11 janvier 2023

Publication d'androidx.compose.ui:ui-*:1.3.3. Liste des commits de la version 1.3.3.

Correction de bugs

  • Correction d'un plantage qui pouvait se produire sur Android 9 lorsqu'Activity enregistrait l'état de la vue de Compose. (I0b755, b/260322832)

Version 1.3.2

7 décembre 2022

Publication d'androidx.compose.ui:ui-*:1.3.2. Liste des commits de la version 1.3.2

Corrections de bugs

  • Mise à jour afin d'utiliser Profobuf 3.21.8, ce qui évite une alerte de sécurité dans protobuf-javalite:3.19.4 (CVE-2022-3171). (b/255545055)

Version 1.3.1

9 novembre 2022

Publication d'androidx.compose.ui:ui-*:1.3.1. Liste des commits de la version 1.3.1

Version 1.3.0

24 octobre 2022

Publication d'androidx.compose.ui:ui-*:1.3.0. Liste des commits de la version 1.3.0

Changements importants depuis la version 1.2.0

  • Ajout d'une suite d'API expérimentales LookaheadLayout (permettant des comportements d'animation jusqu'alors impossibles).
  • Ajout d'une suite d'API expérimentales Modifier.Node (alternative plus performante à Modifier.composed).
  • Amélioration de la prise en charge des encarts WindowInsets.
  • Prise en charge ciblée pour les pavés directionnels et claviers physiques dans LazyLists.
  • Réduction de l'élévation maximale prise en charge dans les boîtes de dialogue et les fenêtres pop-up à 8 dp (modification destructive du comportement pour certains systèmes de conception personnalisés ; justifications disponibles dans les notes de la version beta01).
  • Nombreuses améliorations d'API mineures et non destructives.
  • Correction de nombreux bugs et amélioration des performances

Version 1.3.0-rc01

5 octobre 2022

Publication d'androidx.compose.ui:ui-*:1.3.0-rc01. Liste des commits de la version 1.3.0-rc01

Modifications apportées à l'API

  • Ajout d'une nouvelle API expérimentale pour permettre l'utilisation automatique de tirets dans le texte. (Iaa869)

Corrections de bugs

  • Mise à jour des polices DeviceFontFamilyName, qui ne configureront pas par défaut les paramètres de variante wght et ital, mais utiliseront les paramètres de la plate-forme pour le Typeface chargé. (Ia7a6d, b/246989332)
  • Correction d'une fuite de mémoire LazyColumn : onModifierLocalsUpdated n'était pas appelé avec la valeur par défaut lors d'une réutilisation des modificateurs. (b/230168389)

Version 1.3.0-beta03

21 septembre 2022

Publication d'androidx.compose.ui:ui-*: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)
  • 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)

Corrections de bugs

  • L'API BackHandler d'AndroidX Activity fonctionne désormais dans un composable Dialog. (I35342)

Version 1.3.0-beta02

7 septembre 2022

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

Modifications apportées à l'API

  • Ajout d'une surcharge expérimentale pour Layout, qui accepte une liste de plusieurs lambdas de contenu composables, ce qui permet de traiter différemment les fonctions mesurables placées dans des lambdas de contenu distincts. (Ic1b4e)

Modifications apportées aux API Focus expérimentales :

  • Abandon de FocusDirection.In et FocusDirection.Out, remplacés par FocusDirection.Enter et FocusDirection.Exit. (Ia4262, b/183746982)
  • Ajout de deux nouvelles propriétés de sélection permettant de spécifier un comportement personnalisé pour FocusManager.moveFocus(Enter) et FocusManager.moveFocus(Exit). (I5f3f9, b/183746982)
  • Prise en charge de FocusRequester.Cancel pour annuler un déplacement de sélection. FocusRequester.Cancel peut être utilisé dans chacune des propriétés de sélection suivantes : haut, bas, gauche, droite, suivant, précédent, début, fin, entrée et sortie. (Ib300f)

Version 1.3.0-beta01

24 août 2022

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

Refactorisation du nœud Modifier

La couche qui gère les instances Modifier/Modifier.Element et coordonne leur comportement sur LayoutNodes a été largement refactorisée. En l'état, cette refactorisation n'a eu d'incidence sur l'API publique d'aucun des nombreux modificateurs de Compose et peut être considérée comme affectant uniquement l'implémentation. Malgré cela, il s'agit d'un changement important pour diverses raisons. (Ie4313)

Résumé des modifications

Les API Modifier.Node expérimentales ajoutées fournissent une abstraction, qui permet de conserver l'état sur une instance conservée avec le cycle de vie du nœud de mise en page, et qui sera allouée par nœud de mise en page et par utilisation du Modifier.Element qui l'a produit.

De manière générale, cette abstraction fournit un mécanisme alternatif pour produire des modificateurs avec état sans dépendre des mécanismes de l'API Modifier.composed.

Risque

Cette modification est strictement compatible au niveau binaire avec les versions précédentes et vise à assurer la rétrocompatibilité en termes de comportement observable, dans la mesure du possible. Cela dit, certains sous-systèmes de Compose n'ont pas été touchés par cette refactorisation, et il est probable que leur comportement ait changé d'une manière non couverte par nos tests, qui n'a pas encore été détectée ni corrigée.

Veuillez faire preuve de prudence lorsque vous passez à cette version. Si vous observez des dysfonctionnements et pensez que cette mise à jour en est la cause, veuillez nous en informer.

API expérimentales

Nous avons ajouté plusieurs API expérimentales, qui se rapportent au nouveau concept de "nœud Modifier". La création de Modifier.Node résulte des éléments suivants :

  • fun modifierElementOf(…): Modifier
  • abstract class ModifierNodeElement
  • abstract class Modifier.Node
  • abstract class DelegatingNode
  • interface LayoutModifierNode
  • interface DrawModifierNode
  • interface SemanticsNode
  • interface PointerInputNode
  • interface ModifierLocalNode
  • interface ParentDataModifierNode
  • interface LayoutAwareModifierNode
  • interface GlobalPositionAwareModifierNode
  • interface IntermediateLayoutModifierNode

Modification destructive affectant le comportement

L'élévation maximale prise en charge dans les boîtes de dialogue et les fenêtres pop-up a été réduite à 8 dp.

L'élévation maximale prise en charge pour les boîtes de dialogue et les fenêtres pop-up de Compose a été réduite de 30 dp à 8 dp. Ce changement affecte les boîtes de dialogue et les fenêtres pop-up personnalisées Material et UI. Cette modification vise à atténuer un bug d'accessibilité sur les versions antérieures à Android S, et à s'assurer que les services d'accessibilité de ces fenêtres peuvent interagir avec le contenu de la boîte de dialogue ou de la fenêtre pop-up.

Vous ne serez concerné par ce changement que si vous créez une boîte de dialogue ou une fenêtre pop-up personnalisée avec une élévation définie sur des niveaux supérieurs à 8 dp. Le cas échéant, envisagez de réduire l'élévation de la boîte de dialogue ou de la fenêtre pop-up. Si vous avez besoin de désactiver ce nouveau comportement, vous pouvez dupliquer votre propre boîte de dialogue ou votre fenêtre pop-up avec l'élévation souhaitée. Cette approche n'est pas recommandée, car elle peut avoir un impact négatif sur l'accessibilité. C'est au développeur qu'il incombe de s'assurer que les services d'accessibilité peuvent lire et interagir avec la partie inférieure de la boîte de dialogue ou de la fenêtre pop-up.

Modifications apportées à l'API

  • Correction d'un problème qui empêchait painterResource de se mettre à jour en cas de modification de la configuration. (I58e73, b/228862715)
  • Mise à jour de rememberTextMeasurer, qui n'accepte plus les paramètres FontFamily.Resolver, Density ni LayoutDirection. Veuillez utiliser le constructeur TextMeasurer afin de fournir des valeurs personnalisées pour ces paramètres. (Ia1da3)
  • Ajout de la propriété DialogProperties.decorFitsSystemWindows pour permettre la prise en charge de WindowInsets par les boîtes de dialogue. (I57742, b/229378542)
  • Déplacement des constructeurs de polices vers le fichier Kotlin d'origine, afin de conserver la compatibilité au niveau binaire. Aucun changement par rapport à la dernière version stable. (Ieb2f3)
  • Suppression d'un opérateur inutile dans plusieurs définitions d'égalité. Changement sans conséquence. (I6c309)
  • Définition de FontVariation.Setting comme interface scellée, pour permettre les futures API de limitation. (I11021, b/143703328)
  • Ajout de CompositionGroup.findParameters à SlotTree.kt, permettant aux outils de récupérer des paramètres pour un CompositionGroup sans avoir à analyser toute la table d'emplacements. (I124fe)

Version 1.3.0-alpha03

10 août 2022

Publication d'androidx.compose.ui:ui-*:1.3.0-alpha03. Liste des commits de la version 1.3.0-alpha03

Modifications apportées à l'API

  • Mise à jour de LayoutCoordinates.findRootCoordinates(), désormais public. (I7fa37, b/204723384)
  • Ajout d'une API expérimentale pour obtenir les LayoutCoordinates dans PlacementScope. Cela permet aux développeurs de savoir où la mise en page actuelle doit positionner les éléments enfants par rapport à sa propre position. (I5482b, b/238632578)
  • Ajout de LayoutCoordinates.transformFrom pour obtenir la Matrice de transformation depuis des LayoutCoordinates vers d'autres. (Ic5ab1, b/238632578)
  • Abandon de SemanticsModifier.id. L'ID de la sémantique a été déplacé vers LayoutInfo.semanticsId. (Iac808, b/203559524)
  • 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)
  • Mise à jour des constructeurs de police, qui acceptent désormais une liste de FontVariation.Setting pour configurer des polices variables sur les appareils O+. (I11a9d, b/143703328)
  • Ajout d'une API FontVariation permettant de définir et utiliser des polices variables. (I3c40c, b/143703328)
  • Mise à jour du constructeur LineHeightStyle.Alignment, désormais public (expérimental). (I4bbbe, b/235876330)
  • Paragraph est désormais associé aux mots clés "expect" (attendu) et "actual" (réel), et défini pour Android et les ordinateurs. (Id387e, b/239962983)
  • Mise à jour de l'interface Paragraphe, désormais scellée. Aucun cas d'utilisation ne justifie le sous-classement de Paragraph. Si ce changement vous affecte, nous vous invitons à nous contacter. (If5247, b/239962983)
  • Suppression de l'annotation expérimentale pour PlatformTextStyle et LineHeightStyle. (I64bef)
  • 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)
  • Ajout d'une API pour les types d'animation existants. (I26179)

Correction de bugs

  • Ajout de @RequiresPermission aux API nécessitant l'autorisation POST_NOTIFICATIONS sur le SDK 33 et les versions ultérieures. (Ie542e, b/238790278)

Version 1.3.0-alpha02

27 juillet 2022

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

Modifications apportées à l'API

  • Ajout d'une propriété PointerInputChange#pressure permettant de récupérer la pression. (I45a5e, b/205164819)
  • Ajout de rememberTextMeasurer, pour faciliter la création et mémorisation des instances TextMeasurer dans la composition. (I8d66e)
  • Mise à jour de Rect, RoundRect et MutableRect, qui acceptent maintenant la syntaxe in de Kotlin pour appeler la fonction contains. (Ie42b0, b/238642990)
  • Suppression des fonctions inutiles pressKeys, keysDown et keysUp de KeyInjectionScope, qui peuvent être facilement implémentées avec des parties plus simples de l'API. (I81d77)
  • Refactorisation des noms de constantes et de paramètres dans KeyInjectionScope, pour inclure le suffixe "Millis" lorsque ces éléments sont exprimés en millisecondes. (Iabef5)
  • Ajout de la méthode toStringForLog() à EditCommand pour aider à résoudre les problèmes de modification de texte. (I53354, b/228862731)
  • 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)
  • Ajout d'une API expérimentale appelée TextMeasurer, qui permet de calculer la mise en page de texte arbitraire pour créer des résultats identiques à BasicText, indépendamment de l'environnement d'exécution Compose. (I17101)
  • Ajout de mapTree à SlotTree.kt. Cela permet aux outils d'inspecter SlotTree sans effectuer de copie en mémoire au préalable, contrairement à asTree. Dans l'outil d'inspection de la mise en page, ce changement produit une amélioration des performances d'un facteur proche de 10. (I5e113)
  • Mise à jour de l'aperçu Compose, désormais stocké dans des fichiers de sortie binaires afin de permettre aux développeurs d'écrire et de réutiliser des annotations MultiPreview à partir de bibliothèques. (I85699, b/233511976)

Correction de bugs

  • Lors de l'ajout d'événements InputEventChange à l'outil de suivi Velocity, 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)
  • Correction d'une exception NPE causée par AnnotatedString.toUpperCase en présence d'annotations. (I0aca2, b/210899140)

Version 1.3.0-alpha01

29 juin 2022

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

Modifications apportées à l'API

  • Ajout de LookaheadLayout, qui prend en charge une transmission anticipée (lookahead) avant la mesure/mise en page réelle. Cela permet de précalculer la mise en page lorsqu'elle change, tout en permettant à l'outil de mesure/mise en page post-lookahead d'utiliser la taille/position précalculée pour animer la taille et les positions par rapport à la cible. Les SubcomposeLayouts ne sont pas encore pris en charge, mais le seront dans une prochaine version. (I477f5)
  • Ajout d'un paramètre alpha facultatif aux types de pinceaux de TextStyle et SpanStyle, permettant de modifier l'opacité de l'ensemble du Text. (Ic2fac, b/234117635)
  • 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)
  • Migration de la fonction utilitaire vers l'environnement d'exécution. (I4f729)

Correction de bugs

  • TextLayoutResult.getLineForOffset ne génère pas d'exceptions. (Idc5d6, b/235876324)

Contribution externe

  • Ajout d'une API WindowInfo.keyboardModifiers permettant d'observer son état dans les fonctions modulables ou via snapshotFlow. (Icdb8a)

Version 1.2

Version 1.2.1

10 août 2022

Publication d'androidx.compose.ui:ui-*:1.2.1. Liste des commits de la version 1.2.1

Correction de bugs

  • Correction du pointeur de valeur nulle dans l'outil d'inspection. (b/237987764)
  • Correction de l'exception de diffusion de classe lors de la remise en mémoire dans l'outil d'inspection. (b/235526153)

Version 1.2.0

27 juillet 2022

Publication d'androidx.compose.ui:ui-*:1.2.0. Liste des commits de la version 1.2.0.

Modifications importantes depuis la version 1.1.0

  • Améliorations apportées au balayage de la sélection :

    • Mise à jour du défilement axé sur la sélection dans les listes différées, qui exploite désormais la nouvelle API principale BeyondBoundsLayout.
    • Ajout de nouvelles API de personnalisation du comportement dans FocusOrder et FocusProperties.
    • Amélioration du comportement avec un clavier physique ou une télécommande de téléviseur.
  • Ajout de nouvelles API pour :

    • Les encarts WindowInsets
    • Les primitives de base pour les animations basées sur des gestes, infinies et de mise en page
    • Les fonctionnalités GraphicsLayer, dont RenderEffect
  • Correction de nombreux bugs et amélioration des performances

Version 1.2.0-rc03

29 juin 2022

Publication d'androidx.compose.ui:ui-*: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.ui:ui-*: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.ui:ui-*:1.2.0-rc01. Liste des commits de la version 1.2.0-rc01

Modifications apportées à l'API

  • 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)
  • Ajout de fonctions d'ordre supérieur à KeyInjectionScope, permettant d'injecter des pressions sur les touches pendant que d'autres touches sont maintenues enfoncées ou activées. Ces fonctions incluent withKeysDown et withKeysToggled, entre autres. Des propriétés ont également été ajoutées pour vérifier si une touche de combinaison particulière est activée (par exemple, isCtrlDown pour vérifier si l'une des touches Contrôle est activée). Reportez-vous à KeyInjectionScope pour obtenir de la documentation sur chaque fonction. (I9f6cd, b/229831515)
  • 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)
  • Changement de nom : runComposeUiTestWithoutActivity {} devient runEmptyComposeUiTest {}, pour plus de cohérence avec createEmptyComposeRule(). (I6fed7)

Version 1.2.0-beta03

1er juin 2022

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

Modifications apportées à l'API

  • Ajout de pressKeyTimes, de isCapsLockOn et des autres touches à KeyInjectionScope. LAPI est désormais compatible avec les schémas d'injection combinant la souris et le clavier (utilisation de clics avec une touche de combinaison). (I4c8da, b/229831515)
  • Prise en charge expérimentale de l'injection d'événements de touches. Utilisez performKeyInput pour envoyer des événements de touche. Vous pouvez également les envoyer via la propriété key de MultiModalInjectionScope lors d'un geste d'entrée multimodal avec performMultiModalInput. Reportez-vous à KeyInjectionScope pour obtenir de la documentation sur l'API. (Ic5000, b/229831515)
  • Ajout de GoogleFont.Provider.AllFontsListUri permettant de récupérer la source Internet canonique des polices Google Fonts compatibles avec Android.
  • Amélioration des messages d'erreur renvoyés lorsque GoogleFonts ne se charge pas dans Compose. (I0416c)

Correction de bugs

  • 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. (I51ec3, b/216582726, b/223440806, b/227709803)
  • Mise à jour du paramètre Show Layout Bounds, désormais appliqué aux composables immédiatement après son activation ou désactivation depuis la fenêtre de configuration rapide, sans avoir à quitter/revenir dans l'activité. (I843d5, b/225937688)
  • Modification du comportement de recherche de chaînes d'accessibilité, qui ne déclenche plus le chargement des polices. Auparavant, la tentative de charger les polices pour StyleSpans provoquait des plantages si FontFamily.Resolver avait été écrasé. (I4609d)
  • 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.ui:ui-*:1.2.0-beta02. Liste des commits de la version 1.2.0-beta02

Modifications apportées à l'API

  • Prise en charge de la réutilisation des fonctionnalités dans d'autres types d'aperçus. (I19f39)

Correction de bugs

  • Changement de nom : ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer devient DisposeOnDetachedFromWindowOrReleasedFromPool, afin de mieux refléter les circonstances qui déclenchent l'élimination, plutôt que l'inverse. (If15ca)

Version 1.2.0-beta01

11 mai 2022

Publication d'androidx.compose.ui:ui-*: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)
  • Mise à jour des versions appariées de Modifier.composed, désormais considérées comme API stables. (Ie65e4, b/229988420)
  • Simplification de l'API rememberNestedScrollConnection, qui utilise désormais les compositions locales pour obtenir les informations sur la vue actuelle. (I67ca7)
  • Mise à jour des annotations @ComposableTarget, ainsi que celles marquées par @ComposableTargetMarker, qui peuvent désormais être utilisées au niveau du fichier avec le préfixe @file. Utiliser une annotation cible au niveau du fichier indique au compilateur que toutes les fonctions modulables du fichier sont destinées à la cible associée. Par exemple, utiliser @file:UiComposable revient à déclarer que toutes les fonctions @Composable ciblent l'interface utilisateur de Compose. Une fonction qui doit s'appliquer à une autre cible doit fournir explicitement l'annotation repère correspondante. (I40804)
  • Introduction d'une API de test expérimentale et indépendante de la plate-forme : interface ComposeUiTest et fun runComposeUiTest(block: ComposeUiTest.() -> Unit), qui permettent de tester l'UI Compose sans TestRule. Pour exécuter un test sans ComposeTestRule, transmettez le test en tant que lambda à runComposeUiTest, puis utilisez les méthodes et les membres du champ d'application ComposeUiTest receveur, qui sont identiques à ceux de ComposeContentTestRule.

    Ajout des interface AndroidComposeUiTest et fun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit) spécifiques à Android pour permettre l'accès à l'activité sous-jacente, comme dans AndroidComposeTestRule. Pour un contrôle plus précis, vous pouvez instancier un class AndroidComposeUiTestEnvironment vous-même.

    class DesktopComposeUiTest fournit l'implémentation pour ordinateur, mais aucune fonction d'exécution spécifique aux ordinateurs de bureau n'est proposée pour le moment.

    Pour migrer un test de ComposeTestRule vers ComposeUiTest, procédez comme suit (applicable pour Android) :

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @get:Rule val rule = createComposeRule()
        @Test
        fun test() {
            rule.setContent {
                Text("Hello Compose!")
            }
            rule.onNodeWithText("Hello Compose!").assertExists()
        }
    }
    

    Devient :

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @Test
        @OptIn(ExperimentalTestApi::class)
        fun test() = runComposeUiTest {
            setContent {
                Text("Hello Compose!")
            }
            onNodeWithText("Hello Compose!").assertExists()
        }
    }
    
  • Pour l'instant, ComposeContentTestRule et ComposeTestRule ne s'étendent pas à partir de ComposeUiTest. Par conséquent, les fonctions d'extension de ComposeUiTest ne peuvent pas encore être appelées sur l'interface TestRule. Lorsque ComposeUiTest passera en phase d'API stable, ComposeContentTestRule et ComposeTestRule seront mises à jour pour s'étendre depuis ComposeUiTest. (Ib4e90)

  • 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 d'un Brush à 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 définies par deux booléens (FirstLineTop, LastLineBottom, Both et None). (Ifc6a5, b/181155707)

  • Ajout de LineHeightBehavior à TextStyle et à ParagraphStyle. LineHeightBehavior 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)

  • Reclassement des fonctions PlatformParagraphStyle.lerp et PlatformSpanStyle.lerp, désormais fonctions de niveau supérieur. (I9a268)

Correction de bugs

  • Mise à jour de la documentation de PointerInputChange::copy, qui indique désormais correctement qu'il s'agit d'une copie superficielle. (I182f5)
  • 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 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)

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.ui:ui-*:1.2.0-alpha08. Liste des commits de la version 1.2.0-alpha08.

Modifications apportées à l'API

  • Qualification des fonctions pluralStringResource comme expérimentales, pour permettre une meilleure internationalisation de leurs évolutions à venir. (If24e4)
  • 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)
  • Reclassement de PointerIcon, désormais une interface @Stable. (I9dafe)
  • 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)
  • Prise en charge de l'interopérabilité de défilement imbriqué entre le système de vues et Compose dans la direction Compose > Vue. Cela signifie qu'un parent Compose pourra recevoir des deltas de défilement imbriqué à partir d'une vue de défilement imbriquée. (If7949, b/174348612)
  • Ajout de SemanticsProperty testTagsAsResourceId, qui peut être utilisé pour rendre Compose conforme aux tests UIAutomator conçus pour le système de vues. (I39c20)
  • 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)
  • Réorganisation des arguments de position, qui précèdent désormais les arguments facultatifs dans Paragraph et MultiParagraph. (Idafaa)
  • Mise à jour de AndroidFont, qui utilise désormais typefaceLoader comme paramètre de constructeur. (I2c971)

Version 1.2.0-alpha07

6 avril 2022

Publication d'androidx.compose.ui:ui-*:1.2.0-alpha07. Liste des commits de la version 1.2.0-alpha07.

Modifications apportées à l'API

  • Ajout d'une fonction Snapshot.withoutReadObservation { ... }. Elle permet aux utilisateurs d'exécuter le lambda transmis sans s'abonner aux modifications des valeurs d'état lues dans ce bloc. Cette fonction peut s'avérer utile lorsque vous souhaitez bénéficier de lectures/écritures thread-safe basées sur une capture instantanée tout en conservant la possibilité de lire la valeur sans provoquer de recomposition ni de nouvelles mesures inutiles. (I9f365, b/214054486)
  • 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)
  • Ajout de KeyboardType.Decimal comme alternative à Keyboard.Number pour inclure spécifiquement le séparateur décimal dans l'IME. (Iec4c8, b/209835363)
  • Reclassement de PointerEventType.Scroll et PointerEvent.scrollDelta comme API stables. (I574c5, b/225669674)
  • Prise en charge de l'interopérabilité de défilement imbriqué entre le système de vues et Compose pour les classes de vues coopérantes. Compose peut désormais envoyer des deltas de défilement à une vue parente coopérante. (I5d1ac, b/174348612)
  • Mise à jour de FontFamily.Resolver pour intégrer le paramètre d'accessibilité Texte en gras à l'échelle du système. (I6c1e7)
  • Abandon de Font(AssetManager, String, ...), remplacé par Font(String, AssetManager, ...). Cette API est expérimentale. (I1c7a4)
  • 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)
  • Ajout d'une configuration de compatibilité temporaire pour includeFontPadding dans TextStyle/ParagraphStyle. includeFontPadding peut être modifié 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)
  • Ajout de l'extension GoogleFont.Provider.isAvailableOnDevice pour l'aide au débogage. (I64e31)
  • Ajout d'un constructeur GoogleFont.Provider à utiliser avec @ArrayRes. (Ic5ee1, b/225984280)
  • Changement de nom : Compose GoogleFont devient Font(GoogleFont). L'API reste stable. (I125f2)

Correction de bugs

  • Ajout d'une vérification lint pour Material/Scaffold, afin de garantir l'utilisation de la marge intérieure. (Ifb111)

Version 1.2.0-alpha06

23 mars 2022

Publication d'androidx.compose.ui:ui-*: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)
  • Mise à jour de l'analyse des drawables vectoriels pour permettre la mise en miroir automatique afin d'inverser le contenu d'un VectorPainter si la mise en page actuelle se lit de droite à gauche. (I79cd9, b/185760237)
  • Mise à jour des paramètres de couleurs d'ombre et d'ambiance, désormais paramètres de fin de Modifier.graphicsLayer, afin d'assurer la compatibilité avec les API. (I3f864, b/160665122)

  • Ajout d'implémentations par défaut aux couleurs d'ombre et d'ambiance sur GraphicsLayerScope, pour prendre en charge d'éventuelles modifications ultérieures de l'API.

  • Ajout d'un horodatage aux événements RSB. (Ief8ae)

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

  • Amélioration des performances de défilement des vues RecyclerView avec des vues Compose en tant qu'enfants lorsque RecyclerView et Compose sont mis à niveau.

  • Ajout de ViewCompositionStrategy.Default comme moyen de récupérer la stratégie intégrée par défaut.

  • Ajout de ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer comme nouvelle stratégie par défaut, qui gère correctement les conteneurs de pooling tels que RecyclerView. (If7282)

  • Prise en charge de l'annotation des classes d'annotations avec @Preview. Il s'agit d'une première étape en vue de l'ajout de la fonctionnalité Multipreview. Ces annotations peuvent être utilisées pour annoter des méthodes composables ou d'autres classes d'annotation, qui peuvent alors être considérées comme indirectement annotées par la mention @Preview en question. (I12eff)

  • Ajout d'appareils de référence à la liste des appareils pour @Preview. (I071c9)

Correction de bugs

  • Mise à jour des API Vector Graphics afin d'utiliser l'annotation composable appropriée @VectorComposable au lieu de @UiComposable. (I942bc)
  • Suppression de la fonction crossinline de AnnotatedString.Builder.withStyle. (If84d5)

Contribution externe

  • compose-ui : ajout des propriétés ambientShadowColor et spotShadowColor à GraphicsLayerScope. (I1ba1a, b/160665122)
  • Prise en charge des ressources plurielles via fonctions pluralStringResource. (Ib2f23, b/191375123)

Version 1.2.0-alpha05

9 mars 2022

Publication d'androidx.compose.ui:ui-*:1.2.0-alpha05. Liste des commits de la version 1.2.0-alpha05

Modifications apportées à l'API

  • Mise à jour de TextToolbar, qui accepte désormais les arguments lambda au lieu de ActionCallback. (Ib2eb9, b/197950089)
  • Mise à jour de la possibilité de valeur nulle dans Core et AppCompat pour correspondre à Tiramisu DP2. (I0cbb7)
  • Mise à jour de l'interface mesurée afin d'exposer la propriété parentData. (I3313f)
  • Mise à jour de Modifier.onPlaced et de l'interface OnPlacedModifier, désormais considérés comme stables. (Ib5482)
  • Super ! Compose Animation est désormais compatible avec le paramètre de durée "Animator duration scale" des options pour les développeurs. (I5a4fc, b/161675988)
  • Ajout d'un modificateur BeyondBoundsLayout local. (If8b51, b/184670295)
  • 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)

Correction de bugs

  • ComposeContentTestRule.setContent génère désormais une exception IllegalStateException si vous essayez de définir du contenu alors qu'il en existe déjà. (I888a5, b/199631334)
  • Correction du plantage causé par le contenu du presse-papiers lors de la lecture du presse-papiers sur Android. (I06020, b/197769306)
  • Amélioration des échantillons de défilement RSB. (I6a596)

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.ui:ui-*:1.2.0-alpha04. Liste des commits de la version 1.2.0-alpha04

Modifications apportées à l'API

  • Ajout de ComposableTarget, ComposableTargetMarker et ComposableOpenTarget pour signaler au moment de la compilation qu'une fonction modulable s'applique à la mauvaise cible.

    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'une cible personnalisée, 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 cibles personnalisées, les fonctions modulables qui appellent ComposeNode ou ReusableComposeNode doivent ajouter une annotation ComposableTarget 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 de cible. Pour obtenir un exemple d'utilisation de ComposableTargetMarker, reportez-vous à anroidx.compose.ui.UiComposable. (I38f11)

  • Mise à jour de Font(resId, ...), qui utilise désormais loadStrategy sur une API stable. (Ief3d2)

  • Reclassement de FontLoadingStrategy, désormais considérée comme une API stable. (I1ee35, b/174162090)

  • Prise en charge du chargement asynchrone des polices dans Text. (I77057, b/214587005)

  • Ajout d'une API de jonction permettant de convertir un Font.ResourceLoader personnalisé en FontFamily.Resolver. (Ia0060)

Correction de bugs

  • Les valeurs FontFamily.Resolver fournies sont transmises à des sous-compositions telles que Popup.
  • Les valeurs Font.ResourceLoader fournies sont transmises à des sous-compositions telles que Popup. (I48fa5)

Version 1.2.0-alpha03

9 février 2022

Publication d'androidx.compose.ui:ui-*: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)
  • Introduction de la méthode destroyDisplayListData sur la classe bouchon RenderNode. (I1e659, b/216660268)
  • Ajout d'une API permettant de prémesurer les enfants de SubcomposeLayout que vous avez précomposés. (I857ea)
  • Ajout de movableContentOf, qui convertit un lambda composable en lambda qui déplace son état et les nœuds correspondants vers tout nouvel emplacement où il est appelé. Lorsque l'appel précédent sort de la composition, l'état est temporairement conservé. Si un nouvel appel au lambda entre dans la composition, l'état et les nœuds associés sont déplacés vers l'emplacement du nouvel appel. Si aucun nouvel appel n'est ajouté, l'état est supprimé définitivement et les observateurs de mise en mémoire sont notifiés.

    Si un lambda movableContentOf est appelé plusieurs fois dans la même composition, un état et des nœuds sont créés pour chaque appel. L'état est ensuite déplacé lorsque les appels quittent la composition et que de nouveaux appels y sont ajoutés. L'état du premier appel sortant passe au premier appel entrant, et ainsi de suite, dans l'ordre d'appel. Tous les états non revendiqués par de nouveaux appels sont définitivement supprimés. (Ib4850)

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

  • Prise en charge du chargement de polices asynchrone et facultatif, avec comportement de remplacement. Ce chemin est utilisé par Text et TextField, et exposé via FontFamilySolver.

  • Prise en charge du préchargement des polices via FontFamilyResolver.preload

  • Ajout de FontFamilyResolver.setAsyncLoadContext, qui permet de définir le contexte de coroutine globale utilisé pour charger des polices asynchrones. (I87fe8, 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)

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

  • Exposition des fonctions HSV et HSL de Color en tant qu'API non expérimentale. L'espace colorimétrique Oklab est désormais une API publique. (I08fb6, b/180731008)

  • Abandon de AndroidComposeTestRule.AndroidComposeStatement, qui n'apportait rien et n'était pas destiné à faire partie d'une API publique. (Ibc46b)

  • Changement du nom de la classe kt interne générée. (Ia0b9e, b/174162090)

  • Suppression de FontLoadingStrategy.values. (I42a9d, b/174162090)

  • Changement du nom : le chargeur de police devient FontFamilyResolver. (I4f773, b/174162090)

  • Utilisez le nouveau système de chargement des polices sur ordinateur. (I9ce5c, b/174162090)

  • Mise à jour de FontFamily.Resolver.resolve, afin de renvoyer State<Any>. (I4406c, b/174162090)

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)

Version 1.2.0-alpha02

26 janvier 2022

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

Modifications apportées à l'API

  • Ajout de Modifier.onRotaryScrollEvent() et Modifier.onPreRotaryScrollEvent() pour les appareils Wear avec bouton latéral rotatif. (I18bf5, b/210748686)
  • Ajout d'une extension View.createLifecycleAwareRecomposer expérimentale. (I0cde6)

Contribution externe

  • Mise à jour de PointerEvent.scrollDelta.y, désormais inversé sur Android (affiche maintenant 1 au lieu de -1 si la molette de la souris est inclinée vers la droite). (Ia9811)

Version 1.2.0-alpha01

12 janvier 2022

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

Modifications apportées à l'API

  • Abandon de FontFamily.canLoadSynchronously. Cette propriété n'a pas d'incidence sémantique. (Ica5ef)
  • Ajout d'un champ d'identité à CompositionData pour générer des ID invariants dans l'outil d'inspection de la mise en page. (Ic116e)
  • Ajout des ID d'appareils Wear OS à la liste des appareils Preview. (I93232)

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.ui:ui-*:1.1.1. Liste des commits de la version 1.1.1

Corrections 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.ui:ui-*: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 de l'effet de 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.ui:ui-*: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.ui:ui-*:1.1.0-rc01. Liste des commits de la version 1.1.0-rc01

Correction de bugs

  • Correction d'un bug qui causait l'omission de certaines actions d'accessibilité liées au défilement. (I7cbfb)
  • Mise à jour de SemanticsNodeInteraction.captureToImage(), qui fonctionnera désormais également si HardwareRenderer.isDrawingEnabled() est défini sur false, en l'activant pour la durée de l'appel. (Idf3d0)

Version 1.1.0-beta04

1er décembre 2021

Publication d'androidx.compose.ui:ui-*: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)
  • Prise en charge des événements de molette de la souris dans la couche de l'interface utilisateur. (Ia14eb, b/198214718)
  • Ajout de surcharges Modifier.composed expérimentales qui acceptent des clés à comparer pour établir des égalités et déterminer si des optimisations doivent être ignorées. (Ice799, b/205851704)
  • Mise à jour de ComposeNotIdleException, qui s'étend désormais à partir d'Exception au lieu de s'étendre directement depuis Throwable. Notez que cela signifie que les clauses catch qui interceptent Exception peuvent désormais intercepter les fonctions ComposeNotIdleException, ce qui n'était pas le cas auparavant. (I9c217)

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.ui:ui-*:1.1.0-beta03. Liste des commits de la version 1.1.0-beta03

Modifications apportées à l'API

  • Ajout d'un modificateur Modifier.onPlaced pour permettre l'observation de la modification de l'emplacement. Permet de procéder à des modifications supplémentaires du décalage du modificateur enfant en fonction du changement d'emplacement observé. (I558fd)
  • Suppression de InjectionScope.flush() et InjectionScope.dispose(). Le nettoyage de tous les événements et la suppression du champ d'application sont désormais effectués à la fin de la méthode perform*Input(), comme précédemment. (I2bed8)
  • Suppression de MultiModalInjectionScope.Touch et MultiModalInjectionScope.Mouse. Pour injecter des événements tactiles et de souris pour les gestes multimodals, vous pouvez maintenant utiliser MultiModalInjectionScope.touch() et MultiModalInjectionScope.mouse(), qui acceptent tous les deux un lambda avec le champ d'application receveur de cette modalité. (Idde18)

Correction de bugs

  • Mise à jour de la valeur par défaut de durationMillis dans TouchInjectionScope.swipeWithVelocity, désormais calculée de façon à permettre le balayage. (I19deb)

Version 1.1.0-beta02

3 novembre 2021

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

Modifications apportées à l'API

  • 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)
  • Ajout d'API d'animation pour la prise en charge des outils. Plus précisément, ces API permettent aux outils d'inspecter les animations et leurs configurations dans des transitions. (I4116e)

Contribution externe

  • Ajout de Modifier.pointerHoverIcon. (I95f01)

Version 1.1.0-beta01

27 octobre 2021

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

Modifications apportées à l'API

  • 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)
  • Ajout d'API d'animation pour la prise en charge des outils. Plus précisément, ces API permettent aux outils d'inspecter les animations et leurs configurations dans des transitions. (I4116e)

Version 1.1.0-alpha06

13 octobre 2021

Publication d'androidx.compose.ui:ui-*:1.1.0-alpha06. Liste des commits de la version 1.1.0-alpha06.

Modifications apportées à l'API

  • Suppression de ExperimentalComposeUiApi de ViewRootForInspector et LayoutInfo.ownerViewId. (I5c2e3)
  • Ajout d'une surcharge sans enfant pour Layout, pour gagner en efficacité. (Ib0d9a)
  • Suppression de InternalCompilerApi des méthodes Composer devant être appelées entre les modules. (I1aa0b)
  • Mise à jour de SemanticsNodeInteraction.performSemanticsAction, qui renvoie désormais la SemanticsNodeInteraction sur laquelle la fonction a été appelée. (I9e5db)
  • Ajout de LocalInputModeManager CompositionLocal pour détecter TouchMode/NonTouchMode. (I6a83c, b/175899786)
  • Ajout de viewConfiguration: ViewConfiguration à LayoutInfo pour permettre aux consommateurs d'obtenir la bonne valeur dans des cas tels que l'expiration des appuis prolongés. (I76ca6)
    • Ajout de viewConfiguration: ViewConfiguration à InjectionScope pour permettre aux tests d'ajuster l'injection d'entrées en fonction d'éléments tels que l'expiration des appuis prolongés ou les pressions confuses.
    • Modification de la durée par défaut de l'appui prolongé et du double appui pour baser l'entrée tactile/de la souris sur les valeurs de InjectionScope.viewConfiguration.
  • Implémentation de ExposedDropdownMenu, basé sur ExposedDropdownMenuBox avec TextField et DropdownMenu à l'intérieur. (If60b2)
  • Ajout de dismissOnOutsideClick aux PopupProperties, pour remplacer dismissOnClickOutside, désormais obsolète. La nouvelle propriété reçoit la position du clic et les limites de l'ancrage, ce qui permet de contrôler plus précisément si onDismissRequest doit être appelé ou non. Par exemple, cela peut être utile pour éviter que des touches dans l'ancrage soient ignorées.
    • Ajout de updateAndroidWindowManagerFlags aux PopupProperties, permettant de contrôler à bas niveau les indicateurs transmis par le pop-up à Android WindowManager. Les indicateurs calculés à partir des valeurs PopupProperties, qui génèrent des indicateurs WindowManager tels que "focusable", serviront de paramètre au lambda. Le résultat du lambda sera les indicateurs finaux qui seront transmis à Android WindowManager. Par défaut, updateAndroidWindowManagerFlags ne modifie pas les indicateurs calculés à partir des paramètres. Utilisez cette API avec précaution, uniquement si votre pop-up doit répondre à des exigences de comportement très spécifiques. (I6e9f9)
  • Abandon de Recomposer.state, remplacé par Recomposer.currentState afin de lui attribuer le type StateFlow. (Ic2ab3, b/197773820)
  • Ajout de flush() et dispose() à InjectionScope. Utilisez ces options lorsque vous souhaitez vider immédiatement tous les événements mis en file d'attente ou lorsque vous souhaitez supprimer le champ d'application. (Ifb73a)
  • Ajout de performScrollToNode(matcher: SemanticsMatcher), qui fait défiler un conteneur déroulant jusqu'au contenu désigné par l'élément de mise en correspondance donné. (Ic1cb8)
  • Mise à jour de InjectionScope, qui implémente désormais Density, ce qui vous permet de convertir facilement des pixels px en dp dans performTouchInput et similaires. (I8fe1f)

Correction de bugs

  • Mise à jour d'AndroidView, qui propage désormais les propriétés LocalLifecycleOwner et LocalSavedStateRegistryOwner dans sa vue via ViewTreeLifecycleOwner et ViewTreeSavedStateRegistryOwner. (I38f96, b/179708470)
  • Correction du problème de balayages ignorés par la SwipeToDismissBox de Wear OS. (I9387e)
  • Mise à jour du délai par défaut entre les injections d'événements d'entrée, qui passe de 10 ms à 16 ms. Ce changement peut affecter le résultat des tests qui impliquent des gestes d'entrée, comme un balayage spécifique. (I829fd)

Version 1.1.0-alpha05

29 septembre 2021

Publication d'androidx.compose.ui:ui-*:1.1.0-alpha05. Liste des commits de la version 1.1.0-alpha05

Modifications apportées à l'API

  • Prise en charge de la communication inter-modificateurs. (Id5467, b/198826874)
  • Ajout de pointeurs historiques expérimentaux à PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
  • Ajout de density: Density et layoutDirection: LayoutDirection à LayoutInfo. Cela permet aux consommateurs de LayoutInfo d'interpréter correctement les dimensions et la position exposées dans LayoutInfo. (I002f1)
  • Prise en charge expérimentale de l'injection d'événements de souris. Utilisez performMouseInput pour commencer à envoyer des événements de souris, ou envoyez des événements de souris via la propriété Mouse de MultiModalInjectionScope lors d'un geste d'entrée multimodal avec performMultiModalInput. Reportez-vous à MouseInjectionScope pour obtenir de la documentation sur l'API disponible. (Iaa4a8, b/190493367)

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)
  • Amélioration de TouchInjectionScope.swipeWithVelocity, qui accepte maintenant une plage de variables d'entrée plus étendue et suggère des modifications pour l'entrée si un balayage ne peut pas être créé. (I40fbe, b/182477143)

Version 1.1.0-alpha04

15 septembre 2021

Publication d'androidx.compose.ui:ui-*:1.1.0-alpha04. Liste des commits de la version 1.1.0-alpha04

Modifications apportées à l'API

  • Ajout de PointerEventType à PointerEvent pour gérer les événements de pointage. (I091fa)
  • Prise en charge du traitement par les enfants d'entrées de pointeur en dehors des limites d'entrée du parent, qui peut intercepter ces appels avec une propriété PointerInputScope.alwaysInterceptChildEvents. (I9eae3, b/192479655)
  • 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)
  • Réfection de la mise en œuvre des éléments inspectables. (I927bc, b/191017532)
  • Modification du nom de paramètre de l'élément inspectable pour correspondre à la valeur composée. (I3a482, b/191017532)
  • Introduction de performTouchInput et TouchInjectionScope pour remplacer performTouchInput et TouchInjectionScope, ouvrant ainsi la voie à d'autres modalités (comme la souris).

    TouchInjectionScope utilise les mêmes méthodes que GestureScope, à l'exception de movePointerTo et movePointerBy, qui ont été renommés updatePointerTo et updatePointerBy. Toutes les autres méthodes sont identiques.

    Le comportement de TouchInjectionScope est presque identique à GestureScope, à deux petits détails près :

    1. Lors de l'envoi d'un événement "vers le bas" alors que les pointeurs ont été déplacés sans envoyer d'événement de déplacement (en d'autres termes, updatePointerTo() a été utilisé, mais pas move(), puis down() est appelé), l'implémentation précédente antidate l'événement et envoie un événement de déplacement avant d'envoyer l'événement "vers le bas". La nouvelle mise en œuvre envoie toujours l'événement de déplacement, mais n'antidate pas l'événement dans ce scénario spécifique.
    2. Lors de l'envoi d'un événement "vers le haut" alors que les pointeurs avaient été déplacés sans envoyer d'événement de déplacement (comme ci-dessus), l'implémentation précédente antidatait l'heure de l'événement et envoyait un événement de déplacement d'envoyer l'événement "vers le haut". La nouvelle implémentation ne fait ni l'un ni l'autre : les nouvelles positions des pointeurs seront uniquement reflétées via l'événement "vers le haut".

    Introduction TouchInjectionScope d'une nouvelle méthode currentPosition(pointerId: Int) pour obtenir la position actuelle du pointeur. (If1191, b/190493367)

Correction de bugs

  • Prise en charge de l'extension des limites de la zone cible tactile au-delà de la zone de bornement pour satisfaire aux exigences de dimensions minimales des zones cibles tactiles. (I43e10, b/171509422)
  • Prise en charge du défilement hors limite sur les appareils Android 12. (Iccf3c, b/171682480)

Version 1.1.0-alpha03

1er septembre 2021

Publication d'androidx.compose.ui:ui-*: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 de Modifier.inspectable pour encapsuler d'autres modificateurs. (I1909b, b/191017532)
  • Ajout de l'API BlurredEdgeTreatment pour simplifier les cas d'utilisation du floutage en créant des combinaisons des indicateurs de bornement et TileModes les plus communément utilisés. La plupart des cas d'utilisation impliquent de laisser s'effectuer le rendu du contenu flouté en dehors des limites du contenu d'origine, et de flouter les régions en dehors de ces limites avec du noir transparent, ou de rogner le contenu jusqu'aux limites en échantillonnant le bord le plus proche pour le floutage de blocs dépassant les limites du contenu. (I6b4b7, b/166927547)
  • Prise en charge de RenderEffect dans la version ordinateur de Compose. Introduction d'OffsetEffect ainsi que du modificateur de flou pour introduire des effets visuels de floutage dans une partie de la hiérarchie de la composition. (I0f6aa, b/166927547)
  • Introduction de l'API RenderEffect, qui peut être configurée sur une Modifier.graphicsLayer pour modifier le contenu de la couche elle-même. Cette option permet de flouter le contenu d'un composable et de ses composables enfants dans une hiérarchie de composition. (I47c4d, b/166927547)
  • Mise à jour d'AwaitPointerEventScope, qui dispose désormais de withTimeout() et withTimeoutOrNull(). (I507f0, b/179239764, b/182397793)
  • 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)
  • Prise en charge de TileMode.Decal, utile pour définir le comportement en périphérie des RenderEffects basés sur le floutage. (I7e8ed, b/166927547)
  • Reclassement de performScrollToIndex, performScrollToKey, hasScrollToIndexAction et hasScrollToKeyAction, désormais considérées comme des API stables. (I142ae, b/178483889)
  • Ajout d'une méthode de test pour obtenir les limites rognées. (I6b28e)

Correction de bugs

  • Suppression de la méthode isBounded de BlurredEdgeTreatment, à remplacer en vérifiant de façon explicite si le paramètre de forme est nul. (I85d68)

Version 1.1.0-alpha02

18 août 2021

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

Modifications apportées à l'API

  • Prise en charge par PointerEvent de la lecture de l'état des boutons de la souris et des modificateurs de clavier. (I6310c, b/180075467)
  • Mise à jour des gestes injectés, qui utilisent désormais l'heure de MainTestClock comme référence horaire. L'heure considérée par les événements injectés dans performGesture sera initialisée sur l'heure actuelle de MainTestClock. (Ifb364, b/192064452)
  • Ajout du constructeur DpRect(DpOffset, DpSize). (I2cf16, b/194219828)
  • Ajout de la classe DpSize. (I7abb1, b/194219828)

Correction de bugs

  • Mise à jour de l'analyse XML des graphiques vectoriels pour prendre en charge ColorStateList en tant que propriété de teinte racine pour les drawables vectoriels. (I86915, b/195668138)

Version 1.1.0-alpha01

4 août 2021

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

Modifications apportées à l'API

  • Mise à jour de RelocationRequester.bringIntoView, qui accepte désormais un rectangle comme paramètre, permettant d'afficher une partie d'un composable dans une vue. (Ice2c5, b/194330245)
  • Déplacement de AnimatedImageVector et des API associées vers le nouveau module androidx.compose.animation:animation-graphics. (I60873)
  • Ajout d'un modificateur expérimental pour gérer les demandes de repositionnement. (I65a97, b/178211874)
  • Introduction de l'API BrushPainter permettant l'affichage d'un pinceau arbitraire dans un Painter semblable à ColorPainter.

    Mise à jour de l'API Brush pour définir un paramètre de taille intrinsèque interrogé dans BrushPainter. (Ia2752, b/189466433)

  • 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 d'utiliser également un paramètre FilterQuality facultatif. (Ie4fb0, b/180311607)

  • Ajout de la méthode GestureScope.advanceEventTime pour mieux contrôler la chronologie des événements dans un geste. (Ibf3e2)

Correction de bugs

  • Pour mieux prendre en charge le chaînage de modificateurs de dessin, assurez-vous que votre implémentation de Modifier.paint appelle drawsContent. Auparavant, Modifier.paint était attendu dans un nœud externe (leaf) de la chaîne de modificateurs. Cette approche l'empêchait d'être configuré sur un conteneur composable (par exemple, une boîte) ou d'ajouter des décorations par-dessus (par exemple, Modifier.paint().border()). Faire en sorte que Modifier.paint appelle drawContent après avoir tracé le contenu du Painter donné permet d'obtenir une meilleure cohérence de comportement avec le modèle de modificateur. (Ibb2a7, b/178201337, b/186213275)
  • Mise à jour des boîtes de dialogue, qui suivent désormais le comportement de dimensionnement de plate-forme. Définissez usePlatformDefaultWidth sur "false" pour désactiver ce comportement. (Iffaed, b/192682388)
  • Déplacement de InfiniteAnimationPolicy vers :compose:ui. (I5eb09, b/160602714)
  • 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)

Version 1.0

Version 1.0.5

3 novembre 2021

Publication d'androidx.compose.ui:ui-*:1.0.5. Liste des commits de la version 1.0.5

Corrections 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.ui:ui-*: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.ui:ui-*: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.ui:ui-*: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.ui:ui-*: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.ui:ui-*: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.ui:ui-*:1.0.0-rc02. Liste des commits de la version 1.0.0-rc02

Correction de bugs

  • Mise à jour des boîtes de dialogue, qui suivent désormais le comportement de dimensionnement de plate-forme. Définissez usePlatformDefaultWidth sur "false" pour désactiver ce comportement. (Iffaed, b/192682388)

Version 1.0.0-rc01

1er juillet 2021

Publication d'androidx.compose.ui:ui-*:1.0.0-rc01. Liste des commits de la version 1.0.0-rc01

Nouvelles fonctionnalités

  • Division du module ui-tooling dans ui-tooling et ui-tooling-preview. (Iefa28, b/190649014)

Modifications apportées à l'API

  • Suppression des fonctionnalités expérimentales FocusManager#moveFocusIn et FocusManager#moveFocusOut, devenues obsolètes. (I227d7, b/170154986, b/186567354, b/168510304)
  • Prise en charge par Canvas d'un paramètre contentDescription pour l'accessibilité. (Ib547c)
  • Changement de nom : dans PopupProperties, useDefaultMaxWidth devient usePlatformDefaultWidth. (I05710)
  • Mise à jour des boîtes de dialogue, qui peuvent désormais utiliser toute la largeur de l'écran. (I83929, b/190810877)
  • Prise en charge expérimentale pour les représentations de couleurs HSV et HSL. (Id7cf8, b/180731008)

Nouveaux comportements

  • Compose @Preview fournit maintenant un LocalActivityResultRegistryOwner, qui permet de prévisualiser les composables utilisant des API telles que rememberLauncherForActivityResult() qui dépendent de ce propriétaire. (Ib13d1, b/185693006)
  • Compose @Preview fournit maintenant un LocalOnBackPressedDispatcherOwner, qui permet de prévisualiser les composables utilisant des API telles que BackHandler qui dépendent de ce propriétaire. (Ia1c05, b/185693006)

Correction de bugs

  • Déplacement de InfiniteAnimationPolicy vers androidx.compose.ui:ui. (I5eb09, b/160602714)
  • Suppression temporaire de AnimatedImageVector, pour permettre de modifier la structure du module. (I41906, b/160602714)

Version 1.0.0-beta09

16 juin 2021

Publication d'androidx.compose.ui:ui-*:1.0.0-beta09. Liste des commits de la version 1.0.0-beta09

Modifications apportées à l'API

  • Conversion des énumérations Role et LiveRegionMode en classes inline avec un constructeur privé. (Id1890)
  • Conversion de KeyboardCapitalization en classe inline. (Id5a1c)
  • Conversion de HapticFeedbackType en classe inline. (I255ec)
  • Marquage de Modifier.pointerInteropFilter comme @ExperimentalComposeUiApi. (Iede6c)
  • Conversion de TextAlign, FontSynthesis et TextDirection en classes inline. (I212fe)
  • Conversion de TextOverflow en classe inline. (I433af)
  • Conversion de FontStyle en classe inline. (I9e48b)

Correction de bugs

  • Marquage temporaire des constantes clés comme @ExperimentComposeUiApi. La consommation de code peut déclarer des constantes privées avant la stabilisation. (Ia5d48)
  • Mise à jour des tests Compose, qui peuvent désormais être exécutés sur Robolectric. Les limites suivantes ont été identifiées :
    • En l'absence de bitmap natif, ImageBitmap() conduit à une exception NullPointerException.
    • Comme il n'y a pas de dessin, captureToImage() attendra indéfiniment la prochaine transmission (interblocage).
    • Aucune police n'est chargée, ce qui empêche le texte d'être mesuré correctement. Tous les caractères ont une hauteur fixe d'environ 20 px pour une largeur de 1 px.
    • ComposeTestRule.waitUntil {} n'exécute pas le thread principal pendant l'attente, ce qui le rend identique à ComposeTestRule.mainClock.advanceTimeUntil {}. D'autres limites devraient être identifiées à l'avenir. (I284fa)

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 segment 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.ui:ui-*: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)
  • Changement de nom : FocusManager.clearFocus(forcedClear = true) devient FocusManager.clearFocus(force = true). (Ia0c41)
  • 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)
  • Suppression de @ExperimentalComposeUiApi des PopupProperties. (I01fa6)
  • Conversion de l'énumération PointerType en classe inline. (If5058)
  • 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)
  • Reclassement de Modifier.onSizeChanged() et Modifier.onGloballyPositioned(), qui ne sont désormais plus des fonctions inline. (I727f6, b/186109675)
  • 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)
  • Conversion de PlaceholderVerticalAlign en classe inline. (If6290)
  • Conversion de TextUnitType en classe inline. (I4cba9)
  • Rattachement des fonctions AnnotatedString.withAnnotation à ExperimentalTextApi (au lieu de ExperimentalComposeApi). (I0cd0a)
    • Rattachement du constructeur TextUnit avec TextUnitType à ExperimentTextApi (au lieu de ExperimentComposeApi).

Correction de bugs

  • Correction d'un bug introduit en version beta07, à cause duquel les éléments LazyColumn/Row étaient affichés partiellement après le défilement. (I8c9ac, b/188566058)
  • 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)
  • Correction du problème avec LayoutModifiers, qui fournissait des lignes d'alignement. Un autre bug, qui empêchait la mesure des éléments parents lors de la modification des lignes d'alignement des éléments enfants, a aussi été corrigé. (I4401f, b/174315652)
  • 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.ui:ui-*:1.0.0-beta07. Liste des commits de la version 1.0.0-beta07

Modifications apportées à l'API

  • Ajout de l'interface ViewRootForInspector, à utiliser dans l'outil d'inspection. (Ib70df)
  • Prise en charge par SubcomposeLayoutState de la définition du nombre d'emplacements réutilisables. La mise en page conservera jusqu'à ce nombre d'emplacements actifs au lieu de les supprimer, pour pouvoir les réutiliser la prochaine fois qu'un emplacement est nécessaire. (Ieb981)
  • Remplacement de l'énumération KeyEventType par une classe inline. (Id670a, b/187055290)
  • Remplacement de l'énumération FocusDirection par une classe inline. (Ib6d03, b/187055290, b/184086802)
  • Introduction de la possibilité de hisser l'état de SubcomposeLayout, ce qui permet de précomposer le contenu dans un slotId obligatoire, permettant de transmettre la mesure suivante plus rapidement, car les prochaines sous-compositions de ce même slotId ne nécessiteront aucune composition. (I42580, b/184940225)
  • Ajout d'une poignée de sélection des bornements. (Iff80d, b/183408447)
  • Suppression des API inutilisées associées à la prise en charge du LayoutInspector. (I2ac78)

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)
  • Mise à jour de TextGeomerticTransform et TextDecoration sur AnnotatedString, qui seront appliqués comme fournis. (I61900, b/184760917)

Version 1.0.0-beta06

5 mai 2021

Publication d'androidx.compose.ui:ui-*: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)
  • Mise à jour de @ComposeCompilerApi, qui n'est plus @RequiresOptIn. (Iab690)
  • 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)
  • Ajout de ownerViewId à GraphicLayerInfo. (I19f62)
  • Ajout de la surcharge Font() pour charger les polices à partir des éléments, File et FileDescriptor. (I5d382)
  • Ajout d'une error d'API d'accessibilité qui signale un nœud contenant une entrée non valide. (I12997, b/180584804, b/182142737)
  • Ajout des surcharges Font() pour charger les polices à partir des éléments, File et FileDescriptor. (I43007)
  • Prise en charge de l'enregistrement de AnnotatedString dans TextFieldValue.Saver. Ajout des fonctions utilitaires addTtsAnnotation et withAnnotation à AnnotatedString.Builder. (I8cbdc, b/178446304)
  • Ajout de la fonction de constructeur TextUnit TextUnit(value: Float, type: TextUnitType). (I7ecce, b/178446304)

Version 1.0.0-beta05

21 avril 2021

Publication d'androidx.compose.ui:ui-*:1.0.0-beta05. Liste des commits de la version 1.0.0-beta05

Modifications apportées à l'API

  • Ajout des fonctionnalités expérimentales FocusManager.moveFocus(In) et FocusManager.moveFocus(Out). (Ic5534, b/183746743)
  • Ajout de l'API expérimentale performTextInputSelection. (I2dcbb, b/178510628)
  • Abandon de l'interface InputEventCallback. L'interface n'était pas disponible dans les API publiques et n'était pas utilisée dans le code. (I34a02, b/184003208)
  • Abandon de la fonction TextLayoutResult/createTextLayoutResult. Cette fonction publique n'était pas utilisée et avait été ajoutée à des fins de test. Cette fonction n'est pas applicable dans les API textuelles de Compose. La fonction est désormais obsolète et sera supprimée ultérieurement. (I80413)

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.ui:ui-*: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)
  • Ajout de l'API d'accessibilité LiveRegion. Si le nœud est marqué comme zone live, les services d'accessibilité en informeront automatiquement l'utilisateur. (Idcf6f, b/172590946)
  • Ajout de TextOverflow.Visible. (Ic8f89)

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 balayage trop rapide. (Ie4d13, b/183877420)
  • Mise à jour de AndroidViewBinding, qui supprime désormais correctement les fragments gonflés via FragmentContainerView lorsque AndroidViewBinding est supprimé de la hiérarchie Compose. (Ib0248, b/179915946)
  • Mise à jour de AndroidViewBinding, qui imbrique désormais correctement les fragments gonflés via FragmentContainerView lorsque votre ComposeView se trouve dans un Fragment, ce qui résout les problèmes d'enregistrement et de restauration de l'état de ces fragments. (I70eb0, b/179915946)
  • Mise à jour de Compose ViewBinding, qui dépend désormais de Fragment 1.3.2 et affiche de manière cohérente les fragments gonflés via FragmentContainerView après une modification de la configuration. (I0743d, b/179915946)

Version 1.0.0-beta03

24 mars 2021

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

Modifications apportées à l'API

  • Ajout d'un délai avant la vérification des dépendances ViewTree de ComposeView. (I8dbbf, b/182466548)
  • Ajout des paramètres facultatifs startX/endX et startY/endY aux fonctions swipeUp/swipeDown/swipeLeft/swipeRight dans GestureScope. (I49e2d, b/182063305)

Version 1.0.0-beta02

10 mars 2021

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

Modifications apportées à l'API

  • 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)
  • Suppression des éléments SemanticsMatcher suivants :
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (If16bd)
  • Marquage des éléments SemanticsMatchers suivants comme @ExperimentTestApi :
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (Ia600c)
  • Ajout des éléments SemanticsMatcher suivants :
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (I2f502)

Correction de bugs

  • Application forcée des restrictions sur l'utilisation publique des API expérimentales. (I6aa29, b/174531520)
  • Mise à jour de androidx.compose.ui:ui, qui ne dépend plus d'AppCompat ni de Fragment. Si vous utilisez ComposeView dans votre application, et si vous utilisez Fragment et/ou AppCompat, assurez-vous d'utiliser les versions 1.3 ou ultérieures d'AppCompat/Fragment. Ces mises à jour sont nécessaires pour définir correctement le cycle de vie et les propriétaires d'état enregistrés requis pour ComposeView. (I1d6fa, b/161814404)
  • Correction de la défaillance de rememberSaveable { mutableStateOf(0) } lors de son utilisation dans une destination de navigation-compose. (I1312b, b/180042685, b/180701630)
  • Ajout d'une nouvelle API locale de composition LocalSoftwareKeyboardController pour remplacer l'ancienne interface SoftwareKeyboardController sur TextField. (I658b6, b/168778053)
  • Correction de l'exception rare NoSuchElementException dans le tearDownRegistry() de ComposeRootRegistry. (Iddce1)

Version 1.0.0-beta01

24 février 2021

Publication d'androidx.compose.ui:ui-*: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)
  • 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)
  • Ajout de l'interface AccessibilityMananger et de LocalAccessibilityMananger dans les CompositionLocals. (I53520)
  • 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)
  • Remplacement des Typealiases par les types sous-jacents :
    • ColorStop est désormais Pair<Float, Color>.
    • SpanStyleRange est désormais AnnotatedString.Range.
    • ParagraphStyleRange est désormais AnnotatedString.Range<ParagraphStyle>.
    • StringAnnotation est désormais AnnotatedString.Range<String>.
    • (I8dd1a)
  • 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)
  • 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)

  • Suppression des méthodes obsolètes des modules d'interface. (I646f6)

  • Renommage 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)

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

  • Conversion de imageResource et vectorResource en fonctions d'extension respectivement associées à ImageBitmap et ImageVector. Suppression des fonctions load{Image,Vector,Font}Resource. (I89130)

  • Suppression de AnimationClockObservable et de ses sous-classes. Suppression de AnimatedFloat. (Icde52, b/177457083)

  • 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)
  • Suppression de ComponentActivity.setContent() de compose:ui. Utilisez celui de androidx.activity:activity-compose:1.3.0-alpha01. Suppression de viewModel() et LocalViewModelStoreOwner de compose:ui. Utilisez ceux de androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01. (I6f36b)

  • Modification de Modifier.scrollable, qui utilise désormais une interface Scrollable au lieu de la classe ScrollableController. (I4f5a5, b/174485541, b/175294473)

  • Abandon de la prise en charge de CustomEvents par PointerInputModifier. (I02707, b/175294473)

  • Reclassement de SnapshotStateObserver, qui n'est plus en phase expérimentale. (Id2e6a)

  • Suppression d'API précédemment abandonnées. (Ice5da, b/178633932)

  • Suppression de longPressGestureFilter et doubleClickGestureFilter. Utilisez Modifier.pointerInput avec des fonctions d'assistance telles que detectTapGestures. (I2fedf, b/175294473)

  • Suppression des utilisations refactorisées de l'API String.format dans diverses méthodes toString afin de ne pas exploiter String.format en interne. (Id1290)

  • Suppression des assertions de dp. (I798d2)

  • Suppression de androidx.compose.runtime:runtime-dispatch. (I55feb)

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

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

  • Ajout d'une fonction d'assistance permettant de définir la même action pour tous les rappels ImeAction. (I63447, b/179226323)

  • Suppression du rappel SoftwareKeyboardController (qui sera bientôt remplacé par une nouvelle API) de tous les champs de texte. (Iae869, b/168778053)

  • Suppression de FontSpan et FontWeigthStyleSpan, qui n'étaient plus utilisés. (Ie5b56, b/177423444)

  • Modifications apportées à l'API Material :

    • Ajout du paramètre contentPadding à Top/BottomAppBar pour permettre la personnalisation de la marge intérieure par défaut.
    • Réorganisation des paramètres dans BackdropScaffold, afin de respecter les consignes d'API concernant la précédence des paramètres obligatoires sur les paramètres facultatifs.
    • Déplacement du paramètre icon de BottomNavigationItem, après selected et onClick.
    • Changement de nom : dans BottomNavigationItem, alwaysShowLabels devient alwaysShowLabel.
    • Renommage des paramètres bodyContent, qui deviennent simplement content dans quelques composants.
    • Réorganisation des paramètres dans ButtonDefaults.buttonColors(). Étant donné que le type des paramètres n'a pas changé, cela ne générera pas d'erreur dans votre code. Assurez-vous cependant d'utiliser des paramètres nommés ou de mettre à jour l'ordre manuellement, sinon le fonctionnement de votre code sera altéré.
    • Ajout du paramètre secondaryVariant à darkColors(). Cette couleur est généralement la même que secondary dans le thème sombre. Le paramètre est ajouté pour améliorer la cohérence et les possibilités de personnalisation.
    • Suppression de ElevationDefaults et animateElevation() de la surface de l'API publique, car ils n'étaient pas utiles et rarement utilisés.
    • Changement de nom : dans Slider, onValueChangeEnd devient onValueChangeFinished, et devient nullable.
    • Changement de nom : dans Snackbar, le paramètre text devient content pour plus de cohérence.
    • Ajout du paramètre contentPadding à DropdownMenuItem, pour permettre la personnalisation de la marge intérieure par défaut. content devient une extension sur RowScope.
    • Changement de nom : ModalDrawerLayout devient ModalDrawer.
    • Changement de nom : BottomDrawerLayout devient BottomDrawer.
    • (I1cc66)

Correction de bugs

  • Ajout d'une API permettant d'utiliser des ressources AnimatedVectorDrawable dans Compose. Utilisez animatedVectorResource pour charger un fichier XML <animated-vector> en tant que AnimatedImageVector et l'animer avec painterFor. (I8ea91)
  • 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.ui:ui-*:1.0.0-alpha12. Liste des commits de la version 1.0.0-alpha12

Modifications apportées à l'API

  • Abandon de la prise en charge de ViewGroups par UiApplier. Suppression des composables emitView obsolètes. (Ifb214)
  • 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)
  • Changement de nom : CompositionReference devient CompositionContext. (I53fcb)
  • Changement de nom : Bounds devient DpRect. (I4b32a)
  • 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)
  • Déplacement du composable viewModel() et de LocalViewModelStoreOwner vers androidx.lifecycle.viewmodel.compose. Vous devrez désormais ajouter une dépendance androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 distincte pour l'utiliser. (I7a374)
  • Prise en charge des actions nullables dans AccessibilityAction. Changement du nom du libellé d'action dans AccessibilityAction et CustomAccessibilityAction : CharSequence devient String. (I0dc82)
  • Changement de nom : ImagePainter devient BitmapPainter, afin de mieux correspondre aux conventions de nommage de ImageBitmap et 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)
  • Ajout d'un Modifier.focusOrder() qui accepte un FocusRequester sans spécifier d'ordre de sélection personnalisé à un lambda. Cette option est utile lorsque vous avez seulement besoin de spécifier une référence, mais pas d'ordre de sélection personnalisé pour un composable. (I4f52a, b/179180978)
  • Déplacement de ComponentActivity.setContent vers androidx.activity.compose.setContent dans le module androidx.activity:activity-compose module. (Icf416)
  • Suppression des méthodes de déstructuration et copy() de plusieurs classes où elles n'étaient que rarement utilisées. (I26702, b/178659281)
  • Déplacement de Popup de manière à être spécifique à la plate-forme. AndroidPopupProperties devient PopupProperties, et isFocusable a été déplacé vers un paramètre focusable de PopupProperties. (Ieeea5)
  • Déplacement de Dialog de manière à être spécifique à la plate-forme. AndroidDialogProperties devient DialogProperties. (I4ef69, b/179138130)
  • Mise à jour de LayoutNode, qui devient interne. (I8a7b1, b/175103944)
  • 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 OwnerLayer/OwnerScope/OwnerSnapshotObserver, qui devient interne. (I4ffaf, b/175103944)
  • Changement de nom : toIntPx() devient roundToPx(). (I9b7e4, b/173502290)
  • Changement de nom : IntBounds devient IntRect et l'API a été améliorée. (I1f6ff)
  • Mise à jour de l'API Snapshot, pour plus de cohérence avec les consignes concernant les API et pour masquer les classes d'implémentation internes dans l'API publique. (Id9e32)
  • Ajout des actions sémantiques de développement et de réduction. Ajout des états expand et halfExpand dans ModalBottomSheetState. (Ib5064)
  • 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)
  • Suppression de BaseTextField, qui était obsolète. Utilisez plutôt BasicTextField. (I71368)
  • 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)
  • Abandon des utilitaires emptyContent() et (@Composable () -> Unit).orEmpty(), qui n'ont plus d'effet positif sur les performances ni de valeur ajoutée. (I0484d)
  • Reclassement de snapshotFlow et withMutableSnapshot, qui ne sont plus en phase expérimentale. (I6a45f)
  • 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)
  • Changements de nom : UiSavedStateRegistry devient SaveableStateRegistry et AmbientUiSavedStateRegistry devient AmbientSaveableStateRegistry. Les deux ont été déplacés vers le package androidx.compose.runtime.saveable. (I30224)
  • 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)
  • Reclassement des classes Outline.*, qui ne sont plus des classes de données. (I4879e, b/178001427)
  • Suppression de view.captureToImage(), sans remplacement. (I7fcd2)
  • Introduction de l'API ColorMatrix, qui permet de modifier les valeurs RVB du contenu source. L'API ColorFilter a été refactorisée en interface afin de correspondre à l'implémentation de PathEffect. (Ica1e8)
  • Ajout du paramètre layoutDirection au createOutline de Shape. Cela permet de créer des formes sensibles à l'orientation de la mise en page. (I57c20, b/152756983)
  • Abandon de onImeActionPerformed. Utilisez KeyboardActions à la place. (If0bbd, b/179071523)
  • 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)
  • Suppression de canDrag de Modifier.scrollable. (Id66e7, b/175294473)
  • Changement de nom : LayoutCoordinates.parentCoordinates devient LayoutCoordinates.parentLayoutCoordinates, pour permettre l'ajout d'une propriété parentCoordinates. La propriété parentCoordinates propose désormais les LayoutCoordinates du modificateur parent. Cette approche élargit les cas d'utilisation de onSizeChanged() et onGloballyPositioned(). (Idfbfd, b/177926591)
  • Abandon de tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter et pressIndicaitonGestureFilter. Utilisez plutôt Modifier.clickable ou Modifier.pointerInput avec la fonction detectTapGestures. (I6baf9, b/175294473)
  • Suppression de unregisterProvider de SaveableStateRegistry. En remplacement, registerProvider() renvoie désormais l'objet SaveableStateRegistry.Entry, que vous pouvez utiliser pour la désinscription. (Ic4274, b/178583739)
  • Changement de nom : rememberSavedInstanceState() devient rememberSaveable(), et a été déplacé vers le package androidx.compose.runtime.saveable. (I1366e, b/177338004)
  • Suppression de CoreText et CoreTextField de l'API publique.
    • Suppression de la surcharge de SelectionContainer, devenue obsolète.
    • (I99c19)
  • Amélioration de la stabilité des tests dans lesquels Compose est utilisé dans des hiérarchies ajoutées/supprimées directement dans WindowManager. (Ie81ed, b/175765614)
  • 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)
  • Déplacement de Saver, listSaver(), mapSaver() et autoSaver depuis androidx.compose.runtime.savedinstancestate vers androidx.compose.runtime.saveable. (I77fe6)
  • Mise à jour des EditCommands, qui acceptent 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. (I4c3ea)
  • Suppression de Uptime et Duration. (Ib9bf4, b/177420019)
  • Déplacement de CompositionData.asTree() et des API associées vers un module ui-tooling-data distinct, avec marquage comme expérimentales. (Ic95b8)
  • Changement de nom : les paramètres de RounderCornerShape, CutCornerShape et CornerBasedShape ont été renommés de gauche-droite en début-fin, 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)
  • Refactorisation de l'API ciblée par le plug-in de compilation du compilateur 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 la fonction StringBuilder.deleteAt, rendue publique par inadvertance. (Id6ed9)

Correction de bugs

  • Mise à jour des ComposeViews placées dans des hiérarchies de vues qui sont l'enfant d'une autre composition, qui hébergent désormais les compositions enfants de leurs ancêtres. (I92883)
  • Mise à jour de l'API imageFromResource de Compose, afin de réutiliser le cache drawable de la ressource lors du chargement d'objets ImageBitmap. (If3627, b/178751994)

Version 1.0.0-alpha11

28 janvier 2021

Publication d'androidx.compose.ui:ui-*:1.0.0-alpha11. Liste des commits de la version 1.0.0-alpha11

Modifications apportées à l'API

  • Mise à jour de WithConstraints, retravaillé, remplacé par BoxWithConstraints et déplacé vers foundation.layout. (I9420b, b/173387208)
  • Abandon de Key.DPadUp. Utilisez Key.DirectionUp à la place. (Iab335, b/177954892)
  • Reclassement de l'interface Owner, désormais interne. (If8e35)
  • Ajout de l'API FocusManager.moveFocus(), pour permettre un déplacement programmatique de la sélection. (I045cb, b/177681839)
  • Mise à jour de PopupPositionProvider, afin d'utiliser des coordonnées relatives à la fenêtre plutôt que des coordonnées globales. Changements de nom : parentGlobalBounds devient anchorBounds et windowGlobalBounds devient windowSize: IntSize. (I2994a)
  • 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)
  • Ajout de AmbientSavedStateRegistryOwner, de manière semblable à AmbientLifecycleOwner et AmbientViewModelStoreOwner. (I9a3e8, b/176756365)
  • Mise à jour de l'API Vector Graphics pour permettre l'analyse des teintes appliquées à la racine des éléments graphiques vectoriels. (Id9d53, b/177210509)
  • Ajout de toolType à PointerInputChange pour différencier les appareils. (Iac787, b/175142755)
  • Changement de nom : AmbientWindowManager devient AmbientWindowInfo. (I2686a, b/177084714, b/177084983)
  • Abandon des méthodes de coordonnées globales, remplacées par de nouvelles méthodes de coordonnées relatives aux fenêtres. (Iee284)
  • Ajout de Modifier.toolingGraphicsLayer, qui introduit un modificateur de couche graphique lorsque l'inspection est activée. (I315df)
  • 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)
  • 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)
  • Mise à jour de la densité d'implémentation de GraphicsLayerScope pour prendre en charge la conversion des dp en pixels bruts. (Ied528, b/176819695)
  • Mise à jour de l'API Matrix, afin de suivre l'ordre des principales lignes et fournir des constantes d'index pour faciliter les conversions entre différentes représentations matricielles dans le but de correspondre à la logique de conversion du framework entre SkMatrix et Matrix4 en interne. (I432e6)
  • Suppression des méthodes expérimentales monotonicFrameAnimationClockOf. (Ib753f, b/170708374)
  • Déplacement de String.fintPrecedingBreak et String.fingFollowingBreak vers InternalTextApi. (I657c4)
  • Suppression de androidx.compose.ui.util.isSurrogatePair de l'API publique. (Ia9494)
  • Changement de nom : TransformedText.transformedText devient TransformedText.text.
    • Reclassement de TransformedText, qui n'est plus une classe de données. (Ie672a)
  • Suppression de data class des classes suivantes :
    • InlineTextContent
    • LocaleList (I605c7)
  • Reclassement des classes suivantes, qui ne sont plus des classes de données :
    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • FontWeight
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput (Iaff99)
  • Remplacement de VisualTransformation par une interface fonctionnelle. (I3bba4)
  • Ajout d'un type de paramètre de référence de fonction. (I5e1bd)
  • Ajout de limites transformées à InspectorNode. (Ice42f)

Correction de bugs

  • Abandon des propriétés onCommit, onDispose et onActive, remplacées par les API SideEffect et DisposableEffect. (If760e)
  • 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)

  • Ajout du paramètre de description du contenu à Image et Icon, utilisé pour fournir la description aux services d'accessibilité. (I2ac4c)

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

  • Mise à jour de OnSizeChanged, qui rapporte désormais la taille à sa position actuelle dans la chaîne de modificateurs au lieu de la taille du contenu de la mise en page. (I36b78, b/177562900)

  • Abandon de l'API emit() et de toutes ses surcharges, renommées ComposeNode. Les API sont identiques, mais portent un nom différent afin de respecter les conventions de Compose. (I4137b)

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

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

  • Abandon des opérations arithmétiques entre deux ou plusieurs TextUnits. Abandon des fonctions TextUnit.Sp et TextUnit.Em, à remplacer par des fonctions d'extension telles que Int.sp et Int.em. (I48369)

  • Les ressources de bibliothèques ne comportant pas de ressources publiques explicitement déclarées (par exemple, via public.xml) sont désormais privées par défaut. (Ia1dcc, b/170882230)

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

  • Veuillez utiliser ImeAction.None au lieu de ImeAction.NoAction.

    • Veuillez utiliser ImeAction.Default au lieu de ImeAction.Unspecified (Ie1bcc)
  • Mise à profit de TestCoroutineDispatcher dans les tests. (I532b6)

  • Changement de nom : TextInputService.onStateUpdated devient updateState. (Id4853)

  • Abandon de la transition basée sur TransitionDefinition. (I0ac57)

  • Suppression de TextUnitType.Inherit. Utilisez TextUnitType.Unspecified à la place. (I9ff64)

Version 1.0.0-alpha10

13 janvier 2021

Publication d'androidx.compose.ui:ui-*:1.0.0-alpha10. Liste des commits de la version 1.0.0-alpha10

Modification destructive

  • La restructuration de l'API de compilation interne permet de regrouper les modifications apportées aux nœuds générés par la composition dans la phase "Appliquer les modifications" de la composition, une fois terminée l'exécution de toutes les fonctions @Composable.

    Cette modification de comportement est potentiellement destructive pour le code de l'application, car les nœuds ne sont plus disponibles depuis les API internes et expérimentales tant que les modifications n'ont pas été appliquées. Pour contourner ce problème, vous pouvez généralement entourer le code de dépendances dans un composable SideEffect et différer son exécution jusqu'à ce que les nœuds aient été créés et initialisés. (I018da)

Modifications apportées à l'API

  • Ajout de Modifier.focusOrder() permettant de spécifier un ordre de sélection personnalisé. (I90cf5, b/175899543, b/170155556, b/170155429)
  • Suppression de focusObserver, devenu obsolète. Utilisez onFocusChanged ou onFocusEvent à la place. (I3ecb9, b/175156387)
  • 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)
  • Suppression de PxSquared, PxCubed, PxInverse, qui n'étaient pas utilisés. Reclassement de Size.center(), qui devient une propriété. (I973f7)
  • Mise à jour du module ui-test, qui permet désormais de configurer la création de recomposeurs pour les UI testées. (Ibebd8)
  • 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)
  • Changement de nom : Color.useOrElse() devient Color.takeOrElse(). (Ifdcf5)
  • Suppression des classes DpInverse, DpSquared et DpCubed, qui n'étaient pas utilisées. (I4d62b)
  • Changement de nom : Constraints#satisfiedBy devient isSatisfiedBy. (I9cf5c)
  • Ajout d'un rappel pour notifier Owner lorsque les limites de layoutnode changent. (I72fd1)
  • Ajout des propriétés isSpecified, isUnspecified et useOrElse pour les classes inline dont la constante est Unspecified. (I93f7b, b/174310811)
  • Développement des API [Abstract]ComposeView pour permettre le recyclage des vues basées sur Compose, en supprimant leur composition pour la recréer ultérieurement. Ajout d'API pour installer et découvrir les recomposeurs délimités dans la fenêtre, et de CompositionReferences pour créer des compositions enfants.

    Ajout de ViewCompositionStrategy pour configurer la stratégie de suppression des compositions de [Abstract]ComposeViews. Le comportement par défaut consiste à supprimer lorsque la fenêtre est détachée. (I860ab)

  • Suppression de l'API publique Any.identityHashCode(). (I025d7)

  • Suppression de l'API toStringAsFixed, à remplacer par l'utilisation directe de String.format. (Iaba6b)

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

  • Introduction d'une propriété Outline.bounds pour obtenir le rectangle de délimitation pour différentes implémentations de contour. (I16e74, b/175093504)

  • Abandon de TestUiDispatcher. Utilisez Dispatchers.Main à la place. (Ic171f, b/175385255)

  • 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)
  • Changement de nom : Position devient DpOffset. Suppression de getDistance(). (Ib2dfd)

  • Mise à jour de la fonction Dp.isFinite(), qui devient une valeur Dp.isFinite. (I50e00)

Correction de bugs

  • Mise à jour du recomposeur, qui expose désormais un flux de son état actuel, permettant de surveiller son activité et celle des effets associés. (Ifb2b9)
  • Mise à jour du keyEvent natif, désormais accessible via keyEvent.nativeKeyEvent. (I87c57, b/173086397)
  • 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)
  • 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)

Version 1.0.0-alpha09

16 décembre 2020

Publication d'androidx.compose.ui:ui-*:1.0.0-alpha09. Liste des commits de la version 1.0.0-alpha09

Modifications apportées à l'API

  • Abandon de KeyEvent.Alt. Utilisez KeyEvent.isAltPressed à la place. (Idd695)
  • Abandon de Modifier.keyInputFilter et Modifier.previewKeyInputFilter. Utilisez Modifier.onKeyEvent et Modifier.onPreviewKeyEvent à la place. (Idbf1b, b/175156384)
  • Abandon de Modifier.focusObserver. Utilisez Modifier.onFocusChanged or Modifierou .onFocusEvent à la place. (I30f17, b/168511863, b/168511484)
  • Changement de nom : pour suspendre les API d'entrée de pointeur, renommés HandlePointerInputScope devient AwaitPointerEventScope et handlePointerInput() devient awaitPointerEventScope(). (Idf0a1, b/175142755)
  • 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)
  • Suppression des événements personnalisés ont été supprimés de l'API de suspension des entrées du pointeur. (Ia54d5, b/175142755)
  • Introduction de plusieurs fonctions dans SelectionRegistrar. Changement de nom : onPositionChange devient notifyPositionChange. (Ifbaf7)
  • Marquage d'autres membres de LayoutNode comme internes. (I443c6)
  • Introduction de LayoutInfo, destiné à être utilisé par les outils et pour les tests. (I9b190)
  • Reclassement de AndroidOwner, désormais interne. (Ibcad0, b/170296980)
  • Suppression de l'annotation ExperimentalPointerInput. (Ia7a24)
  • Ajout d'un système de défilement imbriqué. Reportez-vous à Modifier.nestedScroll pour en savoir plus. (I36e15, b/162408885)
  • Reclassement de subcomposeInto(LayoutNode), désormais interne. (Id724a)
  • 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().

    Une interface Applier 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 Applier 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 des propriétés dismissOnBackPress et dismissOnClickOutside aux AndroidDialogProperties. Ces propriétés permettent de configurer le moment où le lambda onDismissRequest de la boîte de dialogue est appelé. (If5e17)

  • 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 de Modifier.clearAndSetSemantics pour effacer la sémantique des descendants et en définir une nouvelle. (I277ca)

  • Déplacement de ContentDrawScope vers le module ui-graphics, où se trouve DrawScope. (Iee043, b/173832789)

  • Introduction de l'API PathEffect pour éléments graphiques, permettant de fournir différents motifs aux formes tracées. Abandon de NativePathEffect, à remplacer par l'implémentation attendue/réelle de PathEffect. (I5e976, b/171072166)

  • Ajout des interfaces IdlingResource à Compose, en tant que variante compatible avec les ressources d'inactivité d'Espresso. Elles peuvent être inscrites ou désinscrites via ComposeTestRule. (I433f3)

  • Suppression de l'inscription/désinscription globale de ComposeIdlingResource et des horloges dans ComposeIdlingResource. (I32660)

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 LazyColumnFor, LazyRowFor, LazyColumnForIndexed et LazyRowForIndexed. Utilisez LazyColumn et LazyRow à la place. (I5b48c)

  • Abandon de BuildCompat.isAtLeastR. (Idb37e)

  • Ajout d'une fonction de fabrique buildAnnotatedString pour créer une AnnotatedString. Abandon de la fonction de constructeur annotatedString. (Idfe0b)

  • Suppression des méthodes d'extension sur Float et Double pour convertir les valeurs en radians. Conversion en fonction privée dans l'implémentation PathParser, seul endroit où elles étaient utilisées. (I25f52)

Version 1.0.0-alpha08

2 décembre 2020

Publication d'androidx.compose.ui:ui-*:1.0.0-alpha08. Liste des commits de la version 1.0.0-alpha08

Modifications apportées à l'API

  • Ajout d'une action sémantique Dismiss. (I2b706)
  • 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)
  • Ajout de méthodes placeable.placeWithLayer() et placeable.placeRelativeWithLayer(), qui permettent aux mises en page personnalisées et aux modificateurs de mise en page de positionner un enfant en introduisant une couche graphique pour son dessin. Cette approche permet d'optimiser les dessins en premier lieu, ce qui évite de devoir redessiner le contenu des enfants devant être déplacés, puis appliquer des transformations de dessin à l'enfant. (Ibd8f6, b/170296989, b/171493718, b/173030831)
  • Suppression de <T> de la déclaration de SubcomposeLayout. Vous pouvez désormais l'utiliser sans spécifier de type. (Ib60c8)
  • Ajout des API Modifier.scale/rotate pour plus de commodité avec drawLayer.
    • Changement de nom : Modifier.drawOpacity devient Modifier.alpha.
    • Changement de nom : Modifier.drawShadow devient Modifier.shadow. (I264ca, b/173208140)
  • 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)
  • 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)
  • Mise à jour de l'API TransformOrigin pour adopter une syntaxe de déstructuration renvoyant pivotFractionX et pivotFractionY en tant que component1 et component2. (If43c4, b/173586560)
  • 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)
  • Ajout d'une API pour vérifier si les touches de modification (Alt, Ctrl, Meta ou Maj) étaient pressées lorsqu'un événement keyevent a été déclenché. (I50ed9)
  • Ajout d'une surcharge Modifier.drawLayer(). Elle utilise un bloc lambda sur une nouvelle GraphicsLayerScope où vous définissez les paramètres de couche de manière à éviter la recomposition et la remise en page lorsque le changement d'état se produit. Reclassement de DrawLayerModifier, désormais interne, pour préparer la migration de sa logique vers la méthode placeable.placeWithLayer() de LayoutModifier. (I15e9f, b/173030831)
  • 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)
  • Déplacement de androidx.compose.ui.text.Typeface vers androidx.compose.ui.text.font.Typeface. (Ic2b81)
  • Changement de nom : l'argument sémantique mergeAllDescendants devient mergeDescendants. (Ib6250)
  • Ajout d'un détecteur de gestes glissés qui suspend l'API d'entrée du pointeur, y compris le verrouillage de l'orientation. (Icef25)
  • Changement de nom : VectorAsset devient ImageVector ; déplacement de VectorAsset vers Builder en tant que classe interne de 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)
  • Ajout d'un paramètre zIndex pour place() de PlacementScope, de sorte que Modifier.zIndex() fonctionne désormais comme un LayoutModifier. Cette option permet à toute mise en page personnalisée de définir des zIndex pour ses enfants, directement dans le bloc de positionnement. (I711f7, b/171493718)
  • Déplacement des propriétés sémantiques de Foundation vers UI. (I6f05c)
  • Abandon de place(Offset) et placeRelative(Offset). Utilisez des surcharges avec des décalages entiers à la place. (I4c5e7)
  • Suppression des API précédemment abandonnées. Modifier.onPositioned a été supprimé. Utilisez Modifier.onGloballyPositioned à la place. Modifier.onDraw a été supprimé. Utilisez Modifier.onDrawBehind à la place. Modifier.plus a été supprimé. Utilisez Modifier.then à la place. Color.Unset a été supprimé. Utilisez Color.Unspecified à la place. La classe PxBounds a été supprimée. Utilisez Rect à la place. (Ie9d02, b/172562222)
  • Mise à jour de l'interface Alignment, désormais fonctionnelle. (I46a07, b/172311734)
  • 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)
  • Changement de nom : dans LayoutIdParentData, id devient layoutId. Measurable.id devient Measurable.layoutId. (Iadbcb, b/172449643)
  • 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)
  • Introduction des API SweepGradientShader et SweepGradientBrush. (Ia22c1)
  • Reclassement du contrôle du temps dans les tests (TestAnimationClock et ses utilisations), désormais expérimental. (I6ef86, b/171378521)
  • 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 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)

  • Ajout d'implémentations par défaut des méthodes et des propriétés dans AnimationClockTestRule, qui peuvent être déléguées à son clock. (I7ea3d, b/173399709)

  • Mise à jour de AndroidComposeTestRule, qui accepte désormais les lanceurs d'activités personnalisés. (Ib8288, b/153623653, b/154135019)

  • Abandon de TextLayoutResult.getLineVisibleEnd. En remplacement, un paramètre visibleEnd a été ajouté à TextLayoutResult.getLineEnd. (I73282)

  • 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)
  • Prise en charge de TtsAnnotation pour le moteur de synthèse vocale. (I54cc6)

  • Ajout d'API pour l'exécution d'animations dans des coroutines. (Ied662)

Correction de bugs

  • 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 d'un paramètre resetInput à TextInputService#onStateUpdated. (I3e8f5, b/172239032, b/171860947)
  • Ajout d'une vérification lint pour les paramètres de modificateur dans les fonctions modulables. Cette vérification lint permet de contrôler la cohérence du nom, du type renvoyé, de la valeur par défaut et de l'ordre du paramètre avec les consignes Compose. (If493b)
  • Ajout d'une option temporaire permettant à TestAnimationClock d'être dirigé par MonotonicFrameClock. (I1403b, b/173402197)
  • 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 fonctions de fabrique de modificateurs sont définies comme des extensions sur modificateur, de sorte qu'elles puissent être enchaînées de façon fluide. (I07981)
  • Suppression de l'ancien module ui-test et ses bouchons. (I3a7cb)
  • Mise à jour de Recomposer, qui n'accepte plus EmbeddingContext. Les dépendances de planification requises sont obtenues à partir de effectCoroutineContext. Abandon de FrameManager. Les intégrations de plate-forme doivent initialiser leur propre gestion globale des captures instantanées. (I02369)
  • Transmission des informations de style au nœud d'accessibilité. (If5e8d)
  • Changement de nom : TextUnit.Inherit devient TextUnit.Unspecified pour plus de cohérence avec les autres unités. (Ifce19)

Compose UI version 1.0.0-alpha07

11 novembre 2020

Publication d'androidx.compose.ui:ui-*:1.0.0-alpha07. Liste des commits de la version 1.0.0-alpha07

Modifications apportées à l'API

  • 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)
  • Ajout de fabriques BiasAlignment et BiasAbsoluteAlignment permettant de créer des alignements. (Iac836, b/169406772)
  • Ajout d'une option permettant aux développeurs de forcer la désélection. (I90372)
  • Correction d'un bug qui empêchait de tracer l'élévation pour les vues dans Compose. (If7782)
  • Création d'une API onDrawBehind dans ContentDrawScope, pour correspondre à la convention de noms utilisée dans Modifier.drawBehind. (I4fc3a, b/171955269)
  • Prise en charge de la distance de caméra pour compléter les transformations 3D rotationX/rotationY les API Layers. (I40213, b/171492100)
  • Ajout de SelectionContainer sans le rappel. (Ibfadb)
  • Suppression de l'annotation ExperimentalSubcomposeLayoutApi. SubcomposeLayout peut désormais être utilisé sans ajouter @OptIn. (I708ad)
  • Déplacement de FirstBaseline et LastBaseline vers le package androidx.compose.ui.layout. (Ied2e7)
  • Suppression de l'opacité du modificateur drawShadow, qui était source de confusion. (I82c62, b/171624638)
  • 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)
  • Suppression de FocusState2, devenu obsolète. (I686cb, b/168686446)
  • Reclassement de ZIndexModifier, désormais interne. (I1808b, b/171493718)
  • Mise à jour du type renvoyé par la méthode lerp sur les paramètres Size, afin de renvoyer une taille non nulle et d'éviter le boxing inutile. (Ib0044)
  • Ajout de TestMonotonicFrameClock pour tester le code s'appuyant sur MonotonicFrameClock de Compose pour les événements de frame de composition en attente à l'aide de kotlinx-coroutines-test's runBlockingTest. (I4402f)
  • Suppression de GestureScope.localToGlobal. (I15299, b/171462785)
  • Ajout de l'outil de recherche onAllNodesWithSubstring. (I81dd7, b/171462889)
  • Abandon du module androidx.ui.test. Veuillez migrer vers androidx.compose.ui.test et androidx.compose.ui.test.junit4. (I452e8)

Correction de bugs

  • Déplacement de captureToBitmap vers captureToImage. (I86385)
  • 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)
  • Mise à jour de TextFields, qui accepte désormais KeyboardOptions. (Ida7f3)
  • Changement de nom : KeyboardOptions devient ImeOptions. (I82f36)
  • Déplacement de KeyboardType et ImeAction vers KeyboardOptions. (I910ce)
  • Ajout de provideDefault comme alternative pour fournir des Ambients. Cette option peut être utilisée pour spécifier des valeurs d'Ambient qui ne seront définies que si aucune valeur n'a été fournie précédemment. (Id6635, b/171024925)
  • Abandon de BaseTextField. Utilisez plutôt BasicTextField. (I896eb)
  • Introduction du module ui-test-junit4. (Ib91f8)
  • 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)
  • Changement de nom : LaunchedTask devient LaunchedEffect, pour plus de cohérence avec les API SideEffect et DisposableEffect. Afin d'encourager les bonnes pratiques, LaunchedEffect n'est pas autorisé sans paramètre d'objet. (Ifd3d4)
  • Introduction de ressources composables qui se recomposent lorsque la configuration est mise à jour. (I6387c, b/167352819)
  • Mise à jour du recomposeur, qui nécessite désormais un CoroutineContext pour la construction. (Ic4610)
  • Application de la somme des valeurs zIndex en présence de plusieurs Modifier.zIndex(). Auparavant, seule la première valeur était appliquée. (Ic514c, b/170623936)
  • Modification de l'implémentation interne de SlotTable. Ces changements ne devraient pas affecter l'API publique. (If9828)
  • Ajout de l'option IME de correction automatique de la saisie clavier. (I57b8d)
  • Déplacement de androidx.ui.test vers androidx.compose.ui.test. (I9ffdb)
  • Suppression de KeyboardOptions.toImeOptions de l'API publique. (Ic2e45)

Contribution externe

  • Désactivation de la publication de l'artefact interne androidx.compose.ui:ui-text-android. (Ib93fa)

Version 1.0.0-alpha06

28 octobre 2020

Publication d'androidx.compose.ui:ui-*:1.0.0-alpha06. Liste des commits de la version 1.0.0-alpha06.

Modifications apportées à l'API

  • Reclassement de Recomposer, désormais une CompositionReference et un parent de composition valide. Le nombre d'emplacements exigeant un Recomposer explicite a été réduit. (I4036f)
  • 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)
  • Mise à jour de l'API Modifier.drawWithCache pour exposer ContentDrawScope en tant que champ d'application receveur (au lieu de DrawScope), afin de permettre aux implémentations de réorganiser les commandes de dessin. Cette option est utile pour combiner ou teinter, lorsque les pixels de contenu doivent être affichés en premier pour que l'algorithme de mode de combinaison correspondant soit appliqué correctement. (Ie7ec8)
  • Déplacement de SimpleContainer vers PopupTestUtils.kt. (I78c57)
  • Reclassement de ConsumedData, qui n'est plus une classe de données. Pour en savoir plus, consultez la page https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219. (I1737f)
  • Correction du positionnement du handle Rtl. (I6e1e0)
  • Refactorisation de DrawScope et ContentDrawScope, qui deviennent des interfaces au lieu de classes abstraites.
    • Création d'une implémentation CanvasDrawScope de DrawScope.
    • Refactorisation des implémentations de DrawScope pour utiliser CanvasScope à la place.
    • Création de DrawContext pour encapsuler les dépendances de DrawScope.
    • Suppression des méthodes obsolètes sur DrawScope. (I56f5e)
  • 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)
  • Reclassement des champs MeasureScope et IntrinsicMeasureScope, désormais interfaces. (I1a087, b/170461665)
  • Masquage de la fonction de fusion pour AlignmentLine. (I9da1a, b/170612900, b/170611568)
  • 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 SelectAll dans le menu de sélection. (Ief02b)
  • Mise à jour de DrawTransform.rotate afin d'accepter un paramètre par défaut de pivot du centre au centre, conformément à la documentation.
    • Mise à jour de DrawScope.rotateRad, afin de consommer un Offset décalant le point de pivot, de manière cohérente avec les autres méthodes de transformation.
    • Abandon de la surcharge DrawScope.rotateRad qui consommait les Floats pour les coordonnées X et Y du point de pivot.
    • (Iffcbb, b/170434992)

Correction de bugs

  • Prise en charge de la vérification lint de l'API pour MissingGetterMatchingBuilder sous AndroidX. (I4bbea, b/138602561)
  • Ajout d'un test. (I6b8ae)
  • Prise en charge des transitions dans ComposeTestRule. L'option permettant d'activer le curseur clignotant dans ComposeTestRule a été supprimée. (If0de3)
  • Ajout de l'option IME KeyboardCapitalization. (I8ac38)
  • Ajout d'une option de clavier sur une seule ligne à CoreTextField. (I72e6d)
  • Déplacement de SimpleContainer vers PopupTestUtils.kt. (I65c3e)
  • 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)
  • Amélioration de l'interopérabilité Android : les MotionEvents continuent d'être envoyés aux vues Android enfants qui renvoient la valeur "false" pour onTouchEvent pour toutes les actions sauf ACTION_DOWN. (I94c5a, b/170320973)
  • Conversion de Box en fonction inline. (Ibce0c, b/155056091)

Contribution externe

  • Prise en charge des variantes de paramètres régionaux pour AnnotatedString.capitalize et AnnotatedString.decapitalize. (I4aa7f)

Version 1.0.0-alpha05

14 octobre 2020

Publication d'androidx.compose.ui:ui-*:1.0.0-alpha05. Liste des commits de la version 1.0.0-alpha05

Modifications apportées à l'API

  • Ajout d'une DSL pour spécifier les informations de l'outil d'inspection. (Ic9a22)
  • Déplacement de LongPress vers Text. (Iff2bc)
  • Ajout d'un modificateur de suspension d'entrée Modifier.pointerInput expérimental. (Ia77d2)
  • Ajout d'actions d'accessibilité pour copier, coller et couper. (I6db4f)
  • Suppression du constructeur public pour AndroidOwner. (Iacaef)
  • Mise à jour des fenêtres pop-up et boîtes de dialogue, qui héritent désormais FLAG_SECURE de la fenêtre parente. Ajout d'une option permettant de configurer cela explicitement. (I64966, b/143778148, b/143778149)
  • Mise à jour des données de consommation, désormais modifiables. De plus, les appels des fonctions d'extension qui effectuent la consommation ne renvoient plus de nouveau PointerInputChange, mais modifient le PointerInputChange fourni.

    Ce changement est la première des deux étapes d'un processus visant à rendre les données PointerEvent modifiables tout en empêchant les autres données de pointeur d'être modifiées par le code utilisateur. La deuxième étape consiste à supprimer le type renvoyé List<PointerInputChange> de PointerInputFilter.onPointerEvent(...). (Id067e)

  • Désactivation de Selection dans Text, avec une démo. (Ie7e97)

  • Conversion de onGloballyPositioned en fonction Inline. (I15830)

  • Changement de nom : OnPositionedModifier devient OnGloballyPositionedModifier et onPositioned() devient onGloballyPositioned(). (I587e8, b/169083903)

  • Ajout de la propriété hasPendingMeasureOrLayout à Owner, indiquant si des tâches de mise en page sont en attente dans Owner. (I3d9f8, b/169038599)

  • Ajout d'une API permettant de programmer la désélection. (Ie1dc2, b/161487952)

  • Suppression de PointerInputFilter.onPointerInput(...). Utilisez PointerInputFilter.onPointerEvent(...) à la place. (I6f04a)

  • Modifications apportées à Size :

    • Suppression de Size.getFlipped.
    • Suppression de Size.rem.
    • Suppression de Size.truncDiv. (Ief44d, b/169790720)
  • 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)

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

  • Changement de nom : dans AnnotatedString.Builder.addStringAnnotation, le paramètre "scope" devient "tag" pour assurer la cohérence de l'API. (I7c8cb)

Correction de bugs

  • Amélioration des performances de défilement de LazyColumn/Row grâce à une réduction de la charge de sous-composition pour chaque défilement. Ajout d'une nouvelle méthode hasInvalidations() à la classe Composition. La méthode hasPendingChanges() de Recomposer a été renommée hasInvalidations(). (Ib2f32, b/168293643, b/167972292, b/165028371)
  • 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)
  • Mise à jour des mises à en page personnalisées : l'ordre des appels place() y définit désormais l'ordre de dessin des éléments enfants. (Ibc9f6)
  • Prise en charge de la conversion de AnnotatedString en SpannableString pour améliorer l'accessibilité. (Ief907)
  • Ajout de bouchons pour les classes Android sur d'anciennes plates-formes afin d'éviter d'utiliser la réflexion lorsque cela est possible. (Ia1790)
  • Correction d'un bug qui faussait les coordonnées d'entrée du pointeur lorsque l'affichage du clavier virtuel entraînait la traduction de l'application. (Ic4cec, b/163077821)

Version 1.0.0-alpha04

1er octobre 2020

Publication d'androidx.compose.ui:ui-*:1.0.0-alpha04. Liste des commits de la version 1.0.0-alpha04

Modifications apportées à l'API

  • Ajout de OwnerScope pour permettre la collecte des champs d'application d'observation de la mise en page et du dessin lorsqu'ils ne sont plus valides. (Ic4cf8)
  • Ajout de OnRemeasuredModifier et onSizeChanged() afin de recevoir un rappel lorsque la mise en page du contenu a été re-mesurée et que la taille a changé, respectivement. (I657cf, b/154108792)
  • Ajout d'une action sémantique de clic long. (I6281b, b/156468846)
  • Reclassement de FocusManager, désormais privé. (I7872f)
  • Mise à jour de l'implémentation, afin de créer une implémentation DrawCacheModifier dédiée au lieu d'ajouter des propriétés facultatives sur DrawModifier.

    Mise à jour de la documentation pour différentes méthodes. (Ibd166)

  • Conversion de TextRange en inline pour éviter la création d'objets. (Id034b)

  • Mise à jour de PlacementScope#parentWidth and PlacementScope#parentLayoutDirection, qui ne peuvent plus être lus depuis le bloc de positionnement d'une mise en page personnalisée. (Icc1ae, b/168295623)

  • Ajout de AccessibilityScrollState aux propriétés sémantiques. (Ifeda9)

  • Introduction de Modifier.drawWithCache, permettant de créer des objets de dessin qui recréent de manière conditionnelle les dépendances basées sur des informations de taille ou d'état. (I376dc)

  • Suppression de ParagraphConstraints. La largeur est désormais transmise directement à Paragraph. (Ica712)

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)
  • Abandon de foundation.Box. Utilisez foundation.layout.Box à la place. (Ie5950, b/167680279)
  • Changement de nom : Stack devient Box. L'ancienne version de Box est 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)
  • 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)
  • Annotation de rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled et textInputServiceFactory avec @VisibleForTesting, pour les reclasser en API interne et masquer leur kdoc. (I554eb, b/168308412)
  • Suppression du SelectionContainer de Top pour désactiver la sélection par défaut et éviter un comportement inattendu. À la place, vous pouvez utiliser un sélecteur SelectionContainer de manière spécifique pour encapsuler le contenu qui doit être sélectionnable. (I8dfe0, b/158459594)

Version 1.0.0-alpha03

16 septembre 2020

Publication d'androidx.compose.ui:ui-*:1.0.0-alpha03. Liste des commits de la version 1.0.0-alpha03

Modifications apportées à l'API

  • Suppression des actions sémantiques de défilement vers l'avant/arrière. Ajout d'étapes dans AccessibilityRangeInfo. (Ia47b0)
  • Suppression de onInvalidate() de Owner. OwnedLayer gère l'invalidation. (Ica72b, b/162061312)
  • Suppression des méthodes d'opérateur dans l'API Size qui consomment des paramètres Offset. Le résultat de ces opérations est incertain et leur type est inattendu. Exemple : la combinaison size-offset devrait-elle renvoyer un décalage ou une taille résultante intégrant la différence ?

    Nous avons également supprimé les méthodes obsolètes de la classe Size. (Iec902, b/166514214)

Correction de bugs

  • Correction d'un problème d'affichage des éléments de LazyColumn, qui provoquait également des plantages dans certaines conditions. (Ibcf17, b/163066980, b/165921895)
  • Abandon de DpConstraints des APIs qui l'utilisaient. (I90cdb, b/167389835)
  • Déplacement de createAndroidComposeRule et AndroidInputDispatcher, de androidx.ui.test.android vers androidx.ui.test. (Idef08, b/164060572)
  • Changement de nom : les usages de la gravité ont été renommés "align" ou "alignment" dans les API Layout. (I2421a, b/164077038)
  • Ajout de onNode et d'autres méthodes globales sur ComposeTestRule, car les méthodes globales actuelles vont être abandonnées. (Ieae36)

Version 1.0.0-alpha02

2 septembre 2020

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

Modifications apportées à l'API

  • Suppression d'un rappel qui notifiait Owner lorsque les limites de layoutnode étaient modifiées. (If654e, b/166106882)
  • Prise en charge des paramètres filltype dans les chemins de graphiques vectoriels afin de permettre la découpe de formes conformément aux règles de remplissage des chemins evenOdd ou NonZero. (I43dd2)
  • Conversion de Uptime et Velocity en classes inline. (I48f4a)
  • Conversion de Duration en classe inline. (I565eb)
  • Ajout d'un rappel pour notifier Owner lorsque les limites de layoutnode changent. (Ic40b3)
  • Résolution d'un problème de séquence de création : le constructeur d'une fonction Rect avec Offset et Radius créait le rectangle dans l'ordre gauche, droite, haut, bas au lieu de l'ordre gauche, haut, droite, bas.

    Suppression des méthodes associées à Rect, devenues obsolètes, à remplacer par des constructeurs de fonction.

    Ajout de tests pour valider les méthodes dans Rect.kt. (I08460, b/165822356)

Correction de bugs

  • Ajout de MutableRect, un rectangle qui peut être modifié. (I71bd2, b/160140398)
  • Remplacement de Matrix4 par Matrix. Toutes les autres parties du package vectormath ont été supprimées. (Ibd665, b/160140398)
  • Mise à jour de la convention d'appel des fonctions modulables. Ce changement constitue une modification destructive de la compatibilité binaire. Toutes les bibliothèques doivent être recompilées pour fonctionner avec cette version du plug-in de compilation de Compose.

    Ce changement ne constitue pas une modification destructive de la compatibilité au niveau source, car les seules API qui ont été modifiées sont des API de compilation avec activation explicite. (I7afd2, b/158123185)

  • Correction d'un plantage qui pouvait survenir lorsque la distribution vers un PointerInputFilter pouvait simultanément entraîner la suppression de ce PointerInputFilter. (I58f25)

Version 1.0.0-alpha01

26 août 2020

Publication d'androidx.compose.ui:ui-*: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.ui:ui-*:0.1.0-dev17. Liste des commits de la version 0.1.0-dev17

Modifications apportées à l'API

  • Abandon de emitView. Si possible, utilisez plutôt AndroidView pour émettre des vues dans Compose. Notez que la composition directe de Views et ViewGroups ne sera pas prise en charge, sauf s'il s'agit de nœuds externes (leaf) dans l'arborescence de composition, lorsque cela est possible en utilisant AndroidView. (I29b1e, b/163871221)
  • Abandon de FocusState2, remplacé par FocusState. (Ia8b79, b/160822876, b/160923332)
  • Suppression des surcharges AndroidView, devenues obsolètes. (I946b9, b/163802393)
  • Les émissions personnalisées peuvent désormais déclarer qu'un ou plusieurs setters peuvent être ignorés et recomposés indépendamment de l'émission. (Ibbd13)
  • Reclassement des classes Vector, qui ne sont plus des classes de données, car la même instance d'objet est utilisée pour la composition.

    Ajout de l'indicateur mutableStateOf pour VectorPainter, afin de redessiner de façon conditionnelle si le contenu du Vector change.

    Refactorisation de l'instance VectorComponent pour l'intégrer à VectorPainter, car elle est réutilisée dans les différentes compositions.

    Mise à jour de GroupComponent et PathComponent, dont les champs de nom sont désormais modifiables. (Ieae45, b/151378808)

  • Suppression de onChildPositioned et OnChildPositionedModifier. Les développeurs doivent utiliser onPositioned et OnPositionedModifier à la place de la mise en page enfant. (I4522e, b/162109766)

  • Conversion de Offset en classe inline. (Iaec70)

  • Ajout d'un paramètre de modificateur à SelectionContainer. (I4aada, b/161487952)

  • Suppression de FocusModifier, devenu obsolète. (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)

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

  • Conversion de Constraints en classe inline. (I88736)

  • Ajout de FocusManager, qui déplace la logique de sélection commune hors de AndroidComposeView. (I528ef, b/161487952, b/162206799)

  • Mise à jour des noms de PointerEventPass pour la version alpha. (Ifda6f)

  • Conversion de IntOffset en classe inline. (Iac0bf)

  • Conversion de IntSize en classe inline. (I2bf42)

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

  • Mise à jour de AlertDialog, qui utilise désormais FlowRow pour les boutons. (I00ec1, b/161809319, b/143682374)

  • Reclassement de certains utilitaires de test rendus non publics, car leur emplacement est incorrect. Ces éléments seront à nouveau rendus publics à l'avenir. (I32ab1)

  • Refactorisation de l'organisation du code d'entrée du pointeur. (Ie3f45)

  • Abandon de PxBounds, à remplacer par Rect. Mise à jour de toutes les utilisations de PxBounds avec remplacement par Rect et ajout des abandons/remplacements appropriés avec leurs annotations pour faciliter la migration. (I37038, b/162627058)

  • Suppression de KeyEvent2, devenu obsolète. Utilisez KeyEvent à la place. (Ied2d0, b/162097587)

  • KeyEvent comporte une propriété Unicode qui peut être utilisée pour obtenir le caractère Unicode généré par la combinaison des états des touches standard et méta spécifiées. (If3afc)

  • Conversion de l'événement personnalisé DelayUp et des classes associées en API avec activation, car il est très probable qu'ils soient modifiés. (I56d6f)

  • Suppression de deux PointerEventPass qui ne sont plus nécessaires. (I3dd9d)

  • Ajout des paramètres color, shadow et TextDecoration à Paragraph.paint. Cette fonction permet d'éviter une recréation inutile de Paragraph. (I81689)

Correction de bugs

  • 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 des appels FrameManager, devenus obsolètes.

    Mise à jour des API Compose internes pour réduire la charge nécessaire pour suivre des objets d'état tels que mutableStateof(). (I80ba6)

  • Suppression de VerticalScroller and HorizontalScroller. Utilisez ScrollableColumn/Row à la place. Suppression de Modifier.drawBackground. Utilisez Modifier.background à la place. (I73b0d, b/163019183)

  • Correction d'un plantage qui survenait lorsqu'un élément qui enregistre l'état était utilisé dans la boucle "for". Il est désormais possible d'utiliser la même clé dans savedInstanceState(). L'API de UiSavedStateRegistry a été ajustée pour répondre à cette nouvelle exigence. (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)

  • 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 fonctions similaires ont été créés et les constructeurs de fonction RRect ont été supprimés. (I5d325)

Version 0.1.0-dev16

5 août 2020

Publication d'androidx.compose.ui:ui-*:0.1.0-dev16. Liste des commits de la version 0.1.0-dev16

Modifications apportées à l'API

  • Abandon de OnChildPositioned. Utilisez OnPositioned sur l'enfant à la place. (I87f95, b/162109766)
  • Abandon de setViewContent, à remplacer par setContent. (I7e497, b/160335130)
  • Ajout de l'API AndroidViewBinding pour gonfler et composer des ressources de mise en page (basé sur ViewBinding). (I081c6)
  • Remplacement de KeyEvent2 par KeyEvent. (I2d770, b/162097585)
  • Prise en charge de la touche matérielle Alt. (I9036b)
  • Abandon de FocusManager. Utilisez Modifier.focus(), Modifier.focusObserver() et Modifier.focusRequester() à la place. (I74ae4, b/162211322)
  • Prise en charge des attributs trimPath par loadVectorResource. (I808fe)
  • Déplacement de Dialog vers UI. (I47fa6)
  • Suppression de deux PointerEventPass qui ne sont plus nécessaires. (I33ca7)
  • Implémentation de PointerInteropModifier, qui permet de recevoir des MotionEvents et d'interagir avec Compose de manière identique à une vue Android. (Ieb08c)
  • Suppression du modificateur tag, devenu obsolète. Utilisez layoutId à la place. (Idaa05, b/162023919)
  • 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)
  • Prise en charge du raccordement des tracés d'éléments graphiques vectoriels. (Ie16c9, b/158188351)
  • Ajout de Modifier.layout(), qui facilite la création de modificateurs de mise en page personnalisés. (I73b69, b/161355194)
  • Ajout d'une nouvelle API AndroidView et abandon des anciennes. (I5bcfd)
  • 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 difficiles à lire. (Iedd58, b/161529964)
  • Ajout des sous-classes de vue [Abstract]ComposeView pour accueillir le contenu Compose dans une hiérarchie de vues. (I46357)
  • Conversion de Row et Column en fonctions inline, ce qui réduit considérablement la charge associée à leur utilisation. (I75c10)
  • Ajout de SubcomposeLayout. Il s'agit d'une primitive de bas niveau, qui permet de composer les enfants pendant la mesure. Cette option est utile si vous souhaitez, pour la composition de la sous-arborescence, utiliser pendant la mesure certaines des valeurs qui ne sont disponibles qu'après. Par exemple, WithConstraints n'est pas implémenté par SubcomposeLayout. (I25cc8)
  • Ajout de SemanticsNode.positionInRoot, qui permet d'obtenir la position d'un SemanticsNode par rapport à la racine de la hiérarchie Compose. (Icdf26, b/161336532)
  • Mise à jour des MotionEvents, désormais transmis tout au long du parcours, d'Android, à Compose, puis renvoyés vers Android. (I14be8, b/158034713)
  • Suppression de dropdownPopup. (I00430)
  • Correction du positionnement de la fenêtre pop-up sur les écrans à découpe. (Idd7dd)
  • Ajout d'une action d'accessibilité pour obtenir TextLayoutResult. (I9d6e6)
  • Ajout de RemeasurementModifier, qui permet de re-mesurer 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)
  • Suppression de getLineEllipsisOffset/getLineEllipsisCount. Utilisez getLineVisibleEnd/getLineEnd/isLineEllipsized à la place. (I85aa2)
  • Ajout de plusieurs marques et annotations pour adhérer aux bonnes pratiques. (I66b20)
  • Augmentation du nombre d'API de ligne exposées dans TextLayoutResult. (I79bd2)
  • Mise à disposition de convertisseurs vectoriels intégrés pour convertir les unités intégrées via Foo.VectorConverter (par exemple, Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter, etc.). (I3e273)

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.
  • Mise à jour de la consommation de l'API BlendMode afin de correctement mapper les modes BlendMode et PorterDuff du framework Android en fonction du niveau de l'API. Introduction de l'API BlendMode#isSupported, pour permettre d'interroger la compatibilité de l'appareil avant d'utiliser le BlendMode. (I0ef42)
  • 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)
  • Suppression de SemanticsNodeInteraction.performPartialGesture. Utilisez SemanticsNodeInteraction.performGesture à la place. (Id9b62)
  • Changements de nom : LazyColumnItems devient LazyColumnFor et LazyRowItems devient LazyRowFor. (I84f84)
  • Le package foundation.shape.corner a été aplati en foundation.share. (I46491, b/161887429)
  • Changement de nom : AndroidComposeTestRule devient createAndroidComposeRule. (I70aaf)
  • Ajout d'API supplémentaires à TextLayoutResult. (Id7e04)
  • Changements de nom : Dans Material, FilledTextField devient TextField. Dans Foundation, TextField devient BaseTextField pour faciliter l'identification et l'utilisation de l'API la plus simple. (Ia6242, b/155482676)
  • Changement de nom : Modifier.drawBackground devient Modifier.background. (I13677)

Version 0.1.0-dev15

22 juillet 2020

Publication d'androidx.compose.ui:ui-*:0.1.0-dev15. Liste des commits de la version 0.1.0-dev15

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

  • Abandon de FocusModifier, à remplacer par Modifier.focus, Modifier.focusRequester et Modifier.focusObserver. Abandon de FocusState et FocusDetailedState, à remplacer par FocusState2. (I46919, b/160822875, b/160922136)
  • Ajout d'un modificateur pour observer le changement d'état de la sélection. (I05866, b/160924455, b/160923326)
  • Ajout d'un modificateur pour demander des changements de sélection. (I8dd73, b/161182057, b/160924778)
  • Ajustement du menu de la barre d'outils pour afficher correctement les options copy (copier), cut (couper) et paste (coller). (Id3955)
  • 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)
  • Ajout de Modifier.focus, qui remplace FocusModifier. (Ib852a, b/160924778)
  • Ajout de FloatingToolbar pour la sélection de TextField. (Ie8b07)
  • Ajout d'une annotation "API expérimentale" pour l'API liée à l'entrée de touches. (I53c0a)
  • Ajout d'une annotation "API expérimentale" pour toutes les API liées à Focus. (I53b24, b/160903352)
  • Ajout de FocusState2, qui remplacera FocusDetailsState. (I0a3ba, b/160822595)
  • Ajout de ExperimentalFocus, une annotation @OptIn pour l'API Focus. (I1544b, b/160820961)
  • Ajout d'une classe d'unités IntBounds, qui représentent les limites d'un nombre entier de pixels à partir de la mise en page. L'API de PopupPositionProvider a été mise à jour pour l'utiliser. (I0d8d0, b/159596546)
  • Applier requiert désormais une méthode clear() pour supprimer les compositions. (Ibe697)
  • Abandon de KeyEvent, à remplacer par KeyEvent2. (I68730)
  • Ajout d'un indicateur facultatif useUnmergedTree aux outils de recherche des tests. (I2ce48)
  • Conversion de LayoutNode en API expérimentale. (I4f2e9)
  • Ajout de méthodes de copie à divers types de classe inline, dont :

    • Offset
    • Size
    • Radius
    • Motion
    • TransformOrigin

    • Abandon de la méthode d'objet associée à Size.copy, à remplacer par une instance de méthode de copie. (Ife290, b/159905651)

  • Mise à jour des éléments Popup, Dialog et Menu, qui héritent désormais du MaterialTheme contextuel. (Ia3665, b/156527485)

  • Changement de nom : TextDirection devient ResolvedTextDirection. (I3ff38)

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

  • Refactorisation des SelectionHandles pour permettre de les réutiliser. (I420e0)

  • Suppression de Clickable. Utilisez Modifier.clickable à la place. (I84bdf)

  • Suppression de TestTag et Semantics. Utilisez Modifier.testTag et Modifier.semantics à la place. (I15ff0, b/158841414)

  • 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 du Kotlin. Il s'agissait d'un concept vestigial ne faisant plus partie du modèle de réflexion qui structure Compose. (I5205a, b/158123804)

  • Changement de nom : Modifier.tag devient Modifier.layoutId pour éviter toute confusion avec Modifier.testTag. (I995f0)

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

  • Ajout d'un paramètre de modificateur au composable AndroidView. (I48a88, b/158746303)

  • Abandon de Semantics(). Utilisez Modifier.semantics() à la place. (I72407, b/158841414)

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

  • Remplacement de l'utilisation de IntPx par Int. Remplacement de IntPxPosition par IntOffset. Remplacement de IntPxSize par IntSize. (Ib7b44)

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

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

  • Abandon de TestTag. Utilisez Modifier.testTag à la place. (If5110, b/157173105)

  • Suppression de la mise en œuvre no-op par défaut de ParentDataModifier#modifyParentData, qui équivalait à ne pas implémenter l'interface. (I0deaa)

  • Suppression de ScaleFit, devenu obsolète. Utilisez ContentScale à la place. (Ifbc5b)

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

  • Ajout du composant DropdownMenu dans ui-material, une implémentation de menu Material Design. (I9bb3d)

  • Suppression de LayoutTag(), devenu obsolète. Utilisez Modifier.tag() à la place. Suppression de Modifier.matchParent(), devenu obsolète. Utilisez Modifier.matchParentSize() à la place. (If8044)

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

  • 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é mis à jour, et ne maintiennent plus par eux-mêmes la propriété RTL, déjà fournie par DrawScope sans intervention manuelle. (I1798e)

  • Mise à jour de DoubleTapGestureFilter, qui distingue désormais SingleTapGestureFilter dans l'arborescence. (If92b1)

  • 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 l'API de modificateurs DrawLayer : outlineShape renommé en shape, non nullable, avec RectangleShape comme valeur par défaut ; clipToOutline renommé en clip ; clipToBounds supprimé, car identique à "clip == true" pour RectangleShape. (I7ef11, b/155075735)

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

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

  • Suppression de l'interface LayoutModifier, devenue obsolète. (I2a9d6)

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

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

  • Ajout de Modifier.zIndex(), qui permet de contrôler l'ordre d'affichage des éléments enfants dans une même mise en page parente. La propriété "elevation" de DrawLayerModifier est renommée shadowElevation et ne contrôle plus l'ordre d'affichage. Modification des paramètres d'ordre pour DrawShadow : l'élévation est désormais le premier et la forme, le deuxième, avec RectangleShape comme valeur par défaut. (I20150, b/152417501)

  • Suppression de onSizeChange et onPositionChange dans Owner. (I5c718)

  • Ajout de Constraints2, une copie de Constraints qui n'est compatible qu'avec les valeurs de contrainte Int (au lieu de IntPx). IntPx sera supprimé et toutes les contraintes d'entier seront considérées comme des pixels, comme sous Android.

    • Ajout de IntSize, qui remplacera à terme IntPxSize. (I4b43a)
  • Mise à jour de Alignment, désormais instanciable avec des valeurs arbitraires. Ajout d'alignements en 1D. (Ia0c05)

  • Mise à jour de alignToSiblings, qui accepte désormais un élément Measured au lieu de Placeable. (I5788d)

  • (I45f09, b/152842521)

    • Changement de nom : ScaleFit devient ContentScale.
    • Déplacement de ContentScale de ui-graphics vers le module ui-core, pour coexister avec l'API Alignment.
    • Changement de nom : FillMaxDimension devient Crop.
    • Changement de nom : FillMinDimension devient Fit.
    • Changement de nom : 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 de Inside et Alignment.Center produit le même résultat que ImageView.ScaleType.CENTER_INSIDE.
  • Prise en charge de la lecture Rtl pour les modificateurs de dessin. (I0aaf9)

  • Publication d'une API permettant de gonfler les vues Android à partir d'un fichier XML. Pour en savoir plus, consultez la démo de ViewInCompose. (I42916)

  • 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)
  • Ajout de positionInParent et boundsInParent pour LayoutCoordinates. (Icacdd, b/152735784)

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

  • Ajout de LayoutModifier2, une nouvelle API permettant de définir des modificateurs de mise en page. Abandon de LayoutModifier. (If32ac)

  • Remplacement de l'opérateur plus du modificateur par des fonctions d'extension de fabrique. (I225e4)

  • Ajout de propriétés de translation abscisse-ordonnée pour permettre le décalage de la liste d'affichage des commandes de dessin pour un calque donné. Cette option est utile pour déplacer du contenu en réponse à des animations ou des événements tactiles. (I8641c)

  • Ajout des paramètres pivotX et pivotY aux API Layer pour permettre la rotation et le scaling autour d'un point particulier du calque. (Icf7c3)

  • Ajout de OnPositionedModifier et OnChildPositionedModifier pour remplacer les fonctions composables OnPositioned et OnChildPositioned. (I2ec8f)

  • Ajout de LayerModifier, un modificateur qui permet d'ajouter un RenderNode à une mise en page. Cette option permet de définir le rognage, l'opacité, la rotation, le scaling et les ombres. Cette action remplacera RepaintBoundary. (I7100d, b/150774014)

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

  • Prise en charge de l'orientation de lecture de droite à gauche pour le composant Stack. (Ic9e00)

  • Prise en charge initiale de la lecture de droite à gauche (RTL) dans les mises en page Compose. (Ia5519)

  • Fusion de Density et DensityScope en une seule interface. Vous pouvez désormais utiliser DensityAmbient.current au lieu de ambientDensity(), et with(density) au lieu de withDensity(density). (I11cb1)

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

  • 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 l'API MaskFilter, qui n'était pas utilisée, car limitée et non optimisée pour l'accélération matérielle dans la plupart des cas d'utilisation. (I54f76)

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

  • Introduction d'un paramètre rect facultatif dans ImagePainter pour permettre le tracé d'une sous-section d'un ImageAsset sous-jacent. (I0ea9e)

  • Ajout de Unset Color pour représenter une valeur non définie sans boxing de Colors. (If901a)

  • Ajout des méthodes d'extension Canvas.rotate et Canvas.scale afin de consommer des coordonnées de pivot facultatives pour les transformations. Leur valeur par défaut est celle de l'angle supérieur gauche de la translation actuelle du Canvas.

    Conversion de Canvas.rotateRad en méthode d'extension, pour plus de cohérence. (Ibaca6)

  • Création d'une API PixelMap permettant d'interroger les informations de pixel à partir d'un ImageAsset. (I69ad6)

  • Changement de nom : toFrameworkRect et toFrameworkRectF deviennent toAndroidRect et toAndroidRectF, pour correspondre à la convention de nommage des conversions d'objet entre Compose et les API du framework Android servant de base. La documentation concernant ces API a été mise à jour. (I86337)

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

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

  • Ajout de TextDirection.Content. (I48f36)

  • Ajout de l'opérateur TextDecoration.plus. (I0ad1a)

  • Suppression de Force des valeurs d'énumération TextDirectionAlgorithm. (Icc944)

  • Changement de nom : TextDirectionAlgorithm devient TextDirection (I75ce8)

  • Implémentation de LongPressAndDrag pour la sélection de TextField. (I17919)

  • Ajout de AnnotatedString.getStringAnnotations, qui renvoie toutes les annotations de la plage. (I1fa00)

  • Changement de nom : le package androidx.ui.text devient androidx.ui.intl pour Locale et LocaleList. (I8132c)

  • Ajout d'une animation de clignotement au curseur de TextField. (Id10a7)

  • Changement de nom : l'API AnnotatedString(builder: Builder) devient annotatedString(builder: Builder). (Ia6377)

  • Changement de nom : l'API AnnotatedString.Item devient AnnotatedString.Range. (I2d44d)

  • Changement de nom : AnnotatedString.Builder.addAnnotationString devient addStringAnnotation. (I5059e)

  • Mise à jour de SoftwareKeyboardController, qui permet désormais de masquer/afficher le clavier virtuel (fourni par un rappel onTextInputStarted). (I8dc44, b/151860051)

  • Ajout d'un opérateur "Plus" pour (Text/Paragraph/Span)Style, qui délègue à la fonction merge(). (Ia1add)

  • Suppression de l'ancrage dans FontWeight.lerp, qui reste une classe de données. (I521c2)

  • Mise à jour du constructeur FontWeight, qui est désormais public, mais n'est plus une classe de données. (Id6b1f)

  • Ajout de getLineStart, getLineEnd, getEllipsisOffset et getEllipsisCount à TextLayoutResult. (Ibc801)

  • Changement de nom : le module ui-text devient ui-text-core. (I57dec)

  • Suppression d'une classe Size, qui n'était pas utilisée, car elle existait en double et son équivalent dans le module ui-geometry était consommé. (I1b602)

  • Ajout de 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 de paramètres de marge intérieure, bordure, forme et arrière-plan à Box. (I05027, b/148147281)

Correction de bugs

  • 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)
  • Changement de nom : runOnIdleCompose devient runOnIdle. (I83607)
  • Renommage 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)
  • Compose UI peut maintenant être composée dans des ViewGroups sans nécessiter de nouvelle composition. Reportez-vous à ViewInteropDemo pour un exemple. (I9ab0b, b/160455080)
  • Ajout de sortWith et removeRange à MutableVector. (Icccf7)
  • Implémentation de poignées de sélection de déplacement pour modifier la sélection de TextField. (I27032)
  • Suppression de la classe inline Shader, qui encapsulait la classe attendue NativeShader. NativeShader a été renommée Shader. La classe Shader encapsulée n'ajoutait rien d'utile à la surface de l'API et était une classe inline. Utilisez la classe NativeShader directement à sa place. (I25e4d)
  • Refactorisation de PainterModifier, qui ne fournit plus de scaling basé sur les contraintes et le paramètre ContentScale fournis. Les implémentations de Painter devront appliquer leur propre scaling aux éléments affichés, en fonction des dimensions du DrawScope de destination.

    Résolution d'un problème de dimensionnement à cause duquel le bitmap du cache de VectorPainter appliquait sa taille par défaut au lieu de la taille indiquée.

    Mise à jour de ImagePainter, qui applique désormais son propre scaling de contenu au lieu de laisser PainterModifier le faire à sa place. (I6ba90)

  • Ajout d'une fonction de premier niveau withFrameNanos pour le minutage des animations. (Ie34c5)

  • Abandon de l'annotation @Untracked, remplacée par @ComposableContract(tracked=false). (Id211e)

  • Abandon de 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)

  • Correction d'un problème de plantage qui survenait lorsque PointerInputFilters était supprimé via la sous-composition pendant la distribution des entrées du pointeur. Ce problème est désormais résolu. (I1f48b, b/157998762)

  • Correction d'un problème de plantage qui survenait lorsque PointerInputFilters était supprimé via la sous-composition pendant la distribution des entrées du pointeur. Ce problème est désormais résolu. (Iab398, b/157998762)

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

  • Reclassement du composable Recompose, qui n'est plus une abstraction utile. La plupart des recompositions devraient faire suite aux attributions MutableState. Pour les autres cas, nous vous recommandons d'utiliser la fonction invalidate pour déclencher une recomposition du champ d'application actuel. (Ifc992)

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

  • Mise à jour de la stratégie de génération de code du compilateur de Compose. Avant la modification, le compilateur Compose transformait les appels en fonctions modulables. Suite à la modification, la compilation transforme le corps d'une fonction modulable, mais laisse le site d'appel essentiellement inchangé.

    Cela signifie que la majeure partie de la logique qui communique avec l'environnement d'exécution de Compose est appliquée au début du corps de la fonction, et non au site d'appel.

    Ce changement devrait préserver la compatibilité avec la source pour toutes les utilisations de Compose. La plupart des utilisateurs de Compose ne devraient pas avoir à modifier leur code suite à ce changement.

    La signature JVM de toutes les fonctions modulables a été modifiée pour mettre en œuvre ce changement. Les fonctions modulables qui acceptent un seul paramètre sont transformées en fonctions acceptant trois paramètres. Les paramètres supplémentaires sont le Composer, un entier "clé" et un entier de masque de bits servant à propager les métadonnées via des appels.

    Désormais, Compose transforme également les arguments par défaut en fonctions modulables, mais sans introduire de surcharge synthétique supplémentaire par défaut pour les fonctions elles-mêmes. Par conséquent, le nombre de fonctions définies sera réduit.

    Ce changements introduit des modifications intentionnelles des comportements :

    1. Certains appels qui ne l'étaient pas auparavant seront désormais ignorés.
    2. Les expressions modulables dans les expressions d'argument par défaut sont désormais correctement suivies et gérées.

    Cette mise à jour introduit également des optimisations : 1. Le résultat des comparaisons de paramètres est propagé dans le graphique d'appel vers d'autres fonctions modulables. Cela permet de réduire le nombre de comparaisons lors de l'exécution, de réduire la taille de la table d'emplacements et d'ignorer davantage des fonctions modulables qui n'étaient auparavant pas ignorées. 2. Les paramètres déterminés comme statiques au moment de la compilation ne sont plus comparés ni stockés dans l'environnement d'exécution. Cela permet de réduire le nombre de comparaisons et la taille des tables d'emplacements. 3. La structure de contrôle du corps des fonctions permet de réduire le nombre de groupes générés. Cela réduit la taille de la table d'emplacements et réduit la charge de travail de l'environnement d'exécution. 4. Les paramètres de distribution et de destinataire qui ne sont pas utilisés dans le corps de la fonction ne sont plus pris en compte pour déterminer si une fonction peut être ignorée.

    La plupart des modifications destructives concernent les API que le compilateur cible directement. L'utilisation typique de Compose n'est pas affectée : 1. Composer::startExpr a été supprimé ; 2. Composer::endExpr a été supprimé ; 3. Composer::call a été abandonné ; 4. Les surcharges sans varargs de key ont été supprimées. À l'avenir, utilisez la version vararg. 5. L'annotation Pivotal a été abandonnée. Utilisez key à la place. 6. ScopeUpdateScope::updateScope a été modifié afin d'attendre un Function3 au lieu d'un Function1. 7. restartableFunction et restartableFunctionN ont été mis à jour pour inclure des paramètres de temps de compilation supplémentaires (I60756, b/143464846)

  • Suppression des modificateurs LayoutAlign, devenus obsolètes. (I10877)

  • Suppression de RepaintBoundary, à remplacer par DrawLayerModifier. (I00aa4)

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

  • Remplacement de ButtonStyle par des fonctions distinctes et suppression de la surcharge de texte (chaîne). Consultez les exemples mis à jour pour plus d'informations sur la mise en œuvre. (If63ab, b/146478620, b/146482131)

  • Modifications destructives apportées à l'API Ambients. Pour en savoir plus, consultez le journal et la documentation sur Ambient<T>. (I4c7ee, b/143769776)

  • Modification du comportement de TextDirection par défaut, afin qu'il soit déterminé par LayoutDirection. Par exemple, si LayoutDirection est en lecture de droite à gauche (RTL), TextDirection sera RTL par défaut (précédemment géré par TextDirection.ContentOrLtr/Rtl). (I4e803)

  • Correction d'un bug qui empêchait le texte de s'afficher correctement lorsque l'épaisseur et le style de la police étaient imbriqués sur une AnnotatedString. (I77a9d)

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

  • Changement de nom : le module ui-android-text devient ui-text-android. (I68cbe)