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

Compose Material

Création d'interfaces utilisateur 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.
Dernière mise à jour Version stable Version finale Version bêta Version alpha
11 janvier 2023 1.3.1 - - 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.material:material:1.3.1"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.3.2"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.material:material:1.3.1")
}

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

Modifications apportées à l'API

  • 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 balayage en fonction de la signification sémantique des éléments tels que les surfaces. (I63379)
  • Marquage de la fonction snapTo dans Drawer en tant qu'API non expérimentale. (Ib9c18, b/261425368)
  • Ajout d'un paramètre de couleur de suivi pour les indicateurs de progression circulaires, et d'un paramètre de limite de trait pour les indicateurs de progression circulaires et linéaires. (Ie668c, b/216325962, b/222964817)
  • Changement de nom : le paramètre confirmStateChange de ModalBottomSheetState, ModalBottomSheetState.Saver et rememberModalBottomSheetState devient confirmValueChange. (Ib48d1)
  • Possibilité de valeur nulle de type renvoyé accrue pour les fonctions obsolètes ou masquées (Ibf7b0)
  • Ajout de Modifier.minimumInteractiveComponentSize. Vous pouvez l'utiliser pour réserver une taille d'au moins 48 dp pour résoudre les problèmes d'interaction tactile si l'élément est plus petit. (I33f58, b/258495559)
  • Modifications apportées aux API Swipeable dans ModalBottomSheetLayout. Le paramètre animateTo de ModalBottomSheetState n'accepte plus de paramètre animationSpec et le offset exposé peut désormais avoir une valeur nulle. Utilisez requireOffset pour exiger offset. (Ia2e79)

Corrections de bugs

  • La largeur maximale d'une feuille de ModalBottomSheetLayout est désormais de 640 dp. (I71a4f, b/234927577)
  • Correction d'un problème qui empêchait rememberPullRefreshState de mettre à jour refreshThreshold et refreshingOffset au fil du temps. (Ifed10, b/263159832)
  • La progression des indicateurs de progression est désormais correctement limitée à la plage attendue. (I8a7eb, b/262262727)
  • Si ModalBottomSheetState n'a pas encore reçu d'ancre, la currentValue est mise à jour sans animation lorsque snapTo ou animateTo est appelé au lieu de générer une exception. (I2c91b)
  • Correction de l'état activé au niveau de l'implémentation FilterChip de Material 2. (Id326a, b/261329817)
  • Correction d'un bug qui provoquait le plantage de ModalBottomSheetLayout si le paramètre était HalfExpanded lors d'une rotation du mode portrait au mode paysage. Veuillez vous assurer que l'initialValue transmise est correcte, par exemple en vérifiant la configuration. (Ie8df7, b/182882364)
  • Résolution d'un problème qui provoquait le plantage de ModalBottomSheetLayout si le contenu de la feuille était vide. ModalBottomSheetLayout autorise désormais un contenu de feuille vide. Si la feuille est vide, son état est Hidden (Masqué) (Ic2288, b/200980998, b/216693030)

Version 1.4.0-alpha03

7 décembre 2022

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

Modifications apportées à l'API

  • Ajout de l'annotation @JvmDefaultWithCompatibility. (I8f206)
  • Modifications apportées aux API Swipeable dans ModalDrawer. animateTo de DrawerState a été remplacé par les méthodes open et close, et le décalage peut désormais être nul. Utilisez requireOffset pour exiger le décalage. (I3de9e)
  • 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.

Corrections de bugs

  • Correction d'un problème qui pouvait bloquer PullRefreshIndicator après l'appel d'onRefresh si l'état d'actualisation n'était pas défini sur "true". (Ie2416, b/248274004)

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.material:material-*:1.4.0-alpha02. Liste des commits de la version 1.4.0-alpha02

Modifications apportées à l'API

  • awaitFirstDown et waitForUpOrCancellation acceptent désormais PointerEventPass pour plus de flexibilité. (I7579a, b/212091796)
  • 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)
  • Ajout du paramètre minLines à BasicText et BasicTextField. Permet de définir la hauteur minimale de ces composables en nombre de lignes. (I24294, b/122476634)

Version 1.4.0-alpha01

24 octobre 2022

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

Version 1.3

Version 1.3.1

9 novembre 2022

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

Version 1.3.0

24 octobre 2022

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

Changements importants depuis la version 1.2.0

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.

Modifications apportées à l'API

  • Ajout d'un composant Pull-to-Refresh à Compose. (I29168)
  • Remplacement du nom de paramètre "values" par "value" dans RangeSlider. (I3b79a)

Version 1.3.0-rc01

5 octobre 2022

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

Version 1.3.0-beta03

21 septembre 2022

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

Modifications apportées à l'API

  • Ajout d'un composant Pull-to-Refresh à Compose. (I29168)

Version 1.3.0-beta02

7 septembre 2022

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

Aucune modification depuis la version 1.3.0-beta01

Version 1.3.0-beta01

24 août 2022

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

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.

Version 1.3.0-alpha03

10 août 2022

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

Version 1.3.0-alpha02

27 juillet 2022

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

Contribution externe

  • Résolution du problème de AnimatedVisibility avec FloatingActionButton dans Scaffold (I3a0ae, b/224005027)

Version 1.3.0-alpha01

29 juin 2022

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

Modifications apportées à l'API

  • Remplacement du nom de paramètre "values" par "value" dans RangeSlider. (I3b79a)

Corrections de bugs

  • Mise à jour de l'exemple de badge pour fournir une description de contenu plus pertinente. (I10b9d)

Version 1.2

Version 1.2.1

10 août 2022

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

Version 1.2.0

27 juillet 2022

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

Version 1.2.0-rc03

29 juin 2022

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

Corrections de bugs

  • Mise à jour du badge avec le premier onglet d'icônes pour associer le badge au libellé au lieu de l'icône. (I90993)

Version 1.2.0-beta03

1er juin 2022

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

Corrections de bugs

  • Correction d'un bug à cause duquel BottomSheetScaffold dessinait sur l'ombre de la barre d'application supérieure. BottomSheetScaffold tient désormais compte de l'état de la feuille lorsqu'il place des snackbars : réduits, les snackbars sont placés au-dessus de la feuille et du bouton d'action flottant. Développés, les snackbars sont ancrés au bas de la feuille. (Ia80b5, b/187771422)

Version 1.2.0-beta02

18 mai 2022

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

Version 1.2.0-beta01

11 mai 2022

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

  • Changement du nom du composable TextFieldDefaults.BorderStroke permettant de tracer un trait de bordure dans OutlinedTextField par TextFieldDefaults.BorderBox. (I5f295)

Version 1.2.0-alpha08

20 avril 2022

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

Modifications apportées à l'API

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

Version 1.2.0-alpha07

6 avril 2022

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

Version 1.2.0-alpha06

23 mars 2022

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

Modifications apportées à l'API

  • Mises à jour de l'API Card cliquable pour suivre les modifications apportées à l'API Surface (I56bcb)
  • Mises à jour de l'API Material 2 Surface qui ajoutent des fonctions surchargées pour les surfaces sélectionnables et activables. (Ifcca5)

Version 1.2.0-alpha05

9 mars 2022

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

Modifications apportées à l'API

  • Mise à jour de LazyVerticalGrid et LazyHorizontalGrid, désormais considérés comme stables. (I307c0)
  • LazyVerticalGrid/LazyHorizontalGrid et des API associées ont été déplacées dans le sous-package .grid. Mettez à jour vos importations d'androidx.compose.foundation.lazy à androidx.compose.foundation.lazy.grid. (I2d446, b/219942574)
  • Annulation d'une modification précédente qui consistait à ne dépendre que d'une vue pour WindowInsetsControllerCompat, et à exiger de nouveau une fenêtre pour gérer certains indicateurs de fenêtre. ViewCompat.getWindowInsetsController a été abandonné au profit de WindowCompat.getInsetsController pour garantir l'utilisation de la bonne fenêtre (par exemple, si la vue se trouve dans une boîte de dialogue) (I660ae, b/219572936)
  • 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)
  • Ajout d'une API LazyVerticalGrid permettant de définir les tailles de l'axe transversal. (I17723)

Version 1.2.0-alpha04

23 février 2022

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

Modifications apportées à l'API

  • Add support for filter chips (I39a6e, b/192585545)
  • Ajout de TextFieldDecorationBox et de OutlinedTextFieldDecorationBox. En les combinant avec BasicTextField, vous pouvez créer un champ de texte personnalisé basé sur des champs de texte Material Design, mais avec davantage d'options de personnalisation.
  • Ajout de l'ajustement des marges intérieures horizontales et verticales dans les champs de texte. (I8c9f1, b/203764564, b/191543915, b/189971673, b/183136600, b/179882597, b/168003617)
  • 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 CompoableTarget pour la fonction et un type de paramètre lambda de composable. Il est toutefois recommandé de créer une annotation marquée avec ComposableTargetMarker, puis d'utiliser l'annotation marquée plutôt que d'utiliser directement ComposableTarget. Une annotation composable marquée avec ComposableTargetMarker équivaut à un ComposbleTarget avec le nom complet de la classe d'attribut en tant que paramètre de cible. Pour obtenir un exemple d'utilisation de ComposableTargetMarker, reportez-vous à anroidx.compose.ui.UiComposable. (I38f11)

Version 1.2.0-alpha03

9 février 2022

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

Corrections de bugs

Version 1.2.0-alpha02

26 janvier 2022

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

Modifications apportées à l'API

  • Ajout de NonRestartableComposable aux méthodes correspondant à des surcharges de méthodes existantes sans logique complexe. Cela réduit le nombre de vérifications (d'égalité) de la mémorisation générées par le compilateur pour tous les paramètres répétés dans la fonction interne appelée. (I90490)
  • Ajout de la compatibilité avec le chip d'action (I07100, b/192585545)

Version 1.2.0-alpha01

12 janvier 2022

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

Mises à jour des dépendances

  • Mise à jour des dépendances vers Kotlin 1.6.10.

Contribution externe

  • ModalBottomSheetState comporte désormais un indicateur isSkipHalfExpanded. Il peut être défini via le constructeur ou mis à jour ultérieurement en définissant la propriété isSkipHalfExpanded de ModalBottomSheetState sur true. La mise à jour de la valeur de isSkipHalfExpanded entraîne une recomposition de la feuille. (I18b86, b/186669820)

Version 1.1

Version 1.1.1

23 février 2022

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

Modifications importantes depuis la version 1.0.0

  • Stabilisation de la prise en charge du défilement hors limites d'Android 12.
  • Améliorations apportées au dimensionnement des zones cibles tactiles.
  • Notez que, dans Compose 1.0, les composants Material développent leur espace de mise en page pour respecter les consignes d'accessibilité Material concernant la taille des zones cibles tactiles. Par exemple, la zone cible tactile minimale d'un bouton est de 48 × 48 dp, et sera étendue si le paramètre indique une dimension inférieure. Cela permet d'aligner la bibliothèque Compose Material sur le comportement des composants Material Design, pour plus de cohérence si vous combinez le système de vues et Compose. Cette modification garantit également que les conditions minimales requises pour l'accessibilité des zones cibles tactiles sont remplies lorsque vous créez votre UI à l'aide de composants Compose Material.
  • Stabilisation de la prise en charge du rail de navigation.
  • Reclassement d'un certain nombre d'API expérimentales en version stable.
  • Prise en charge des nouvelles versions de Kotlin.

Version 1.1.0-rc03

26 janvier 2022

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

Modifications de comportement

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.

Corrections de bugs

  • Ajout de meilleures informations de débogage pour l'outil d'inspection de la mise en page lors de l'inspection des modificateurs de la zone cible tactile minimale. (aosp/1955036)

Version 1.1.0-rc01

15 décembre 2021

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

Corrections de bugs

Version 1.1.0-beta04

1er décembre 2021

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

Version 1.1.0-beta03

17 novembre 2021

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

Version 1.1.0-beta02

3 novembre 2021

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

Corrections de bugs

  • Correction des ondulations et des autres indications qui étaient toujours retardées pour un événement "vers le bas". Désormais, elles le seront seulement si elles se trouvent dans un conteneur Modifier.scrollable(). (Ibefe0, b/203141462)

Version 1.1.0-beta01

27 octobre 2021

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

Nouvelles fonctionnalités

  • Désormais, les ondulations prennent en charge les états Survoler et Placer le curseur. Ainsi, ces actions sur un composant (par exemple un bouton) afficheront maintenant la superposition d'état pertinente.

Version 1.1.0-alpha06

13 octobre 2021

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

Modifications apportées à l'API

  • Ajout d'une surcharge sans enfant pour Layout, pour gagner en efficacité. (Ib0d9a)
  • Implémentation du menu ExposedDropdownMenu basé sur ExposedDropdownMenuBox avec TextField et DropdownMenu (If60b2)
  • dismissOnOutsideClick a été ajouté à PopupProperties pour remplacer dismissOnClickOutside, qui était 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 de niveau inférieur 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)

Version 1.1.0-alpha05

29 septembre 2021

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

Modifications apportées à l'API

  • Ajout d'une taille minimale de zone cible tactile pour les composants Material qui n'ont pas de zone cible tactile accessible. Dans la mesure où cette mise à jour ajoute un espace supplémentaire autour des composants pour s'assurer qu'ils ont une zone cible tactile suffisamment grande, les interfaces utilisateur existantes peuvent être modifiées, notamment si elles considèrent que la taille de ces composants correspond à leur taille visuelle et ne tiennent pas compte de la taille des zones cibles tactiles. Vous pouvez utiliser la composition LocalMinimumTouchTargetEnforcement expérimentale en local pour désactiver ce comportement dans une hiérarchie, mais il s'agit uniquement d'un mécanisme de secours temporaire lorsque vous mettez à jour des interfaces utilisateur existantes pour tenir compte de la nouvelle taille minimale. (I9b966, b/149691127, b/171509422)
  • Ajout d'une interface expérimentale TextFieldColorsWithIcons qui développe TextFieldColors afin de fournir une InteractionSource aux classes leadingColor et trailingColor. Cela permet de modifier l'apparence de TextField en fonction de l'état de sélection. (I66923, b/198402662)

Version 1.1.0-alpha04

15 septembre 2021

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

Modifications apportées à l'API

  • Abandon de performGesture et GestureScope, remplacés par performTouchInput et TouchInjectionScope. (Ia5f3f, b/190493367)
  • Ajout de touchBoundsInRoot à SemanticsNode, qui inclut la taille minimale des zones cibles tactiles afin que les développeurs puissent s'assurer que ces dernières respectent les valeurs minimales d'accessibilité. (I2e14b, b/197751214)

Corrections 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)
  • Mise à jour du composable Divider en fonction de Dp.Hairline pour le paramètre d'épaisseur afin de permettre le traçage de séparateurs à un seul pixel, quelle que soit la densité d'affichage. (I16ffb, b/196840810)

Version 1.1.0-alpha03

1er septembre 2021

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

Nouvelles fonctionnalités

  • Mise à jour des dépendances Compose 1.1.0-alpha03 vers Kotlin 1.5.30. (I74545)

Modifications apportées à l'API

  • Ajout d'une méthode de test pour obtenir les limites rognées. (I6b28e)
  • Ajout d'une taille minimale aux zones cibles tactiles dans ViewConfiguration, pour garantir l'accessibilité lorsque des entrées pointeur ou sémantiques sont utilisées. (Ie861c)

Version 1.1.0-alpha02

18 août 2021

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

Contribution externe

  • Correction du comportement de SwipeableState lorsque le décalage de balayage se situe dans une erreur d'arrondi d'une ancre. (I03d39, b/191993377)

Version 1.1.0-alpha01

4 août 2021

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

Modifications apportées à l'API

  • Mise à jour de la méthode DrawScope#drawImage, qui consomme désormais les rectangles source et de destination pour consommer un paramètre FilterQuality facultatif. Cette méthode est utile pour afficher les éléments de style pixel art, conçus pour paraître pixélisés lorsqu'ils sont agrandis. Mise à jour du composable BitmapPainter + Image, afin de consommer également un paramètre FilterQuality facultatif. (Ie4fb0, b/180311607)
  • BadgeBox a été renommé BadgedBox, et les paramètres ont été modifiés pour accepter le composable Badge. Ajout d'un composant badge qui correspond au contenu typique d'une BadgedBox. (I639c6)
  • Ajout du composant NavigationRail. Consultez la documentation et les exemples pour obtenir des informations sur son utilisation (I8de77).

Corrections de bugs

  • Ajout d'un exemple d'un NavigationRail aligné en bas d'une page et d'une démo d'application de catalogue. (I3cffc)
  • 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)
  • Ajout d'une démo navigation-rail à l'application de catalogue. (I04960)
  • Ajout d'une démo badge à l'application de catalogue. (If285D)

Version 1.0

Version 1.0.5

3 novembre 2021

Publication d'androidx.compose.material:material-*: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.material:material-*: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.material:material-*: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.material:material-*: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.material:material-*: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.material:material-*: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.material:material-*:1.0.0-rc02. Liste des commits de la version 1.0.0-rc02

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

Modifications apportées à l'API

  • Ajout du composant BadgeBox. Voir la documentation et les exemples pour obtenir des informations sur l'utilisation (I5e284)
  • 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)
  • Ajout de la fonctionnalité expérimentale de curseur de plage (I2f4b3)

Corrections de bugs

  • Afin de respecter les spécifications de Material Design d'OutlinedTextField avec une entrée non valide, nous avons cessé d'utiliser une couleur d'erreur pour le libellé lorsque celui-ci est utilisé comme espace réservé. Ceci est vrai lorsqu'il n'y a pas de texte d'entrée dans le champ de texte et que celui-ci n'est pas sélectionné. Avec cette modification, la signification du paramètre error:Boolean dans la fonction TextFieldColors.labelColor() a également changé : la valeur false est désormais renvoyée même si l'entrée n'est pas valide si le libellé est utilisé comme espace réservé. (I45f78)

Version 1.0.0-beta09

16 juin 2021

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

Modifications apportées à l'API

  • Ajout du paramètre Shape à OutlinedTextField pour pouvoir personnaliser la forme de la bordure (I8f39e, b/181322957)
  • Conversion de TextOverflow en classe inline. (I433af)

Corrections de bugs

  • L'écran dans BottomDrawer, BackdropScaffold et ModalBottomSheetLayout disparait, puis transmission de la couleur Color.Unspecified (I2d899, b/182063309)

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'un APK comprenant ces artefacts est créé, ces règles sont fusionnées puis utilisées pour créer un profil ART binaire compact spécifique à l'APK. ART peut ensuite exploiter ce profil lorsque l'APK est installé 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.material:material-*:1.0.0-beta08. Liste des commits de la version 1.0.0-beta08

Nouvelles fonctionnalités

Modification de l'API Behavior Breaking

  • MODIFICATION DESTRUCTIVE : les fiches utilisent désormais des clics, ce qui fait que les clics ajoutés par Card(Modifier.clickable) deviennent des no-ops. Utilisez cette nouvelle surcharge expérimentale d'une fiche qui accepte onClick. (Ia8744, b/183775620)
    • Ajout d'une nouvelle surcharge de fiche qui gère les clics et d'autres fonctionnalités cliquables : indication, interactionSource, activée/désactivée. Dans ce cas, il était impossible d'utiliser une fiche non cliquable standard avec Modifier.clickable, car la fiche ne découpe pas l'indication d'ondulation.
  • MODIFICATION DESTRUCTIVE : les surfaces utilisent désormais des clics, ce qui fait que les clics ajoutés par Surface(Modifier.clickable) deviennent des no-ops. Utilisez cette nouvelle surcharge expérimentale d'une surface qui accepte onClick. (I73e6c, b/183775620)
    • Ajout d'une nouvelle surcharge de surface qui gère les clics et d'autres fonctionnalités cliquables : indication, interactionSource, activée/désactivée. Dans ce cas, il était impossible d'utiliser une surface non cliquable standard avec Modifier.clickable, car la surface ne découpe pas l'indication d'ondulation.

Modifications apportées à l'API

  • FabPosition a été converti en classe inline depuis une énumération pour permettre une expansion potentielle à l'avenir (I030fb)
  • Refactorisation des utilisations d'énumération en classes inline pour éviter les problèmes avec les instructions "when" exhaustives lorsque de nouvelles valeurs d'énumération sont ajoutées. (I2b5eb)
  • Ajout d'un délai d'appui aux composants pouvant être cliqués ou activés/désactivés pour éviter d'afficher une ondulation lors d'un défilement ou d'un déplacement. (Ia2704, b/168524931)
  • Conversion en listes des propriétés sémantiques ContentDescription et Text (précédemment, des valeurs uniques). Cela permet de les fusionner telles quelles au lieu de les concaténer. Les API de test ont été améliorées pour tirer parti de ces modifications. (Ica6bf, b/184825850)
  • Abandon de Modifier.focusModifier(), remplacé par Modifier.focusTarget(). (I6c860)
  • Remplacement de l'énumération FocusState par une interface FocusState. (Iccc1a, b/187055290)
  • Suppression de LocalRippleNativeRendering, car l'implémentation de l'ondulation est stable (I7fab3, b/188569367).

Corrections de bugs

  • 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)
  • Ajout d'un fichier README pour le catalogue existant de Material Compose. (If9191)

Version 1.0.0-beta07

18 mai 2021

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

Modifications apportées à l'API

  • Vous n'avez plus besoin d'utiliser de méthodes d'extension pour la prise en charge des itinéraires dans Navigation Compose. (I22beb, b/172823546)

Version 1.0.0-beta06

5 mai 2021

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

Modifications apportées à l'API

  • L'ondulation a été migrée pour utiliser RippleDrawable en interne sur les appareils Android. Cela signifie que les animations d'ondulations se produiront sur RenderThread, et seront donc fluides, même lorsque le thread UI est soumis à une charge, par exemple lors de la navigation entre les écrans. Cela ne modifie pas la surface de l'API de l'ondulation, mais peut entraîner des changements de comportement. Pour faciliter la migration, LocalRippleNativeRendering a été ajouté : indiquez la valeur false à ce CompositionLocal afin de revenir à la précédente implémentation d'ondulation dans CompositionLocalProvider. Cette API est temporaire et sera supprimée à l'avenir. Par conséquent, si vous rencontrez des problèmes qui vous obligent à utiliser cette API, veuillez signaler un bug. (I902f8, b/168777351, b/183019123)
  • 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 d'une error d'API d'accessibilité qui signale un nœud contenant une entrée non valide. (I12997, b/180584804, b/182142737)

Corrections de bugs

  • Mise à jour du catalogue Compose Material : https://github.com/google/accompanist/pull/365. (I25dc3)
  • Correction d'un bug affectant les enfants Row et Column dont weight(fill = false) qui ordonnaient à leur parent d'occuper l'intégralité de l'espace disponible sur l'axe principal. (Ied94d, b/186012444, b/184355105)

Version 1.0.0-beta05

21 avril 2021

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

Corrections de bugs

  • Ajout d'images de cartes de composant, d'un sélecteur de thème et d'URL de menu plus spécifiques au catalogue Compose Material existant. (I9b58e)

Version 1.0.0-beta04

7 avril 2021

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

Modifications apportées à l'API

  • MODIFICATION DE L'API : l'état DrawerState n'étend plus le SwipeableState expérimental.
    • MODIFICATION DE L'API : BottomDrawerState est maintenant marqué comme expérimental pour correspondre au composant BottomDrawer expérimental (I81114, b/181656094).
  • 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)

Corrections de bugs

  • Ajout du catalogue Material Compose au module existant. Absent : images de cartes des composants, sélecteur de thème (à ajouter aux modifications de suivi). (Ie7a94)

Version 1.0.0-beta03

24 mars 2021

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

Modifications apportées à l'API

  • Abandon de DefaultMonotonicFrameClock. Désormais, appeler withFrameNanos ou Recomposer.runRecomposeAndApplyChanges sans MonotonicFrameClock génère une exception IllegalStateException. (I4eb0d)
  • Ajout d'une API LeadingIconTab permettant l'affichage d'une icône et du texte intégré dans un onglet. (I23267)

Contribution externe

  • [Par Jossi Wolf] BottomDrawer encapsule désormais le contenu de l'emplacement du panneau. BottomDrawer ne génère pas d'IllegalStateException lorsque la hauteur du parent est infinie. Le panneau du bas est étendu à l'ouverture si sa taille est inférieure à 50 % de son parent. Des documents concernant BottomDrawerState et ModalBottomSheetLayoutState ont été mis à jour. BottomDrawerState#isOpen renvoie désormais "true" s'il est ouvert ou développé. (I87241)

Version 1.0.0-beta02

10 mars 2021

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

Corrections de bugs

  • Application forcée des restrictions sur l'utilisation publique des API expérimentales. (I6aa29, b/174531520)
  • Modification de l'alignement horizontal par défaut pour que les composants TopAppBar et BottomAppBar soient conformes à Row au lancement (Ib2dc7)
  • Ajout d'un module et d'une UI d'espace réservé pour un catalogue Material Compose. Ce module est actuellement imbriqué dans les versions de démonstration des tests d'intégration existants. (Idfcb3).
  • 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)

Version 1.0.0-beta01

24 février 2021

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

  • 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)
  • imageResource et vectorResource sont désormais des fonctions d'extension pour ImageBitmap et ImageVector respectivement. load{Image,Vector,Font}Les fonctions Resource ont été supprimées. (I89130)
  • Mise à jour des modificateurs de dimensionnement des fonctionnalités intrinsèques, qui ne sont plus en phase expérimentale. (I15744)
  • Suppression des assertions de dp. (I798d2)
  • Suppression du rappel SoftwareKeyboardController (qui sera bientôt remplacé par une nouvelle API) de tous les champs de texte. (Iae869, b/168778053)
  • Les lambdas d'action Switch, Checkbox et RadioButton sont désormais nullables. Mise à jour des exemples de Checkbox-in-clickable-row pour utiliser cette fonction. (If601b, b/171819073)
  • 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)
  • Le curseur peut maintenant être activé ou désactivé (I6d56b, b/179793072).
  • Création de TextInputSession pour les sessions d'entrée à partir de composants de texte de niveau inférieur tels que CoreTextField. (I8817f, b/177662148)
  • Suppression d'AnimationEndReason.Interrupted. Génération d'une CancellationException si l'animation est interrompue. (I2cbbc, b/179695417)
  • Suppression de @ExperimentalRippleApi et modification de RippleAlpha en tant que classe avec des propriétés au lieu d'une interface. (I6df7c)
  • Ajout de l'interface TextFieldColors pour représenter les différentes couleurs utilisées dans TextField et OutlinedTextField dans différents états. Pour connaître l'implémentation par défaut, consultez TextFieldDefaults.textFieldColors et TextFieldDefaults.outlinedTextFieldColors.
  • Ajout d'un modificateur selectionGroup permettant de marquer la collection de Tabs ou RadioButtons à des fins d'accessibilité. (Ie5c29)
  • Ajout de LazyListState.animateScrollToItem.

    Cette méthode lisse le défilement jusqu'à un élément spécifique de la liste. (I4bfd7)

  • ScrollableState.smoothScrollBy() a été renommé animateScrollBy(). LazyListState.snapToItemIndex() a été renommé scrollToItem(). ScrollState.smoothScrollTo() a été renommé animateScrollTo(). (I35ded)

  • Tous les composables marqués avec @ReadOnlyComposable sont maintenant validés à la compilation pour s'assurer qu'ils n'appellent que d'autres @ReadOnlyComposables. (I58961).

  • Suppression de l'API TargetAnimation. (If47d1, b/177457083)

  • Mise à jour de Modifier.verticalScroll()/horizontalScroll(), où la position de défilement est désormais représentée par des entiers. (I81298)

  • Remplacement des packages des méthodes smoothScrollBy et scrollBy par androidx.compose.foundation.gestures.*. (I3f7c1, b/175294473)

  • Changement de nom : FlingConfig devient FlingBehavior, et permet désormais de personnaliser l'animation de suspension plutôt que d'utiliser les décompositions prédéfinies. (I02b86, b/175294473)

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

  • Changement de nom : defaultMinSizeConstraints devient defaultMinSize. (I4eaae)

  • Déplacement d'Orientation vers le package Foundation. Déplacement de VelocirtTracker de ui.gesture vers ui.input.pointer. (Iff4a8, b/175294473)

  • Reclassement de drawerState.open() et drawerState.close() comme fonctions de suspension. Utilisez rememberCoroutineScope() pour obtenir le champ d'application de la composition afin de les appeler. (I16f60, b/175294473)

  • Changement de nom : Providers devient CompositionLocalProvider.

    • Abandon du constructeur de composition, qui n'accepte plus de paramètre de clé.
    • Conversion de la fonction modulable de premier niveau currentCompositeKeyHash en propriété de premier niveau pour composable.
    • Déplacement de CompositionData et CompositionGroup vers l'espace de noms androidx.compose.runtime.tooling.
    • Conversion de la classe concrète ComposableLambda en interface sans paramètres de type.
    • Conversion de la classe concrète ComposableLambdaN en interface sans paramètres de type.
    • Déplacement de la fonction snapshotFlow vers l'espace de noms androidx.compose.runtime.
    • Reclassement de la méthode de fusion de SnapshotMutationPolicy, qui n'est plus en phase expérimentale.
    • Suppression de la fonction clearRoots @TestOnly, qui n'était plus nécessaire.
    • Suppression des fonctions keySourceInfoOf et resetSourceInfo, qui n'étaient plus nécessaires.
    • Suppression de Composer.collectKeySourceInformation, qui n'était plus nécessaire.
    • Suppression des méthodes isJoinedKey, joinedKeyLeft et joinedKeyRight, qui n'étaient plus nécessaires.
    • Déplacement et réorganisation de différentes API de premier niveau dans différents fichiers. En raison de la sémantique des classes de fichiers en Kotlin, ces changements empêcheront la compatibilité binaire, mais n'affecteront pas la compatibilité avec la source. La plupart des utilisateurs ne devraient donc pas rencontrer de problème.
    • (I99b7d, b/177245490)
  • Mise à jour de Modifier.scrollable, retravaillé, qui utilise désormais une interface Scrollable au lieu de la classe ScrollableController. (I4f5a5, b/174485541, b/175294473)

  • Mise à jour de Modifier.draggable, qui accepte désormais DraggableState au lieu d'un simple lambda. Vous pouvez créer un état via rememberDraggableState { delta -> } pour obtenir le même comportement que précédemment. (Ica70f, b/175294473)

  • Reclassement de ZoomableController.smoothScaleBy et ZoomableController.stopAnimation en fonctions de suspension. (I7f970, b/177457083)

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

  • 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)
  • BasicTextField accepte désormais Brush au lieu de Color pour une meilleure personnalisation (I83a36)

  • imageResource et vectorResource sont désormais des fonctions d'extension pour ImageBitmap et ImageVector respectivement. load{Image,Vector,Font}Les fonctions Resource ont été supprimées. (I89130)

  • Remplacement d'Indication#createIndication() par Indication#rememberUpdatedIndication(InteractionState) et suppression du paramètre InteractionState de IndicationInstance#drawIndication(). IndicationInstance ne doit s'occuper que de dessiner les effets visuels, et non du lancement d'animations / de l'état d'écriture en réponse aux modifications d'InteractionState. Ces animations et écritures d'état doivent avoir lieu dans rememberUpdatedIndication(). En outre, le paramètre indication est désormais obligatoire dans Modifier.indication. (Ic1764, b/152525426)

Corrections de bugs

  • Ajout d'une nouvelle API locale de composition LocalSoftwareKeyboardController pour remplacer l'ancienne interface SoftwareKeyboardController sur TextField. (I658b6, b/168778053)

Version 1.0.0-alpha12

10 février 2021

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

Modifications apportées à l'API

  • Mise à jour de Modifier.pointerInput, qui nécessite désormais des clés de mise en mémoire pour indiquer le moment où la coroutine de détection des entrées de pointeur doit redémarrer pour les nouvelles dépendances. (I849cd)
  • BottomDrawerLayout et ListItem ont été marqués comme @ExperimentalMaterialApi (Id766e)
  • Ajout de PaddingValues.Absolute, qui peut être utilisé dans les API acceptant des PaddingValues. (Ia5f30)
  • Abandon de onImeActionPerformed. Utilisez KeyboardActions à la place. (If0bbd, b/179071523)
  • Changement de nom : ImagePainter devient BitmapPainter, afin de mieux correspondre aux conventions de nommage de ImageBitmap et ImageVector et de refléter son parallèle, VectorPainter. (Iba381, b/174565889)
  • Reclassement de Animatable.snapTo et Animatable.stop en fonctions de suspension. (If4288)
  • Déplacement de ComponentActivity.setContent vers androidx.activity.compose.setContent dans le module androidx.activity:activity-compose. (Icf416)
  • Suppression des méthodes de déstructuration et copy() de plusieurs classes où elles n'étaient que rarement utilisées. (I26702, b/178659281)
  • Ajout de la fonction halfExpand() et expand() à ModalBottomSheetState en interne (Ic914e).
  • Reclassement de Indication#createInstance, désormais marqué comme @Composable, et mise à jour de LocalIndication, qui contient désormais un Indication, et non plus () -> Indication. (I5eeea, b/157150564)
  • Déplacement d'AlertDialog et de DropdownMenu uniquement vers Android pour le moment. Ajout du paramètre PopupProperties à DropdownMenu pour une configuration plus avancée du pop-up sous-jacent. (I9c443)
  • Abandon de loadFontResource, désormais obsolète. Utilisez plutôt fontResource. Abandon de imageResource, loadImageResource, vectorResource et loadVectorResource. Utilisez plutôt painterResource. (I6b809)
  • Suppression des paramètres toggle et toggleModifier de DropdownMenu, et changement du nom de dropdownModifier, dropdownOffset et dropdownContent en modifier, offset et content, respectivement. DropdownMenu se comporte désormais de manière cohérente avec Popup, où la mise en page parent est utilisée pour la position du menu. Dans la plupart des cas, vous pouvez déplacer toggle pour qu'il soit un frère de DropdownMenu et encapsuler les deux dans une Box. Consultez l'exemple mis à jour dans la documentation pour en savoir plus sur l'utilisation de cette API. (I884fb)
  • Changement de nom : toIntPx() devient roundToPx(). (I9b7e4, b/173502290)
  • Changement de nom : IntBounds devient IntRect et l'API a été améliorée. (I1f6ff).
  • 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)
  • 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 ProgressBarRangeInfo.Indeterminate pour marquer les barres de progression indéterminées à des fins d'accessibilité. (I6fe05)
  • Abandon de @ComposableContract, désormais remplacé par trois annotations plus spécifiques.

    • @ComposableContract(restartable = false) est devenu @NonRestartableComposable
    • @ComposableContract(readonly = true) est devenu @ReadOnlyComposable
    • @ComposableContract(preventCapture = true) est devenu @DisallowComposableCalls
    • @ComposableContract(tracked = true) a été supprimé.
    • (I60a9d)
  • Abandon des utilitaires emptyContent() et (@Composable () -> Unit).orEmpty(), qui n'ont plus d'impact positif sur les performances ni de valeur ajoutée. (I0484d)

  • Changement de nom : rememberSavedInstanceState() devient rememberSaveable(), et a été déplacé vers le package androidx.compose.runtime.saveable. (I1366e, b/177338004)

  • Déplacement de Saver, listSaver(), mapSaver() et autoSaver depuis androidx.compose.runtime.savedinstancestate vers androidx.compose.runtime.saveable. (I77fe6)

  • Changement de nom : les paramètres de RounderCornerShape, CutCornerShape et CornerBasedShape ont été renommés de left/right en start/end, pour permettre la mise en miroir automatique de la forme pour la lecture de droite à gauche. Ajout de AbsoluteRounderCornerShape et AbsoluteCutCornerShape pour les cas où la mise en miroir automatique n'est pas souhaitée. (I61040, b/152756983)

  • Modification des paramètres text et icon de Tab et du paramètre label de BottomNavigationItem pour qu'ils soient nullables, afin de mieux exprimer le comportement du composant lorsque ces paramètres sont fournis ou non, car cela affecte la taille et la mise en page de l'élément. Si vous transmettez actuellement emptyContent() pour ne pas représenter text/icon/label, utilisez plutôt null. (I57ed4)

  • Renommage du paramètre contentColorFor en backgroundColor (I5bb67)

  • Remplacement de TabDefaults, qui était obsolète, par TabRowDefaults. (I0f189)

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

  • Abandon de AnimatedValue/Float. Utilisez Animatable à la place. (I71345, b/177457083)

  • Ajout de l'API SemanticsProperties.PaneTitle. (I20d5a)

  • Ajout de paramètres activés à Tab et BottomNavigationItem pour éviter qu'ils soient cliquables. Modification de BottomNavigationItem en RowScope.BottomNavigationItem pour mieux exprimer ses exigences de mise en page dans son API. (Id683d)

  • Abandon de tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter et pressIndicationGestureFilter. Utilisez plutôt Modifier.clickable ou Modifier.pointerInput avec la fonction detectTapGestures. (I6baf9, b/175294473)

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

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

Corrections de bugs

  • L'icône s'agrandit et s'adapte à sa taille, en respectant les modificateurs de taille qui lui sont appliqués. Par exemple, Icon(.., modifier = Modifier.size(50.dp) dessinera désormais dans un espace de 50 x 50 dp. (Ib2ba9, b/178796190)

Version 1.0.0-alpha11

28 janvier 2021

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

Modifications apportées à l'API

  • Promotion de certaines API Material pour qu'elles ne soient plus @Experimental (I5d20e)
  • Ajout du paramètre de description du contenu à Image et Icon, utilisé pour fournir la description aux services d'accessibilité. (I2ac4c)
  • Modification des interfaces des paramètres avec état Material pour qu'elles comportent des fonctions @Composable qui renvoient State<T>. Ajout d'Animatable.asState() pour faciliter la conversion d'un Animatable en State. Modification d'animateElevation pour en faire une extension de suspension sur Animatable. (If613c)
  • Snackbar, SnackbarHost et SnackbarHostState ne sont plus des @ExperimentalMaterialAPI (Id1fb5)
  • Modification de Typography, de Shapes et de TabPosition qui ne sont plus des classes de données. Ajout d'une fonction de copie pour Typography et Shapes pour remplacer celles générées. (I40037)
  • Suppression de certaines API Material obsolètes (Ifaa25)

Corrections de bugs

  • Abandon des propriétés onCommit, onDispose et onActive, remplacées par les API SideEffect et DisposableEffect. (If760e)
  • Abandon de la transition basée sur TransitionDefinition. (I0ac57)
  • Prise en charge d'Initial State dans updateTransition (Ifd51d)
  • Mise à jour de WithConstraints, retravaillé, remplacé par BoxWithConstraints et déplacé vers foundation.layout. (I9420b, b/173387208)
  • Abandon de la fonction non suspensive scrollBy, suppression de la fonction non suspensive scrollTo.

    Nous vous recommandons d'utiliser des fonctions de suspension pour contrôler le défilement et attendre la fin du défilement. Dans le cadre de cette transition, les versions non suspensives de ces fonctions sont abandonnées et/ou supprimées. (Ie9ced)

  • Abandon de la fonction non suspensive smoothScrollBy. Nous vous recommandons d'utiliser des fonctions de suspension pour contrôler le défilement et attendre la fin du défilement. Dans le cadre de cette transition, les versions non suspensives de ces fonctions sont abandonnées et/ou supprimées. (I12880)

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

  • L'ondulation utilisée dans Button et FloatingActionButton n'est plus personnalisable en fournissant une nouvelle Indication via AmbientIndication. L'Indication n'a jamais été conçue pour personnaliser ces composants et cette mesure rend désormais cohérents ces composants avec les autres composants Material. Pour personnaliser des ondulations dans une application, consultez RippleTheme. (I546c5)

  • Changement de nom : animateAsState devient animateFooAsState, où "Foo" est le type de variable animée (Float, Dp, Offset, etc.). (Ie7e25)

  • BasicTextField a reçu un nouveau paramètre appelé decorationBox. Il permet d'ajouter des décorations telles que des icônes, des espaces réservés, des libellés et d'autres éléments similaires au champ de texte, et d'augmenter la zone cible de ce champ. (I16996)

  • Correction d'un bug qui empêchait de définir la largeur du champ de texte Material sur une valeur inférieure à 280 dp (I78373)

  • Suppression du paramètre canDrag dans Modifier.draggable. (Ic4bec, b/175294473)

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

  • Surface peut désormais avoir plusieurs enfants de mise en page. (I66a92, b/144488459)

  • Abandon de invalidate et compositionReference(), respectivement remplacés par currentRecomposeScope et par rememberCompositionReference. (I583a8)

  • Mise à jour de PopupPositionProvider, afin d'utiliser des coordonnées relatives à la fenêtre plutôt que des coordonnées globales. Renommage du paramètre parentGlobalBounds en anchorBounds, et modification de la valeur de windowGlobalBounds pour 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)

  • Suppression de AnimatedFloat.fling, qui accepte FlingConfig. Utilisez la fonction de suspension Animatable.animateDecay à la place. (I4659b, b/177457083)

  • Mise à jour des composants pouvant être cliqués, activés/désactivés et sélectionnés, qui peuvent désormais être créés en dehors de la composition. (I0a130, b/172938345, b/175294473)

  • Remplacement du lissage de vitesse par une interface fonctionnelle (Ib14e5)

  • Abandon de ScrollableColumn/Row. ScrollableColumn est moins efficace que LazyColumn pour les contenus volumineux, car LazyColumn permet de composer, mesurer et dessiner exclusivement les éléments visibles. Pour détourner les utilisateurs de l'approche inefficace, nous avons décidé d'abandonner ScrollableColumn et ScrollableRow, et d'encourager l'utilisation de LazyColumn et LazyRow. Les utilisateurs peuvent désactiver le comportement Lazy et utiliser les modificateurs directement, comme suit : Column(Modifier.verticalScroll(rememberScrollState())). (Ib976b, b/170468083)

  • Ajout d'une méthode de fabrique items(count: Int) pour le champ d'application de LazyColumn/LazyRow/LazyVerticalGrid. items(items: List) et itemsIndexed(items: List) sont désormais des fonctions d'extension, qui doivent être importées manuellement lorsqu'elles sont utilisées. Ajout de surcharges d'extension pour les tableaux : items(items: Array) et itemsIndexed(Array). (I803fc, b/175562574)

  • Suppression des méthodes expérimentales monotonicFrameAnimationClockOf. (Ib753f, b/170708374)

  • Abandon des méthodes de coordonnées globales, remplacées par de nouvelles méthodes de coordonnées relatives aux fenêtres. (Iee284)

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

  • Mise à profit de TestCoroutineDispatcher dans les tests. (I532b6)

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

Version 1.0.0-alpha10

13 janvier 2021

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

Modifications apportées à l'API

  • 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 : Position devient DpOffset. Suppression de getDistance(). (Ib2dfd)
  • Changement de nom : Color.useOrElse() devient Color.takeOrElse(). (Ifdcf5)
  • Ajout de Toggle à Strings.kt dans Foundation. (I4a5b7, b/172366489)
  • Abandon de FlowRow et FlowColumn. Veuillez utiliser une mise en page personnalisée à la place. (I09027)
  • Abandon de Modifier.focus() et Modifier.focusRequester(). Utilisez Modifier.focusModifier() et Modifier.focusReference() à la place. (I75a48, b/175160751, b/175160532, b/175077829)
  • 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)

Corrections de bugs

  • Prise en charge des champs de texte désactivés et en lecture seule. (I35279, b/171040474, b/166478534)
  • Remplacement de animate() par animateAsState(), qui renvoie State<T> au lieu de T. Cela permet d'améliorer les performances, car le champ d'invalidation peut être réduit à l'endroit où la valeur State est lue. (Ib179e)
  • Ajout d'une API de rôle Semantics, et de Role en tant que paramètre des éléments SemanticsModifier pouvant être cliqués, sélectionnés ou activés/désactivés. Modification de Modifier.progressSemantics, afin que le rendre utilisable par Slider. (I216cd)

Version 1.0.0-alpha09

16 décembre 2020

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

Modifications apportées à l'API

  • Ajout d'une API pour déclencher manuellement le réglage de l'animation et la faire glisser dans Modifier.swipeable (Iaa17a, b/162408885)
  • Changement de nom : les objets *Constants, tels que ButtonConstants, se terminent désormais par "Defaults" (exemple : ButtonDefaults). Suppression des préfixes default inutiles des propriétés de ces nouveaux objets. (Ibb915, b/159982740)
  • Compose prend en charge les getters de propriété qui peuvent effectuer des appels composables. Cette fonctionnalité ne sera pas supprimée, mais la syntaxe permettant de déclarer un getter de propriété comme étant @Composable change.

    Pour ce faire, la syntaxe désormais obsolète consistait à annoter la propriété elle-même :

        @Composable val someProperty: Int get() = ...
    

    Désormais, vous devez utiliser la syntaxe correcte ci-dessous en annotant le getter de la propriété :

       val someProperty: Int @Composable get() = ...
    

    Les deux syntaxes fonctionneront pendant un certain temps, mais à terme, l'ancienne syntaxe deviendra une erreur de compilation. (Id9197)

  • Ajout de la bibliothèque androidx.compose.material:material-ripple contenant des API d'ondulation pour permettre la création de composants interactifs sans avoir besoin du reste de la bibliothèque Material. Abandon de rememberRippleIndication qui a été remplacé par rememberRipple. (Ibdf11)

Corrections 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)
  • Refactorisation de ShaderBrush pour créer en différé une instance de nuanceur lorsque les informations de dimensionnement de l'environnement de dessin sont disponibles. Cette option est utile pour définir les dégradés qui occupent complètement l'espace délimité d'un composable au moment de la composition, sans implémentations personnalisées de DrawModifier.

    Abandon des API de constructeur de fonctions de dégradés, à remplacer par des méthodes de fabrique sur un objet Gradient. (I511fc, b/173066799)

  • Abandon de Modifier.focusObserver. Utilisez Modifier.onFocusChanged ou Modifier.onFocusEvent à la place. (I30f17, b/168511863, b/168511484)

  • Abandon de LazyColumnFor, LazyRowFor, LazyColumnForIndexed et LazyRowForIndexed. Utilisez LazyColumn et LazyRow à la place. (I5b48c)

  • Déplacement de Dp.VectorConverter, Position.VectorConverter, etc. vers animation-core, et abandon des anciens VectorConverters (If0c4b)

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

  • Ajout d'une fonction infiniteRepeatable pour créer un InfiniteRepeatableSpec. (I668e5)

  • Le comportement de positionnement de DropdownMenus a été légèrement modifié conformément à la spécification de Material. (I34c72, b/168594123)

  • Prise en charge d'InteractionState par TextFields. (I61d91)

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

Version 1.0.0-alpha08

2 décembre 2020

Publication d'androidx.compose.material:material:1.0.0-alpha08, androidx.compose.material:material-icons-core:1.0.0-alpha08 et androidx.compose.material:material-icons-extended:1.0.0-alpha08. Liste des commits de la version 1.0.0-alpha08.

Modifications apportées à l'API

  • 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 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)
  • 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)
  • Déplacement des propriétés sémantiques de Foundation vers UI. (I6f05c)
  • Abandon de fun RippleIndication() et remplacement par rememberRippleIndication() pour cohérence avec d'autres API. (Id8e2c)
  • Ajout d'un paramètre singleLine dans BasicTextField, TextField et OutlinedTextField. Définissez ce paramètre sur "true" pour transformer le champ de texte en une seule ligne à faire défiler horizontalement. (I57004, b/168187755)

Corrections de bugs

  • 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)
  • 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)
  • 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)
  • Introduction des API SweepGradientShader et SweepGradientBrush. (Ia22c1)
  • 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)
  • 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)
  • Ajout d'une surcharge Modifier.drawLayer(). Elle utilise un bloc lambda sur une nouvelle GraphicsLayerScope où vous définissez les paramètres du calque d'une manière qui vous permette d'ignorer la recomposition et la nouvelle mise en page lorsque le changement d'état se produit. Préparation de DrawLayerModifier en interne pour la migration de sa logique vers sa méthode placeable.placeWithLayer() dans 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)
  • Ajout d'une vérification lint pour contrôler si les fabriques de modificateur utilisent androidx.compose.ui.composed {} en interne, au lieu d'être marquées comme @Composable. (I3c4bc)
  • Changement de nom : l'argument sémantique mergeAllDescendants devient mergeDescendants. (Ib6250)
  • Reclassement du contrôle du temps dans les tests (TestAnimationClock et ses utilisations), désormais expérimental. (I6ef86, b/171378521)
  • Suppression de l'ancien module ui-test et ses bouchons. (I3a7cb)
  • Changement de nom : TextUnit.Inherit devient TextUnit.Unspecified pour plus de cohérence avec les autres unités. (Ifce19)
  • Mise à jour de l'interface Alignment, désormais fonctionnelle. (I46a07, b/172311734)
  • Renommage d'ID en layoutId pour LayoutIdParentData. Renommage de Measurable.id en Measurable.layoutId. (Iadbcb, b/172449643)

Version 1.0.0-alpha07

11 novembre 2020

Publication d'androidx.compose.material:material:1.0.0-alpha07, androidx.compose.material:material-icons-core:1.0.0-alpha07 et androidx.compose.material:material-icons-extended:1.0.0-alpha07. Liste des commits de la version 1.0.0-alpha07

Modifications apportées à l'API

  • Abandon d'Emphasis, remplacé par AmbientContentAlpha. AmbientContentAlpha est une abstraction plus simple qui représente la version alpha du contenu à privilégier dans une partie de la hiérarchie, de la même manière que la couleur AmbientContentColor représente la couleur de contenu préférée. Text et Icon utilisent désormais la valeur actuelle d'AmbientContentAlpha par défaut. Vous pouvez manuellement appliquer : color.copy(alpha = AmbientContentAlpha.current) pour avoir le même effet dans vos composants. Au lieu d'utiliser ProvideEmphasis, vous pouvez simplement fournir directement une valeur via AmbientContentAlpha, puis utiliser les nouveaux niveaux par défaut dans ContentAlpha pour remplacer les anciens EmphasisLevels. (Idf03e, b/159017896)
  • Ajout d'androidx.compose.material.AmbientContentColor pour remplacer androidx.compose.foundation.AmbientContentColor (I84f7b, b/172067770)
  • Ajout d'androidx.compose.material.Text pour remplacer androidx.compose.foundation.Text en tant que composant textuel de niveau supérieur avec un thème. Pour un composant de texte de base qui n'utilise pas le style de couleur/texte du thème, utilisez BasicText. (Ie6ae0)
  • Ajout de maxLines à TextFields. (Ib2a5b)
  • Mise à jour de TextFields, qui accepte désormais KeyboardOptions. (Ida7f3)
  • Surface utilise désormais l'altitude absolue (totale) lors du calcul des superpositions d'altitude. Ainsi, une surface imbriquée dans une autre surface utilise la hauteur combinée pour dessiner la superposition. (I7bd2b, b/171031040)

Corrections de bugs

  • captureToBitmap déplacé vers captureToImage. (I86385)
  • Abandon d'AmbientTextStyle, ProvideTextStyle et AmbientContentColor dans Foundation. Utilisez les nouvelles versions disponibles dans la bibliothèque Material à la place. Pour les applications non Material, vous devez créer vos propres Ambients de thématisation spécifiques du système de conception, qui pourront être consommés dans vos propres composants. (I74acc, b/172067770)
  • Abandon de foundation.Text, remplacé par material.Text. Pour obtenir une API de texte basique non catégorique, qui ne consomme aucune valeur de thème, reportez-vous à androidx.compose.foundation.BasicText. (If64cb)
  • Changement de nom : KeyboardOptions devient ImeOptions. (I82f36)
  • Déplacement de KeyboardType et ImeAction vers KeyboardOptions. (I910ce)
  • Abandon de BaseTextField. Utilisez plutôt BasicTextField. (I896eb)
  • 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)
  • Mise à jour de l'API Icon, qui accepte désormais Color.Unspecified en tant que teinte possible pour dessiner l'élément ou l'objet Painter fourni sans ColorFilter. Auparavant, lorsque vous essayiez d'ignorer la teinture avec Color.Unspecified, une couleur transparente était appliquée. Par conséquent, rien n'était affiché. (I049e2, b/171624632)
  • 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).
  • 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)

Version 1.0.0-alpha06

28 octobre 2020

Publication d'androidx.compose.material:material:1.0.0-alpha06, androidx.compose.material:material-icons-core:1.0.0-alpha06 et androidx.compose.material:material-icons-extended:1.0.0-alpha06. Liste des commits de la version 1.0.0-alpha06

Modifications apportées à l'API

  • Déplacement de androidx.compose.foundation.Icon vers androidx.compose.material.Icon. Si vous ne souhaitez pas utiliser la bibliothèque Material, vous pouvez également utiliser le composant Image ou Modifier.paint() avec un Painter. (I9f622)
  • Ajout de FloatingActionButtonElevation pour représenter l'altitude utilisée par les boutons d'action flottants dans différents états. Reportez-vous à FloatingActionButtonConstants.defaultElevation() pour l'implémentation par défaut (I2d4f5)
  • Ajout de l'interface SwitchColors pour représenter les couleurs utilisées par un contacteur dans différents états. Consultez SwitchConstants.defaultColors pour personnaliser ces couleurs. (I93805)
  • Ajout des interfaces ButtonElevation et ButtonColors pour représenter l'élévation et les couleurs utilisées par les boutons dans différents états. Consultez les fonctions par défaut dans ButtonConstants pour personnaliser ces paramètres. (Ic5b7b)
  • Ajout de l'interface RadioButtonColors pour représenter les couleurs utilisées par un élément RadioButton dans différents états. Reportez-vous à RadioButtonConstants.defaultColors() pour personnaliser les couleurs utilisées dans les différents états. (I74130)
  • Ajout de l'interface CheckboxColors pour représenter les couleurs utilisées par une case à cocher dans différents états. Consultez CheckboxConstants.defaultColors() pour personnaliser les couleurs utilisées dans les différents états. (I7dbdb)

Corrections de bugs

  • Les composants Material ne définissent plus l'élévation en zIndex. Ainsi, dans le même parent, l'enfant dont l'ombre est plus grande ne sera pas dessiné automatiquement au-dessus de l'enfant dont l'ombre est plus petite. Si vous avez toujours besoin d'un tel comportement, définissez manuellement Modifier.zIndex() si nécessaire (I70417, b/170623932).
  • Abandon de VectorPainter, à remplacer par rememberVectorPainter pour mieux indiquer que l'API composable exploite "remember" en interne pour conserver les données entre les compositions. (Ifda43)
  • Prise en charge des transitions dans ComposeTestRule. L'option permettant d'activer le curseur clignotant dans ComposeTestRule a été supprimée. (If0de3)
  • Ajout d'une option de clavier sur une seule ligne à CoreTextField. (I72e6d)
  • Changement de nom : l'API Radius devient CornerRadius pour mieux refléter son utilisation dans Compose. La documentation a été mise à jour pour indiquer que les valeurs de rayon négatives sont limitées à zéro. (I130c7, b/168762961)
  • 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)
  • Conversion de Box en fonction inline. (Ibce0c, b/155056091)

Version 1.0.0-alpha05

14 octobre 2020

Publication d'androidx.compose.material:material:1.0.0-alpha05, androidx.compose.material:material-icons-core:1.0.0-alpha05 et androidx.compose.material:material-icons-extended:1.0.0-alpha05. Liste des commits de la version 1.0.0-alpha05

Modifications apportées à l'API

  • 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)
  • Modifier.swipeable comporte actuellement des seuils de 56.dp pour les états (Iab825, b/168610267).
  • Tous les états d'échafaudage marqués comme @Stable. drawerGesturesEnabled dans ScaffoldState a été déplacé vers Scaffold lui-même. (I36645, b/168297016)
  • Suppression du type nullable des paramètres de lambda Scaffold. Vous pouvez utiliser emptyContent() pour ne spécifier aucun contenu pour un paramètre donné. (I2b318, b/157633857, b/158551084)
  • Abandon des API contentColor() et currentTextStyle() APIs, remplacées respectivement par les Ambients AmbientContentColor et AmbientTextStyle. Vous pouvez accéder à la valeur actuelle en utilisant .current sur la propriété Ambient, comme avec n'importe quelle autre Ambient. Cette modification offre plus de cohérence et évite d'avoir plusieurs méthodes aboutissant au même résultat. De plus, certaines propriétés Ambient ont été renommées pour mieux décrire leur fonction, comme suit :

    • ContentColorAmbient -> AmbientContentColor
    • TextStyleAmbient -> AmbientTextStyle
    • IndicationAmbient -> AmbientIndication
    • EmphasisAmbient -> AmbientEmphasisLevels
    • RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
  • Ajout du paramètre AmbientElevationOverlay, qui permet de personnaliser/désactiver la superposition d'élévation par défaut appliquée aux Surfaces du thème sombre. (I5b74d)

Corrections de bugs

  • Changement de nom : Color.Unset devient Color.Unspecified pour normaliser les valeurs sentinelles des classes inline et assurer la cohérence avec les autres classes inline. (I97611, b/169797763)
  • 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)
  • Renommage de launchInComposition en LaunchedTask pour correspondre aux consignes de l'API Compose. (I99a8e).
  • Changement de nom : OnPositionedModifier devient OnGloballyPositionedModifier et onPositioned() devient onGloballyPositioned(). (I587e8, b/169083903)

Version 1.0.0-alpha04

1er octobre 2020

Publication d'androidx.compose.material:material:1.0.0-alpha04, androidx.compose.material:material-icons-core:1.0.0-alpha04 et androidx.compose.material:material-icons-extended:1.0.0-alpha04. Liste des commits de la version 1.0.0-alpha04

Modifications apportées à l'API

  • Expose les paramètres InteractionState dans des composants Material avec état, pour permettre le hissage de l'état et la lecture/le contrôle de l'état. (Iaca5f, b/168025711, b/167164434)
  • Modification des paramètres *color de RadioButton et TriStateCheckbox pour permettre de personnaliser entièrement les couleurs utilisées dans chaque état et de modifier l'animation des couleurs entre les états, si vous le souhaitez. Pour en savoir plus, consultez les nouvelles fonctions de couleur animateDefault* dans CheckboxConstants et RadioButtonConstants. (I1c532)
  • Renommage de rememberBackdropState en rememberBackdropScaffoldState et ajout d'un paramètre supplémentaire pour l'horloge d'animation. Renommage du paramètre backdropScaffoldState de BackdropScaffold en scaffoldState. Remplacement de BackdropConstants par BackdropScaffoldConstants. (Ib644d)
  • Ajout d'un composant BottomSheetScaffold expérimental. (Ie02f0, b/148996320)
  • Ajout du composant expérimental ModalBottomSheetLayout. (Ic209e, b/148996320)
  • Renommage de ButtonConstants/FloatingActionButtonConstants.defaultAnimatedElevation en defaultElevation, qui renvoie désormais une valeur Dp plutôt qu'une valeur AnimatedValue. (I5f3ed)

Corrections 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)
  • Suppression de la prise en charge des importations statiques pour le contenu des champs d'application des mises en page (par exemple, alignWithSiblings dans RowScope). Utilisez le champ d'application explicite à la place : with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, b/166760797)

Version 1.0.0-alpha03

16 septembre 2020

Publication d'androidx.compose.material:material:1.0.0-alpha03, androidx.compose.material:material-icons-core:1.0.0-alpha03 et androidx.compose.material:material-icons-extended:1.0.0-alpha03. Liste des commits de la version 1.0.0-alpha03.

Modifications apportées à l'API

  • Renommage du paramètre onSelect de BottomNavigationItem en onClick (I91925, b/161809324)
  • Ajout du paramètre InteractionState à BottomNavigationItem et Tab, ce qui permet de hisser cet état et d'ajuster l'apparence du composant dans différents états. (Ia3e9e, b/168025711)
  • Suppression des paramètres disabledBackgroundColor et disabledContentColor des boutons. Vous devez plutôt utiliser les nouvelles fonctions de couleur par défaut dans ButtonConstants. Si vous définissez déjà contentColor/backgroundColor explicitement, utilisez plutôt ces fonctions par défaut et personnalisez certains / tous les paramètres pour éviter de remplacer la couleur pour les états activés/désactivés. (If9b52)
  • La couleur d'arrière-plan de Textfield n'applique pas implicitement la transparence alpha. Au lieu de cela, toute couleur fournie via le paramètre backgroundColor est appliquée directement. (Iecee9, b/167951441)
  • Changement de nom : InnerPadding devient PaddingValues. (I195f1, b/167389171)
  • Remplacement des paramètres resistanceFactorAtMin et resistanceFactorAtMax de Modifier.swipeable par un seul paramètre de résistance. Ajout d'une méthode defaultResistanceConfig dans SwipeableConstants. (I54238)
  • Ajout de la prise en charge de l'élévation animée avec état pour Button et FloatingActionButton. L'élévation s'anime désormais entre les états "par défaut" et les états "appuyés". Pour personnaliser l'élévation entre les états, utilisez ButtonConstants.defaultAnimatedElevation() et FloatingActionButtonConstants.defaultAnimatedElevation() au lieu de définir une valeur Dp fixe dans tous les cas. (I37925)
  • Conversion du libellé en paramètre facultatif dans TextField et OutlinedTextField (I267f6, b/162234081).

Corrections de bugs

  • Les fonctions de test globales, telles que onNode ou waitForIdle, sont désormais obsolètes. Veuillez migrer vers leurs nouveaux équivalents définis sur ComposeTestRule. (I7f45a)
  • Abandon de DpConstraints et des APIs qui l'utilisaient. (I90cdb, b/167389835)
  • Changement de nom : les paramètres minWidth et maxWidth de widthIn deviennent min et max, et il est en va de même pour preferredWidthIn, heightIn, preferredHeightIn. (I0e5e1, b/167389544)
  • Suppression des actions sémantiques de défilement vers l'avant/arrière. Ajout d'étapes dans AccessibilityRangeInfo. (Ia47b0)
  • 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)
  • Déplacement de createAndroidComposeRule et AndroidInputDispatcher, de androidx.ui.test.android vers androidx.ui.test. (Idef08, b/164060572)

Version 1.0.0-alpha02

2 septembre 2020

Publication d'androidx.compose.material:material:1.0.0-alpha02, androidx.compose.material:material-icons-core:1.0.0-alpha02 et androidx.compose.material:material-icons-extended:1.0.0-alpha02. Liste des commits de la version 1.0.0-alpha02

Modifications apportées à l'API

  • Ajout d'un composant BackdropScaffold expérimental. (Iad908)

Corrections de bugs

  • Remplacement de Matrix4 par Matrix. Toutes les autres parties du package vectormath ont été supprimées. (Ibd665, b/160140398)

Version 1.0.0-alpha01

26 août 2020

Publication d'androidx.compose.material:material:1.0.0-alpha01, androidx.compose.material:material-icons-core:1.0.0-alpha01 et androidx.compose.material:material-icons-extended:1.0.0-alpha01. Liste des commits de la version 1.0.0-alpha01

Problème connu

= Le premier caractère d'un TextField Material ne peut pas être supprimé à l'aide d'un retour arrière (b/165956313)

Version 0.1.0-dev

Version 0.1.0-dev17

19 août 2020

Publication d'androidx.compose.material:material:0.1.0-dev17, androidx.compose.material:material-icons-core:0.1.0-dev17 et androidx.compose.material:material-icons-extended:0.1.0-dev17. Liste des commits de la version 0.1.0-dev17

Modifications apportées à l'API

  • Suppression de RadioGroup et RadioGroupItems, devenus obsolètes. Utilisez Row et RadioButton à la place (I381b7, b/163806637).
  • 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)
  • Changement de nom pour certaines propriétés dans SwipeableState : swipeTarget -> targetValue, swipeProgress -> progress, swipeDirection -> direction. Ajout d'une fonction rememberSwipeableState pour créer des SwipeableStates. (I2fc9c, b/163129614, b/163132293)
  • Ajout de la prise en charge de Snackbar et de la mise en file d'attente appropriée. Accédez-y via la fonction de suspension SnackbarHostState.showSnackbar. En outre :
    • Ajout des composants SnackbarHost. Ils hébergent des Snackbars en fonction de l'état et sont responsables de la transition entre les Snackbars.
    • Ajout de SnackbarHostState pour permettre de contrôler les snackbars et les hôtes de snackbars, mais aussi de les dissocier de ScaffoldState. Vous pouvez également accéder à cet état via scaffoldState.snackbarHostState.
    • Ajout d'une surcharge de snackbar pour faciliter l'interface entre snackbarHostState et les snackbars. (I79aaa)
  • Ajout d'un paramètre activé à IconButton et réorganisation des paramètres dans IconToggleButton (I0a941, b/161809385, b/161807956)
  • Suppression de la version ListItem avec une API basée sur des chaînes. Utilisez plutôt la version de l'emplacement. (Ib8f57, b/161804681)
  • Suppression du composant FilledTextField, devenu obsolète. Veuillez utiliser TextField à la place pour obtenir l'implémentation Material Design du champ de texte rempli. (I5e889)
  • Mise à jour d'AlertDialog, qui utilise désormais FlowRow pour les boutons. (I00ec1, b/161809319, b/143682374)
  • Ajout de paramètres dans Modifier.swipeable pour modifier le niveau de résistance lors du balayage au-delà des limites. Suppression des paramètres [min/max]Value. (I93d98)
  • Ajout du paramètre backgroundColor à LinearProgressIndicator et suppression de la marge intérieure interne de CircularProgressIndicator. Ajout de ProgressIndicatorConstants.DefaultProgressAnimationSpec, qui peut être utilisé comme AnimationSpec par défaut lors de l'animation de la progression entre les valeurs. (If38b5, b/161809914, b/161804677)
  • Ajout d'un paramètre facultatif velocityThreshold à Modifier.swipeable. (I698ba)
  • bottomBarSize, fabSize et autres ne sont plus disponibles dans ScaffoldState. Utilisez Modifier.onPosition à la place sur le composant dont vous souhaitez connaître la taille. Les paramètres Modifier et contentColor ont été ajoutés à Scaffold (Ic6f7b, b/161811485, b/157174382).
  • Renommage et réorganisation de certains paramètres dans Tab pour cohérence avec les autres API (Ia2d12, b/161807532).
  • Division de la ligne TabRow en TabRow et ScrollableTabRow, en supprimant l'élément isScrollable de TabRow. Ajout d'edgePadding dans ScrollableTabRow, ce qui permet de contrôler l'espace disponible avant/après les onglets. (I583e8, b/161809544)
  • Suppression de l'objet TabRow et remplacement par TabConstants. Déplacement de TabRow.TabPosition vers le niveau supérieur (TabPosition), et renommage de indicatorContainer en indicator. Consultez les exemples et la documentation pour en savoir plus sur l'utilisation de l'API mise à jour et sur les valeurs par défaut. (I54d45, b/161809544)
  • Modification du paramètre thresholds dans Modifier.swipeable. Il prend désormais une paire d'états (de type T) et renvoie le seuil entre eux (sous la forme d'un ThresholdConfig). Ajout d'un paramètre dismissThresholds à SwipeToDismiss. Il s'agit d'un lambda (DismissDirection) -> ThresholdConfig. (Ie1080)
  • Ajout de couleurs au curseur pour une personnalisation plus précise (I73e64, b/161810475)
  • Renommage du paramètre de couleur de la fiche en backgroundColor (I01fc1, b/161809546).
  • Ajout de couleurs d'arrière-plan et de contenu personnalisables à Snackbar (I238f2, b/161804381)
  • Ajout des paramètres modifier, backgroundColor, contentColor et scrimColor à Drawers (I23655, b/161804378)
  • 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)
  • Renommage du paramètre de marge intérieure de Button en contentPadding (Id252E, b/161809394).
  • Ajout d'un composant Material expérimental SwipeToDismiss. (I129e5)

Corrections de bugs

  • Suppression de onChildPositioned et de OnChildPositionedModifier. Les développeurs doivent utiliser onPositioned et OnPositionedModifier à la place de la mise en page enfant. (I4522e, b/162109766)
  • 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 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)
  • 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)
  • Changement de nom : RRect devient RoundRect, pour mieux correspondre aux conventions de nommage de Compose. Des constructeurs de fonction similaires ont été créés, et les constructeurs de fonction RRect ont été supprimés. (I5d325)

Version 0.1.0-dev16

5 août 2020

Publication d'androidx.compose.material:material:0.1.0-dev16, androidx.compose.material:material-icons-core:0.1.0-dev16 et androidx.compose.material:material-icons-extended:0.1.0-dev16. Liste des commits de la version 0.1.0-dev16

Modifications apportées à l'API

  • Colors est désormais une classe finale et non plus une interface. Au lieu d'étendre et de fournir une implémentation personnalisée, vous devez créer un nouvel ambient pour votre objet theme personnalisé et accéder à l'objet theme via ce nouvel ambient dans vos composants, de la même manière que MaterialTheme fonctionne en interne. (Ibae84)
  • Changement de noms : ColorPalette devient Colors pour mieux correspondre au système de couleurs Material et éviter la confusion avec ColorPalette comme objet de thématisation générique, par opposition à une implémentation spécifique du système de couleurs Material. Changement de noms pour lightColorPalette et darkColorPalette qui deviennent lightColors et darkColors, respectivement. (I9e976, b/161812111)
  • Changement de noms : le paramètre text de BottomNavigationItem devient label, onSelected devient onSelect, activeColor devient selectedContentColor, inactiveColor devient unselectedContentColor, et met à jour l'ordre des paramètres pour qu'il corresponde aux consignes. (Icb605, b/161809324)
  • Modifier.stateDraggable a été entièrement retravaillé et renommé Modifier.swipeable. Une nouvelle classe SwipeableState a été ajoutée, et DrawerState et BottomDrawerState ont été refactorisés pour en hériter. [Modal/Bottom]DrawerLayout ne reçoit plus de paramètre onStateChange. (I72332, b/148023068)
  • Aplatissement du package foundation.shape.corner en foundation.share. (I46491, b/161887429)
  • Ajout de l'annotation ExperimentalMaterialApi RippleTheme est désormais marqué comme expérimental (Ic5fa0, b/161784800)
  • Changements de nom : le composant Material FilledTextField devient TextField et le composant Foundation TextField devient BaseTextField afin de faciliter la découverte et l'utilisation de l'API souhaitée. (Ia6242, b/155482676)

Corrections de bugs

  • Abandon d'OnChildPositioned. Utilisez OnPositioned sur l'enfant à la place. (I87f95, b/162109766)
  • 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.
  • Déplacement de Dialog vers UI. (I47fa6)
  • Suppression de SemanticsNodeInteraction.performPartialGesture. Utilisez SemanticsNodeInteraction.performGesture à la place. (Id9b62)
  • Changement de nom : SemanticsNodeInteraction.getBoundsInRoot() devient SemanticsNodeInteraction.getUnclippedBoundsInRoot(). (Icafdf, b/161336532)
  • Mise à jour des API pour prendre en charge la lecture de droite à gauche. Ajout de LayoutDirectionAmbient, qui permet de lire et modifier la direction de la mise en page. Suppression de Modifier.rtl et Modifier.ltr. (I080b3)
  • Changement de nom : Modifier.deternimateProgress devient Modifier.progressSemantics. (I9c0b4)
  • Mise à jour de material-icons-extended avec l'ajout des dernières icônes sur Material.io/icons (I4b1d3)
  • Nécessite de spécifier le T type explicitement pour transitionDefinition. (I1aded)
  • Abandon de Modifier.plus. Utilisez Modifier.then à la place. La forme "then" offre un signal d'ordination plus fort et interdit les saisies de type Modifier.padding().background() + anotherModifier, qui rompent la chaîne et sont plus difficile à lire. (Iedd58, b/161529964)
  • Changement de nom : AndroidComposeTestRule devient createAndroidComposeRule. (I70aaf)
  • Ajout d'isFocused() et isNotFocused() SemanticsMatcher. (I0b760)
  • Suppression de BaseGestureScope.globalBounds, qui ne doit pas être utilisé depuis les tests. Utilisez plutôt les coordonnées locales du nœud avec lequel vous interagissez. (Ie9b08)
  • Correction du positionnement de la fenêtre pop-up sur les écrans à découpe. (Idd7dd)
  • Changement de nom : Modifier.drawBackground devient Modifier.background. (I13677)

Version 0.1.0-dev15

22 juillet 2020

Publication d'androidx.compose.material:material:0.1.0-dev15, androidx.compose.material:material-icons-core:0.1.0-dev15 et androidx.compose.material:material-icons-extended: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

  • L'annotation @Model est désormais obsolète. Utilisez un état et mutableStateOf comme alternatives. Cette décision a été prise après une longue discussion.

    Justification

    Les raisons clés comprennent notamment les points suivants :

    • Réduction de la surface d'API et du nombre de concepts à enseigner
    • Alignement avec d'autres kits d'outils comparables (SwiftUI, React, Flutter)
    • Décision réversible, @Model pourra être ramené ultérieurement
    • Suppression des utilisations à la marge et des questions difficiles à répondre sur la configuration de @Model
    • Classes de données @Model, égalités, code de hachage, etc.
    • Comment est-il possible que j'aie certaines propriétés "observées" et d'autres non ?
    • Comment spécifier l'égalité structurelle ou référentielle à utiliser dans l'observation ?
    • Réduit la "magie" du système, ce qui réduit la probabilité que quelqu'un suppose que le système est plus intelligent qu'il ne l'est réellement (autrement dit, qu'il sait comment différencier une liste)
    • Précision de l'observation plus intuitive
    • Meilleure refactorisation variable -> propriété sur une classe
    • Meilleures possibilités d'optimisation manuelle
    • Alignement sur le reste de l'écosystème et moins d'ambiguïté par rapport au choix d'un état immuable ou non

    Notes de migration

    Presque toutes les utilisations existantes de @Model se transforment de manière relativement simple en deux cas de figure. L'exemple ci-dessous comporte une classe @Model avec deux propriétés uniquement à titre d'exemple, et elle est utilisée dans un composable.

    @Model class Position(
     var x: Int,
     var y: Int
    )
    
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p.x = it }
       onYChange={ p.y = it }
     )
    }
    

    Option 1 : utiliser State<OriginalClass> et créer des copies.

    Cette approche est simplifiée avec les classes de données Kotlin. Vous devez en réalité transformer toutes les propriétés var précédentes en propriétés val d'une classe de données, puis utiliser state au lieu de remember, et attribuer la valeur d'état aux copies clonées de l'original à l'aide de la méthode pratique copy(...) de classe de données.

    Notez que cette approche ne fonctionne que lorsque les seules mutations de cette classe ont été effectuées au même niveau d'accès que celui où l'instance State a été créée. Si la classe effectue une mutation interne en dehors du niveau d'accès de l'utilisation, et que vous vous basez sur cette observation, l'approche suivante est à privilégier.

    data class Position(
     val x: Int,
     val y: Int
    )
    
    @Composable fun Example() {
     var p by state { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p = p.copy(x=it) }
       onYChange={ p = p.copy(y=it) }
     )
    }
    

    Option 2 : utiliser mutableStateOf et les délégués de propriété.

    Cette approche est simplifiée par les délégués de propriété Kotlin et par l'API mutableStateOf, qui vous permet de créer des instances MutableState en dehors de la composition. En bref, remplacez toutes les propriétés var de la classe d'origine par des propriétés var avec mutableStateOf comme délégué. L'avantage est que l'utilisation de la classe ne change pas du tout, car seule l'implémentation interne est modifiée. Cependant, le comportement n'est pas complètement identique à l'exemple d'origine, car chaque propriété est désormais observée individuellement, et l'abonnement se fait également de façon individuelle. Par conséquent, les recompositions que vous voyez après cette refactorisation peuvent être moins larges (ce qui est une bonne chose).

    class Position(x: Int, y: Int) {
     var x by mutableStateOf(x)
     var y by mutableStateOf(y)
    }
    
    // source of Example is identical to original
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p.x = it }
       onYChange={ p.y = it }
     )
    }
    

    (I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/143263925, b/139653744)

  • Changement de nom : le rappel onFocusChange dans les champs de texte devient onFocusChanged. (Ida4a1)

  • Ajout d'un paramètre thresholds dans stateDraggable pour spécifier des seuils entre les ancres Cela permet de définir un seuil de 56 dp dans le panneau inférieur. BottomDrawerLayout utilise désormais une énumération BottomDrawerState distincte. (I533fa)

  • Suppression de Modifier.ripple, devenu obsolète. Clickable utilise l'ondulation comme indication par défaut (si vous avez défini un MaterialTheme {} dans votre application). Le plus souvent, il vous suffit d'utiliser Clickable pour d'obtenir l'indication d'ondulation. Si vous devez personnaliser le paramètre de couleur, taille ou limite pour l'ondulation, vous pouvez créer manuellement un RippleIndication et le transmettre à Clickable comme paramètre d'indication. (I663b2, b/155375067)

  • Suppression du remplacement obsolète du composable FilledTextField (I7f8f8)

  • Changement de nom : l'objet Button (contenant les valeurs par défaut utilisées par la fonction Button) devient ButtonConstants (I7C5F7, b/159687878).

  • L'emplacement du contenu de Button se comporte désormais comme une Row (utile lorsque vous avez besoin d'une icône avec du texte, voir les exemples de Button et comment le coder). (I0ff10, b/158677863)

  • Abandon de RadioGroup et RadioGroupItem, devenus obsolètes. Utilisez Box avec Modifier.selectable, Row et Column pour définir l'ensemble approprié de cases d'option radioButton pour votre conception (I7f5cf, b/149528535).

  • Ajout d'un champ de texte Material avec contours (I1a518)

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

  • TabRow.TabPosition ne contient pas de position dans Dp ni dans IntPx (I34a07, b/158577776)

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

  • Abandon de Modifier.ripple. Clickable utilise l'ondulation comme indication par défaut (si vous avez défini un MaterialTheme {} dans votre application). Le plus souvent, il vous suffit d'utiliser Clickable pour d'obtenir l'indication d'ondulation. Si vous devez personnaliser le paramètre de couleur, taille ou limite pour l'ondulation, vous pouvez créer manuellement un RippleIndication et le transmettre à Clickable comme paramètre d'indication. (I101cd, b/155375067)

  • L'API Scaffold a été retravaillée : quelques paramètres ont changé de nom, et de nouveaux paramètres ont été ajoutés pour une meilleure personnalisation. Ajout d'un getter pour effectuer des requêtes de taille de Fab, TopBar et BottomBar (I0e7ce)

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

  • Autorisation d'afficher/masquer manuellement le clavier virtuel à l'aide de SoftwareKeyboardController (Ifb9d6, b/155427736)

  • Ajout de Modifier.indication au package Foundation. Il permet d'afficher une indication de pression, de déplacement ou autre sur vos éléments interactifs personnalisés. (I8425f, b/155287131)

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

  • Changement de nom : Emphasis.emphasize() devient Emphasis.applyEmphasis() (Iceebe).

  • Les boutons désactivés suivent désormais les spécifications Material Design (I47dcb, b/155076924)

  • Prise en charge par FilledTextField de l'action IME, de la transformation visuelle et du type de clavier (I1f9cf, b/155075201)

  • Ajout du paramètre strokeWidth à CircularProgressIndicator pour personnaliser la taille du trait. Pour modifier la taille du trait (hauteur) d'un LinearProgressIndicator, vous pouvez utiliser Modifier.preferredHeight() ou un autre modificateur de taille. (Icea16, b/154919081)

  • Ajout du paramètre strokeWidth à CircularProgressIndicator pour personnaliser la taille du trait. Pour modifier la taille du trait (hauteur) d'un LinearProgressIndicator, vous pouvez utiliser Modifier.preferredHeight() ou un autre modificateur de taille. (Icea16, b/154919081)

  • Ajout d'une API d'emplacement pour les icônes de début et de fin dans le champ FilledTextField et du traitement de l'état d'erreur (Ic12e0)

  • La couleur par défaut du bouton d'action flottant et du bouton d'action flottant étendu a été remplacée par MaterialTheme.colors.secondary. (I3b9b9, b/154118816)

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

  • Changement de nom : EdgeInsets devient InnerPadding. Le paramètre "innerPadding" des boutons Material a été renommé "padding". (I66165)

  • Le curseur est maintenant sans état. Les utilisateurs doivent transmettre et mettre à jour l'état eux-mêmes, comme dans n'importe quelle autre commande. (Ia00aa)

  • Suppression de StaticDrawer. Si nécessaire, utilisez plutôt Box avec la largeur indiquée par Material (I244a7).

  • Ajout de l'implémentation de Material Design du champ de texte rempli (Ic75cd)

  • Ajout du paramètre modificateur à ListItem et modification de l'ordre des paramètres pour promouvoir le corps du lambda de fin (I66e21)

  • Ajout du paramètre constructeur defaultFontFamily à Typography, ce qui permet de spécifier la famille de polices par défaut qui sera utilisée pour tous les TextStyles fournis qui n'ont pas de famille définie. (I89d07)

  • Suppression temporaire de tables de données Material de la surface d'API. (Iaea61)

  • Changement de nom des paramètres dans le composable Divider (Ic4373)

  • enfants (Ia6d19)

  • Suppression de MaterialTheme.emphasisLevels. Utilisez à la place EmphasisAmbient.current pour récupérer les niveaux d'accentuation (Ib5e40).

  • Mise à jour du système de thématisation basée sur des formes, conformément aux spécifications Material Design. Vous pouvez désormais indiquer des formes de petite, moyenne et grande tailles pour la plupart des composants. (Ifb4d1)

  • Modification des API MaterialTheme, telles que MaterialTheme.colors() et MaterialTheme.typgraphy(), pour qu'elles soient des propriétés et non des fonctions. Suppression des parenthèses des appels existants. Aucun changement de comportement n'est attendu. (I3565a)

  • Refactorisation de l'API FloatingActionButton pour accepter les lambdas composables à la place des primitives. Consultez les exemples mis à jour pour en savoir plus sur l'utilisation. (I00622)

  • Ajout du paramètre enabled à Checkbox, Switch et Toggleable. (I41c16)

  • Conversion de Ripple en modificateur. Même si Clickable n'a pas encore été converti, nous vous recommandons d'utiliser Clickable(onClick = { ... }, modifier = ripple()). (Ie5200, b/151331852, b/150060763)

  • Déplacement de Surface et de Card depuis androidx.ui.material.surface vers androidx.ui.material (I88a6d, b/150863888).

  • Ajout d'un paramètre enabled distinct à Button, FloatingActionButton et Clickable. Certains paramètres de Button ont été renommés ou réorganisés. (I54b5a)

  • Changement de nom : Image devient ImageAsset, afin de mieux distinguer les données Image et le composable Image à venir, qui servira à la mise en page et à l'affichage du contenu. Création d'une méthode d'extension asImageAsset sur android.graphics.Bitmap, afin de créer une instance d'ImageAsset utile pour combiner le développement d'applications Android traditionnelles avec le framework Compose. (Id5bbd)

  • Suppression de l'API Snackbar comportant des paramètres de chaîne de façon à utiliser la surcharge qui accepte les lambdas modulables. Consultez les exemples mis à jour pour en savoir plus sur l'utilisation (I55f80)

  • Refactorisation de l'API Tab pour accepter les lambdas text et icon (Ia057e)

  • Ajout du composant BottomNavigation. Consultez la documentation et les exemples pour obtenir des informations sur l'utilisation (I731a0).

  • Ajout de Icon, IconButton et IconToggleButton, et suppression d'AppBarIcon. Vous pouvez remplacer directement les utilisations existantes de AppBarIcon par IconButton. Elles seront désormais associées à la zone cible tactile appropriée. Reportez-vous aux exemples pour plus d'informations sur les utilisations, et aux icônes pour savoir quelles icônes Material vous pouvez utiliser directement avec ces composants. (I96849)

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

  • Changement de nom : le modificateur Border devient DrawBorder. (I8ffcc)

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

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

  • Ajout du composant Material Scaffold. Implémentations de Scaffold (I7731b)

  • Remplacement de DrawBorder par le modificateur Border. (Id335a)

Corrections de bugs

  • Abandon de FocusModifier, remplacé par Modifier.focus, Modifier.focusRequester et Modifier.focusObserver. Abandon de FocusState et FocusDetailedState, à remplacer par FocusState2. (I46919, b/160822875, b/160922136)
  • Abandon de VerticalScroller et HorizontalScroller. Utilisez ScrollableColumn et ScrollableRow pour une expérience intégrée avec le comportement et les paramètres de Column/Row. Utilisez Modifier.verticalScroll et Modifier.horizontalScroll pour contrôler ces aspects dans votre propre élément. ScrollerPosition a également été abandonné, au profit de ScrollState. (I400ce, b/157225838, b/149460415, b/154105299)
  • Mise à jour des API Modifier.draggable et Modifier.scrollable, retravaillées. DragDirection a été supprimé en faveur d'Orientation. L'état requis pour le composant à défilement a été simplifié. Changement de nom : ScrollableState devient ScrollableController. (Iab63c, b/149460415)
  • Changement de nom : runOnIdleCompose devient runOnIdle. (I83607)
  • Mise à jour des propriétés sémantiques à valeur unique, qui utilisent désormais un style d'appel. Par exemple, l'expression "semantics { hidden = true }" s'écrit désormais comme suit : "semantics { hidden() }". (Ic1afd, b/145951226, b/145955412)
  • 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)
  • L'API Transition a été modifiée de manière à renvoyer un état TransitionState au lieu de le transmettre à des éléments enfants. Cela rend l'API plus cohérente avec les API animate(). (I24e38)
  • 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)
  • Ajout d'un indicateur facultatif useUnmergedTree aux outils de recherche des tests. (I2ce48)
  • Suppression des API obsolètes de test de la taille. (Iba0a0)
  • 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)
  • Mise à jour des éléments Popup, Dialog et Menu, qui héritent désormais du MaterialTheme contextuel. (Ia3665, b/156527485)
  • Vous pouvez désormais faire défiler DropdowMenu Material. (Ide699)
  • 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)
  • Mise à jour des API de niveau supérieur afin d'utiliser AnimationSpec au lieu de AnimationBuilder pour clarifier le concept de spécification d'animation statique. – Amélioration du DSL de transition grâce à la suppression de l'exigence de lambda de créer des AnimationSpecs telles que tween et spring. Les paramètres de constructeur sont directement utilisés désormais. – Amélioration de la facilité d'utilisation générale de AnimationSpec, qui permet d'utiliser des constructeurs plutôt que des compilateurs. – Utilisation d'entiers pour la durée et le retard de KeyFrames et Tween. Cela évite des opérations inutiles de conversion des types de données et de surcharger les méthodes (pour prendre en charge à la fois Long et Int). (Ica0b4)
  • Switch est maintenant désactivé lorsque enabled est défini sur "false" (If4624, b/155941869, b/159331694).
  • 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)
  • 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)

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

  • Abandon du composant Toggleable. Utilisez Modifier.toggleable à la place. (I35220, b/157642842)

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

  • Résolution du problème d'appel d'onClick pour DropdownMenuItems. (I3998b, b/157673259)

  • Abandon de MutuallyExclusiveSetItem. Utilisez Modifier.selectable à la place. (I02b47, b/157642842)

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

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

  • Remplacement des utilisations de la classe Px dans différentes classes de Compose, dans le cadre d'une refactorisation généralisée qui vise à ne plus utiliser que les types Dp et primitifs pour les paramètres de pixel. (I19d02)

  • Mise à jour de VerticalScroller, qui fournit désormais directement Column. Mise à jour de HorizontalScroller, qui fournit désormais directement Row. (Ieca5d, b/157020670)

  • Remplacement des utilisations de la classe Px dans différentes classes de Compose, dans le cadre d'une refactorisation généralisée qui vise à ne plus utiliser que les types Dp et primitifs pour les paramètres de pixel. (Iede0b)

  • Restauration de Modifier.semantics (précédemment abandonné) pour permettre son utilisation avec des composants de niveau supérieur. (I4cfdc)

  • Mise à jour de l'API de modificateurs DrawLayer : outlineShape renommé en shape, sans possibilité de valeur nulle, 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)

  • Abandon du composable AlignmentLineOffset. Utilisez le modificateur relativePaddingFrom() à la place. Suppression du composable CenterAlignmentLine. (I60107)

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

  • Ajout du modificateur de mise en page defaultMinSizeConstraints, qui définit les contraintes de taille pour la mise en page encapsulée uniquement lorsque les contraintes correspondantes entrantes ne sont pas spécifiées (0 pour les contraintes minimales et l'infini pour les contraintes maximales). (I311ea, b/150460257)

  • Suppression de FocusManagerAmbient. Utilisez FocusModifier.requestFocus pour la sélection. (Ic4826)

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

  • Ajout de la personnalisation de la couleur du curseur à TextField. (I6e33f)

  • Mise à jour de TextFieldValue utilisé avec TextField, qui peut désormais survivre à la recréation de l'activité, comme suit : var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }. (I5c3ce, b/155075724)

  • Changement de nom : LayoutModifier2 devient LayoutModifier. (Id29f3)

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

  • Remplacement du paramètre focusIdentifier de CoreTextField/TextField par FocusNode afin d'intégrer le sous-système de sélection. (I7ea48)

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

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

  • Déplacement de RectangleShape de androidx.ui.foundation.shape.* vers androidx.ui.graphics.*. (Ia74d5, b/154507984)

  • Mise à jour de l'API TextField : fusion des rappels onFocus et onBlur en un seul rappel onFocusChange(Boolean) avec paramètre. (I66cd3)

  • Ajout des paramètres verticalGravity et horizontalGravity à Row et Column, respectivement. (I7dc5a)

  • Mise à jour de wrapContentWidth et wrapContentHeight, qui attendent désormais un alignement vertical ou horizontal au lieu d'un alignement quelconque. Le modificateur de gravité a été mis à jour pour accepter l'alignement vertical ou horizontal. Row, Column et Stack ont été mis à jour pour accepter les alignements continus personnalisés. (Ib0728)

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

  • Suppression de ProvideContentColor. Utilisez simplement ContentColorAmbient à la place, directement avec Providers. (Iee942)

  • Changement de nom : le module ui-text-compose devient ui-text. Mise à jour de ui-text, qui contient désormais les composables CoreText et CoreTextField. (Ib7d47)

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

  • Déplacement des composables ui-framework/CoreText, CoreTextField sous ui-text-compose. Vous pouvez inclure ui-text-compose dans votre projet. (I32042)

  • 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)
  • Conversion des méthodes runOnIdleCompose et runOnUiThread de ComposeTestRule en fonctions globales. (Icbe8f)

  • Déplacement des opérateurs de délégation de propriété [Mutable]State vers des extensions pour prendre en charge les optimisations de délégation de propriété Kotlin 1.4. Les appelants doivent ajouter des importations pour continuer à utiliser by state { ... } ou by mutableStateOf(...). (I5312c)

  • Ajout de positionInParent et boundsInParent pour LayoutCoordinates. (Icacdd, b/152735784)

  • Abandon de ColoredRect. Utilisez Box(Modifier.preferredSize(width, height).drawBackground(color)) à la place. (I499fa, b/152753731)

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

  • Conversion de Draggable en modificateur. (Id9b16, b/151959544)

  • Abandon du composable ParentData. Vous devez soit créer un modificateur qui implémente l'interface ParentDataModifier, soit utiliser le modificateur LayoutTag si vous avez simplement besoin d'ajouter des balises aux enfants de la mise en page pour les reconnaître dans le bloc de mesure. (I51368, b/150953183)

  • Abandon du composable Center, à remplacer par le modificateur LayoutSize.Fill + LayoutAlign.Center, ou par l'un des composables Box ou Stack auxquels sont appliqués les modificateurs appropriés. (Idf5e0)

  • 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 : LayoutFlexible devient LayoutWeight. Changement de nom : le paramètre tight devient fill. (If4738)

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

  • Conversion de la fonction modulable standard DrawVector en modificateur drawVector() qui dessine le vecteur comme arrière-plan dans une mise en page. (I7b8e0)

  • La fonction modulable Opacity a été remplacée par le modificateur drawOpacity. (I5fb62)

  • Remplacement de la fonction modulable Clip par le modificateur drawClip(). Le modificateur DrawClipToBounds est utile pour simplement rogner le contenu en fonction d'une couche selon une forme rectangulaire. (If28eb)

  • Remplacement de la fonction modulable DrawShadow par le modificateur drawShadow(). Les ombres sont maintenant dessinées dans LayerModifier. (I0317a)

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

  • Déplacement de androidx.compose.ViewComposer vers androidx.ui.node.UiComposer. androidx.compose.Emittable a été supprimé, car il faisait doublon avec ComponentNode. androidx.compose.ViewAdapters a été supprimé et n'est plus accepté. Compose.composeInto a été abandonné. Utilisez setContent ou setViewContent à la place. Compose.disposeComposition a été abandonné. Utilisez la méthode dispose sur le Composition renvoyé par setContent à la place. androidx.compose.Compose.subcomposeInto a été déplacé vers androidx.ui.core.subcomposeInto. ComponentNode#emitInsertAt a été renommé ComponentNode#insertAt. ComponentNode#emitRemoveAt a été renommé ComponentNode#removeAt. ComponentNode#emitMode a été renommé ComponentNode#move. (Idef00)

  • Création du composable Image pour gérer le dimensionnement/la mise en page en plus de dessiner un ImageAsset donné à l'écran. Ce composable permet également de dessiner une instance de Painter arbitraire respectant sa taille intrinsèque, ainsi qu'une taille fixe ou minimale donnée. (Ibcc8f)

  • Abandon du composable Wrap, à remplacer par le modificateur LayoutAlign ou par le composable Stack. (Ib237f)

  • Mise à jour de WithConstraints, qui accepte désormais le paramètre LayoutDirection. (I6d6f7)

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

  • Suppression du composable DrawShape. Utilisez le modificateur DrawBackground à la place. (I7ceb2)

  • Prise en charge du sens de lecture de droite à gauche dans le modificateur LayoutPadding. (I9e8da)

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

  • Mise à jour de l'indicateur ComposeFlags.COMPOSER_PARAM, désormais sur true, ce qui modifie la stratégie de génération du code pour le plug-in Compose. De manière générale, des fonctions @Composable sont générées avec un paramètre synthétique supplémentaire, qui est transmis aux appels @Composable suivants afin que l'environnement d'exécution en gère correctement l'exécution. Il s'agit d'une modification destructive de la compatibilité binaire, qui ne devrait pas affecter la compatibilité du code source dans les utilisations sanctionnées de Compose. (I7971c)

  • Ajout du composant Canvas. Ce composable occupe une certaine taille (fournie par l'utilisateur) et vous permet de dessiner à l'aide de CanvasScope. (I0d622)

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

  • Mise à jour des Scrollers, qui intègrent désormais le mouvement natif Android de glissement d'un geste vif. (I922af, b/147493715)

  • Améliorations apportées à la surface de l'API Constraints. (I0fd15)