Compose UI
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(Voir la documentation de référence de l'API pour tous les packages Compose)
Dernière mise à jour | Version stable | Version finale | Version bêta | Version alpha |
---|---|---|---|---|
13 novembre 2024 | 1.7.5 | - | - | 1.8.0-alpha06 |
Structure
Compose est une combinaison de sept ID de groupe Maven dans androidx
, chacun contenant un sous-ensemble ciblé de fonctionnalités. Chaque sous-ensemble est associé à son propre ensemble de notes de version.
Ce tableau décrit les différents groupes et renvoie à chaque ensemble de notes de version.
Groupe | Description |
---|---|
compose.animation | Créer des animations dans les applications Jetpack Compose afin d'enrichir l'expérience utilisateur. |
compose.compiler | Transformation de fonctions @Composable et prise en charge des optimisations avec un plug-in de compilation en Kotlin. |
compose.foundation | Conception d'applications Jetpack Compose avec des composants prêts à l'emploi et extension de la base pour créer vos propres éléments de système de conception. |
compose.material | Création d'UI Jetpack Compose avec des composants Material Design prêts à l'emploi. Il s'agit du point d'entrée de niveau supérieur de Compose, conçu pour fournir des composants qui correspondent à ceux décrits sur www.material.io. |
compose.material3 | Création d'UI Jetpack Compose grâce aux composants Material Design 3, la nouvelle évolution de Material Design. Material 3 inclut des thématisations et des composants mis à jour ainsi que des fonctionnalités de personnalisation Material You telles que les couleurs dynamiques. Material 3 est conçu pour correspondre au nouveau style visuel et à l'UI du système Android 12. |
compose.runtime | Composants fondamentaux du modèle de programmation et de la gestion d'état de Compose, et environnement d'exécution principal du plug-in Compose Compiler à cibler. |
compose.ui | Composants fondamentaux de l'interface utilisateur de Compose nécessaires pour interagir avec l'appareil, y compris la mise en page, le dessin et la saisie. |
Déclarer des dépendances
Pour ajouter une dépendance sur Compose, vous devez ajouter le dépôt Maven de Google à votre projet. Pour en savoir plus, consultez la section Dépôt Maven de Google.
Ajoutez les dépendances correspondant aux artefacts dont vous avez besoin dans le fichier build.gradle
de votre application ou de votre module :
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.7.5") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Pour en savoir plus sur les dépendances, consultez Ajouter des dépendances de compilation.
Commentaires
Vos commentaires nous aident à améliorer Jetpack. N'hésitez pas à nous contacter si vous découvrez de nouveaux problèmes ou si vous avez des idées pour améliorer cette bibliothèque. Veuillez consulter les problèmes existants de cette bibliothèque avant d'en signaler un nouveau. Vous pouvez ajouter votre vote à un problème existant en cliquant sur le bouton en forme d'étoile.
Pour en savoir plus, consultez la documentation sur l'outil Issue Tracker.
Version 1.8
Version 1.8.0-alpha06
13 novembre 2024
Publication d'androidx.compose.ui:ui-*:1.8.0-alpha06
. La version 1.8.0-alpha06 contient ces commits.
Modifications apportées à l'API
- Ajoute le modificateur
stylusHoverIcon
. (Iff20a, b/331289114) - Définit le gestionnaire de saisie automatique comme une interface. (I84914, b/376080755)
- Ajoute
requestFocus(FocusDirection)
àfocusRequester
etFocusTargetModifierNode
pour permettre de mettre au point avec une orientation spécifique. (I5d9ec, b/245755256) FocusProperties.enter
etFocusProperties.exit
ont été remplacés paronEnter
etonExit
, en utilisant une portée du récepteur au lieu du paramètreFocusDirection
. (I6e667)- Ajout de la fonctionnalité de saisie semi-automatique dans la barre d'outils de texte. (Ie6a4c)
- Modifications apportées à l'API
Modifier.focusRestorer()
(I99c03) :- Nom du paramètre remplacé par "fallback"
- Le paramètre est désormais un
FocusRequester
et non un lambda. - Le paramètre n'est plus NULL et la valeur par défaut est "Default".
- Suppression de l'annotation
@Experimental
de l'interface du Gestionnaire de saisie automatique. La fonctionnalité est toujours en cours de développement et vise cette version, mais nous ne souhaitons pas lancer l'API @Experimental (Id8398). LocalHapticFeedback
fournit désormais une implémentationHapticFeedback
par défaut lorsque l'API Vibrator indique que les retours haptiques sont compatibles. Les éléments suivants ont été ajoutés àHapticFeedbackType
:Confirm
,ContextClick
,GestureEnd
,GestureThresholdActivate
,Reject
,SegmentFrequentTick
,SegmentTick
,ToggleOn
,ToggleOff
etVirtualKey
. Les composants Wear Compose cliquables avec un appui long tels queButton
,IconButton
,TextButton
etCard
effectuent désormais le retour haptiqueLONG_PRESS
lorsqu'un gestionnaire de clics longs a été fourni. (I5083d)- Supprime
OverscrollConfiguration
etLocalOverscrollConfiguration
, et ajouterememberPlatformOverscrollFactory
pour créer une instance de / personnaliser les paramètres de l'implémentation par défaut du défilement forcé. Pour désactiver le défilement excessif, utilisezLocalOverscrollFactory provides null
au lieu deLocalOverscrollConfiguration provides null
. Pour modifier la couleur / la marge intérieure de l'aura, utilisezLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
au lieu deLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
. (Ie71f9, b/255554340, b/234451516) - Suppression de l'API
GlobalAssertions
expérimentale. Son utilisation prévue était d'exécuter des vérifications d'accessibilité. Pour ce faire, consultez plutôtenableAccessibilityChecks()
. (I59322)
Version 1.8.0-alpha05
30 octobre 2024
Publication d'androidx.compose.ui:ui-*:1.8.0-alpha05
. La version 1.8.0-alpha05 contient ces commits.
Nouvelles fonctionnalités
Le remplissage automatique est exposé derrière un flag de fonctionnalité dans cette version. Nous mettons tout en œuvre pour améliorer les performances et nous souhaitons recueillir vos premiers commentaires sur les API. Les API devraient évoluer avant d'atteindre la version stable en fonction des commentaires.
- Pour activer la saisie automatique, définissez
ComposeUiFlags.isSemanticAutofillEnabled
sur "true" dansonCreate
et utilisez le dernier instantané Compose. - Cette version de la saisie automatique permet d'enregistrer manuellement des identifiants via la fonctionnalité "Suggérer un mot de passe sécurisé" et la navigation. Il est également compatible avec le remplissage lorsqu'un champ pouvant être renseigné automatiquement reçoit la sélection ou lorsque le remplissage automatique est déclenché via la barre d'outils de texte sur les composants de texte. Le composant est mis en surbrillance pour indiquer que la saisie semi-automatique est terminée.
Modifications apportées à l'API
- Modifier l'interface de saisie automatique pour qu'elle respecte la structure
expect
/actual
(I22dce) - Introduction de
CompositionLocal
, qui permet de modifier la teinte de la mise en surbrillance de la saisie automatique réussie. (I32092) - Ajout de l'API
Modifier.onRectChanged
, qui permet de s'abonner à la position et à la taille d'unLayoutNode
par rapport à la racine/fenêtre/écran. L'API résout de nombreux cas d'utilisation que le modificateuronGloballyPositioned
existant résout, mais elle le fait avec beaucoup moins de frais généraux. Elle est fournie avec des fonctionnalités permettant de déjouer et de limiter le rappel en fonction des exigences du cas d'utilisation. (Id28c7, b/372765423, b/372757007, b/372994338) - Élargit le gestionnaire de saisie automatique pour inclure les API
commit()
etcancel()
qui aident les utilisateurs à enregistrer les identifiants nouvellement saisis. (I2da00) - Introduction d'une nouvelle interface
AutofillManager
permettant d'affiner le parcours de saisie automatique des utilisateurs et d'un indicateurisSemanticAutofillEnabled
pour activer cette nouvelle version de la saisie automatique. (I9d484) - Ajout de l'API
Modifier.onRectChanged
, qui permet de s'abonner à la position et à la taille d'unLayoutNode
par rapport à la racine/fenêtre/écran. L'API résout de nombreux cas d'utilisation que le modificateuronGloballyPositioned
existant résout, mais elle le fait avec beaucoup moins de frais généraux. Elle est fournie avec des fonctionnalités permettant de déjouer et de limiter le rappel en fonction des exigences du cas d'utilisation. (I3c8fa) - Ajoutez des propriétés sémantiques et des types de données pour une compatibilité étendue avec la saisie automatique. (I52c7d)
- Toutes les méthodes du compilateur
AnnotatedString
ne sont plus expérimentales (Ia89c8, b/261561823).
Correction de bugs
- Les vues intégrées à Compose peuvent désormais recevoir des événements rotatifs si elles sont sélectionnées. (I4d53a, b/320510084)
- Correction d'un problème qui empêchait la mise à jour de divers types de ressources en cas de modification de la configuration. (Ia9b99, b/352336694)
- Correction d'un problème qui empêchait
TextField
de fonctionner correctement lors de l'utilisation du clavier japonais POBox sur certains anciens appareils Sony. (Ia9b99, b/373743376) - Correction du problème de boîtes de dialogue qui s'affichent en bas de l'écran au lieu d'être centrées. (Ia2ec, b/373093006)
- L'API de ciblage 35 et versions ultérieures ne force plus la valeur
decorFitsSystemWindows
à "false" pour les boîtes de dialogue. (Ibc94, b/364492593) - Correction d'un plantage lors du déplacement de calques entre des fenêtres (par exemple, une boîte de dialogue et le contenu principal) (I675ba, b/330955281)
Version 1.8.0-alpha04
16 octobre 2024
Publication d'androidx.compose.ui:ui-*:1.8.0-alpha04
. La version 1.8.0-alpha04 contient ces commits.
Modifications apportées à l'API
- Ajout de rappels
DelegatableNode#onDensityChange
etDelegatableNode#onLayoutDirectionChange
pour permettre la mise à jour de l'état du nœud en cas de modification. (I04f3e, b/340662451) - Ajoute
WindowInfo#containerSize
pour fournir la taille du conteneur de contenu de la fenêtre actuelle. Vous pouvez le récupérer à l'aide deLocalWindowInfo
. (Idc38c, b/369334429, b/360343819) - Correction d'un problème lié aux éléments à faire défiler imbriqués qui sont supprimés de l'arborescence des nœuds lors d'un fling en cours. Ces nœuds annuleront désormais le fling et enverront correctement l'événement
onPostFling
avec la vitesse restante. Nous introduisons également l'indicateurNewNestedScrollFlingDispatchingEnabled
pour contrôler le comportement en cas de régression. L'indicateur sera supprimé avant la version bêta. (I05c37, b/371168883) - Introduction de
PointerInputModifierNode#touchBoundsExpansion
, qui permet d'agrandir les limites tactiles d'un modificateur d'entrée à pointeur unique. (Iccf02, b/335339283) - Ajoute
WindowInfo#containerSize
pour fournir la taille du conteneur de contenu de la fenêtre actuelle. Vous pouvez le récupérer à l'aide deLocalWindowInfo
. (I27767, b/369334429, b/360343819) - Supprimez
readOnly
deTextFields
' pour épingler la version stable de la fondation. (I3aaba) Paragraph
etParagraphIntrinsics
acceptent désormais une liste de toutes les annotations appliquées àAnnotatedString
, alors qu'auparavant, ils n'acceptaient qu'une liste deSpanStyles
(I12f80)
Correction de bugs
- Modification du traitement des paragraphes dans
AnnotatedString
. Auparavant, vous ne pouviez créer que des paragraphes non superposés.AnnotatedString
permet désormais de fusionner des paragraphes entièrement chevauchants et des paragraphes imbriqués, dans ce cas le paragraphe extérieur sera divisé en fonction des limites du paragraphe intérieur, et le style du paragraphe intérieur sera fusionné avec celui du paragraphe extérieur (Ic9554). - Correction du plantage dans
AnnotatedString
avec unLinkAnnotation
de longueur nulle. (89aac6)
Version 1.8.0-alpha03
2 octobre 2024
Publication d'androidx.compose.ui:ui-*:1.8.0-alpha03
. La version 1.8.0-alpha03 contient ces commits.
Modifications apportées à l'API
- Mise à jour de la version Kotlin vers la version 1.9 (I1a14c)
- Ajout d'un nouveau rôle sémantique appelé "Carousel" pour émuler le comportement de la liste dans les paginations pour les services d'accessibilité. (Id354b, b/354109776, b/239672673)
invisibleToUser()
a été renomméhideFromAccessibility
. Sa fonction reste la même. Pour en savoir plus, consultez la documentation. (Ib43a3)
Correction de bugs
- Mise à jour de la documentation pour le modificateur
SensitiveContent
(Ib0442) - Correction d'un problème qui entraînait l'ignorance de certains extraits de contour génériques en combinaison avec des ombres d'élévation sur certaines versions d'Android.
- Correction d'un problème qui entraînait l'application de clips vides lorsqu'un clip de contour générique était spécifié sur certaines versions d'Android.
- Correction de l'exception générée lorsque l'IME est actif sur une vue externe et que l'action "Suivant" est utilisée pour mettre en surbrillance
ComposeView
. Le comportement declearFocus()
est aligné sur celui de View avec une API < 28, oùclearFocus()
peut entraîner la sélection de la vue par défaut. - Correction d'un problème d'emplacement sur des nœuds dissociés dans
LazyList
en séparant la gestion de la sous-composition pour différentes passes de mise en page. - Correction d'un problème qui entraînait le clignotement du clavier logiciel lorsque le focus passait d'un
TextField
à unEditText
ou à tout autre éditeur basé sur la vue. - Les nœuds de défilement imbriqués distribuent désormais correctement les événements
onPostFling
après leur détachement. - Améliorations générales des performances
Version 1.8.0-alpha02
18 septembre 2024
Publication d'androidx.compose.ui:ui-*:1.8.0-alpha02
. La version 1.8.0-alpha02 contient ces commits.
Modifications apportées à l'API
TextOverflow.StartEllipsis
etTextOverflow.MiddleEllipsis
sont désormais disponibles, ce qui permet de placer des points de suspension au début ou au milieu de la ligne du texte en une seule ligne. (I38913, b/185418980)
Correction de bugs
- Correction de
dismissOnClickoutside
de la boîte de dialogue (39a3d, b/364508685) - Ne pas couper les ombres du contenu de la boîte de dialogue (e8e2f, b/363027803)
- Correction d'un comportement incorrect lorsque la recherche de sélection passe de Compose à une vue (58377, b/350534714)
Contribution externe
Map
AlignmentLines
accepte désormais des types concretsVerticalAlignmentLine
ouHorizontalAlignmentLine
. (I02912)- Nouvelle méthode
ByteArray.decodeToImageBitmap(): ImageBitmap
courante. (I83c21)
Version 1.8.0-alpha01
4 septembre 2024
Publication d'androidx.compose.ui:ui-*:1.8.0-alpha01
. La version 1.8.0-alpha01 contient ces commits.
Version 1.7
Version 1.7.5
30 octobre 2024
Publication d'androidx.compose.ui:ui-*:1.7.5
. La version 1.7.5 contient ces commits.
Correction de bugs
- Correction des problèmes d'affichage de l'élévation et du masquage avec des contours personnalisés.
- Corrige un plantage de texte qui se produit avec un
LinkAnnotation
de largeur nulle. (Ic1e2e) - Corrige une annonce dans
Talkback
du bouton lorsqu'il est créé en tant que composable Text cliquable. (I1f588)
Version 1.7.4
16 octobre 2024
Publication d'androidx.compose.ui:ui-*:1.7.4
. La version 1.7.4 contient ces commits.
Version 1.7.3
2 octobre 2024
Publication d'androidx.compose.ui:ui-*:1.7.3
. La version 1.7.3 contient ces commits.
Correction de bugs
- Correction d'un problème qui entraînait une limite d'extrait vide lors de la spécification d'un extrait de contour générique sur certaines versions d'Android.
- Correction de l'exception générée lorsque l'IME est actif sur une vue externe et que l'action "Suivant" est utilisée pour mettre en surbrillance
ComposeView
. Le comportement declearFocus()
est aligné sur celui de View avec une API < 28, oùclearFocus()
peut entraîner la sélection de la vue par défaut. - Correction d'un problème qui entraînait l'utilisation d'un
placeOrder
incorrect pour l'invalidation de l'anticipation, ce qui corrigeait un cas particulier où l'emplacement de l'anticipation était ignoré.
Version 1.7.2
18 septembre 2024
Publication d'androidx.compose.ui:ui-*:1.7.2
. La version 1.7.2 contient ces commits.
Correction de bugs
- Amélioration des performances des informations sur les nœuds d'accessibilité et des événements sémantiques en supprimant le traçage détaillé. (I89156, b/362530618)
ComposeView
ne plante plus lorsqu'une taille de mesure exceptionnellement importante est transmise. (da5db, b/347036173)- Correction d'un problème d'accessibilité lié au lecteur d'écran, où les annonces
LiveRegion
sur les boutons n'étaient pas diffusées. (f66fa7, b/348590026)
Version 1.7.1
10 septembre 2024
- Aucune modification n'a été apportée aux artefacts Android. Les artefacts
-desktop
ont été supprimés, et des artefacts-jvmStubs
et-linuxx64Stubs
ont été ajoutés. Aucune de ces cibles n'est destinée à être utilisée. Il s'agit de repères destinés à aider les efforts de Jetbrains Compose.
Version 1.7.0
4 septembre 2024
Publication d'androidx.compose.ui:ui-*:1.7.0
.
Changements importants depuis la version 1.6.0
Les modifications importantes apportées à la version 1.7.0 sont décrites dans cet article de blog.
Version 1.7.0-rc01
21 août 2024
Publication d'androidx.compose.ui:ui-*:1.7.0-rc01
. La version 1.7.0-rc01 contient ces commits.
Changements notables
- Le module ui:ui force désormais une version minimale de foundation:foundation d'au moins 1.7.0-rc01 ou ultérieure. Cette mesure vise à remédier à une incompatibilité de comportement entre l'UI et la fondation concernant les modifications de
NestedScrollSource
qui ont eu lieu au début de la version 1.7.0-alpha01.
Version 1.7.0-beta07
7 août 2024
Publication d'androidx.compose.ui:ui-*:1.7.0-beta07
. La version 1.7.0-beta07 contient ces commits.
Correction de bugs
- Les fonctions
SemanticsNodeInteraction
liées à la saisie de texteperformTextReplacement
,performTextInput
etperformTextClearance
génèrent désormais des erreurs d'assertion lorsqu'elles sont appelées surTextFields
en lecture seule. (I4ae8f)
Version 1.7.0-beta06
24 juillet 2024
Publication d'androidx.compose.ui:ui-*:1.7.0-beta06
. La version 1.7.0-beta06 contient ces commits.
Version 1.7.0-beta05
10 juillet 2024
Publication d'androidx.compose.ui:ui-*:1.7.0-beta05
. La version 1.7.0-beta05 contient ces commits.
Correction de bugs
- Correction d'un bug qui empêchait
TextField
d'accepter la saisie du nouveau clavier lorsque le clavier logiciel était modifié, jusqu'à ce que le focus soit perdu et récupéré. - Correction d'un problème qui entraînait des effets secondaires involontaires lors de l'affichage avec du contenu
SurfaceView
lorsque des tentatives de persistance du contenu des calques étaient effectuées.
Version 1.7.0-beta04
26 juin 2024
Publication d'androidx.compose.ui:ui-*:1.7.0-beta04
. La version 1.7.0-beta04 contient ces commits.
Correction de bugs
- Éviter les plantages lors de la mesure de très longues lignes de texte (par exemple, 10 000 caractères) (8157ab)
- Désactivez la prise en charge du rendu logiciel pour l'API
GraphicsLayer
. (35ddd8) - Correction d'un plantage dans la logique de persistance des calques. (70b13e)
- L'optimisation de la réutilisation des objets de calque a été rétablie, car elle entraînait des problèmes de rendu. (70b13e)
Version 1.7.0-beta03
12 juin 2024
Publication d'androidx.compose.ui:ui-*:1.7.0-beta03
. La version 1.7.0-beta03 contient ces commits.
Version 1.7.0-beta02
29 mai 2024
Publication d'androidx.compose.ui:ui-*:1.7.0-beta02
. La version 1.7.0-beta02 contient ces commits.
Modifications apportées à l'API
SemanticsProperties.Editable
a été renomméIsEditable
etSemanticsPropertyReceiver.editable
a été remplacé par une valeurisEditable
. La propriété est désormais booléenne et toujours spécifiée par des champs de texte. (I8acd8)- Renommez le paramètre de référence d'accessibilité. (I3d440)
- Mise à jour de l'API pour styliser les liens:
TextLinkStyles
fait désormais partie du constructeurLinkAnnotation
et de la méthodeAnnotatedString.fromHtml
(I90b2b). Suppression deTextDefaults
du contenu (I5477b)
Correction de bugs
LayoutCoordinates.introducesFrameOfReference
a été renomméLayoutCoordinates.introducesMotionFrameOfReference
pour mieux refléter son objectif. Modification du nom de la fonction associée pour calculer les coordonnées en fonction de cet indicateur. (I3a330)
Version 1.7.0-beta01
14 mai 2024
Publication d'androidx.compose.ui:ui-*:1.7.0-beta01
. La version 1.7.0-beta01 contient ces commits.
Modifications apportées à l'API
- Remplacement du nom
performCustomAccessibilityActionLabelled
parperformCustomAccessibilityActionWithLabel
et du nomperformCustomAccessibilityActionWhere
parperformCustomAccessibilityActionWithLabelMatching
. (I5387f) AnnotatedString.hasEqualsAnnotations
est désormaishasEqualAnnotations
. (I685c0)- Mise à jour de l'API pour obtenir des liens de style Material dans le texte. Plus précisément, les méthodes de
TextDefaults
ont été supprimées pour la création deLinkAnnotations
thématiques et l'analyse du code HTML avec des liens thématiques. Au lieu de cela, une classeTextLinkStyles
a été ajoutée pour styliser les liens en tant que paramètre du composable Text. (I31b93)
Correction de bugs
- Correction de cas d'utilisation supplémentaires lors de l'ajout dynamique de modificateurs de saisie du pointeur lors d'événements 63e1504
Version 1.7.0-alpha08
1er mai 2024
Publication d'androidx.compose.ui:ui-*:1.7.0-alpha08
. La version 1.7.0-alpha08 contient ces commits.
Modifications apportées à l'API
- Ajout de la prise en charge des implémentations de formes modifiables.
Shape#createOutline
est désormais observé dans les calques graphiques. La lecture des valeurs d'état à l'intérieur entraînera donc des invalidations lorsque l'état changera, ce qui permettra d'obtenir des animations de forme plus performantes. (Id1629, b/326070216) - Changement de nom :
isPositionedByParentWithDirectManipulation
devientintroducesFrameOfReference
. Notez que l'effet est maintenant inverse, ce qui signifie que par défaut, la plupart desLayoutCoordinates
introduisent un cadre de référence et que la propriété n'est définie sur "false" que lorsqu'elle est soumise à une manipulation directe. Pour interroger la position uniquement avec celles qui introduisent un cadre de référence, utilisezpositionInLocalFrameOfReference(...)
. OupositionInLocalLookaheadFrameOfReference
à partir d'unLookaheadScope
. (Ifc5f7) - Les API
LookaheadScope
sont désormais stables (I21507) - Modification du lambda d'action pour
getScrollViewportLength
conformément aux commentaires du conseil de l'API. (Ibc74a) - Mise à jour des API de contour
GraphicsLayer
pour qu'elles utilisent des paramètres de type float au lieu de type int. Suppression des valeurs sentinellesUnsetOffset/UnsetSize IntSize
au profit de constantes Unspecified déjà existantes sur les classes inline Offset et Size basées sur des valeurs flottantes. (I2fb03, b/333863462) - Lors de l'injection de données de souris lors des tests,
MouseInjectionScope.click()
,MouseInjectionScope.doubleClick()
,MouseInjectionScope.tripleClick()
etMouseInjectionScope.longClick()
acceptent désormais un paramètrebutton: MouseButton
pour les rendre plus universels. La valeur par défaut estMouseButton.Primary
pour toutes les méthodes. (I31a23, b/190493367, b/261439695) onClicked
a été renomméonClick
dansLinkInteractionListener
. (Iaa35c)TextInclusionStrategy.isInside
a été renomméisIncluded
. Faites en sorte que le type de retour deParagraph/MultiParagraph#getRangeForRect()
ne puisse pas être nul. (I51f26)
Correction de bugs
- Correction d'un problème de capture de longue capture d'écran pour les conteneurs à défilement avec
reverseScrolling=true
. (I7c59c)
Contribution externe
- Prise en charge de la précharge des éléments dans les
LazyLists
imbriquées (par exemple, unLazyColumn
qui affiche desLazyRows
imbriquées). Ce changement devrait réduire les pertes de frames lors du défilement pour cesLazyLists
. Par défaut, l'implémentation précharge les deux premiers éléments imbriqués. Toutefois, ce comportement peut être contrôlé par les nouvelles APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
etLazyListPrefetchStrategy#onNestedPrefetch
. (I51952)
Version 1.7.0-alpha07
17 avril 2024
Publication d'androidx.compose.ui:ui-*:1.7.0-alpha07
. La version 1.7.0-alpha07 contient ces commits.
Modifications apportées à l'API
ClickableText
est marqué comme obsolète. Pour ajouter des liens au texte, créez unAnnotatedString
avec unLinkAnnotation
correspondant à votre lien, puis transmettez ceAnnotatedString
au composable de texte. (I34d4b, b/323346994)- Introduction de
ViewConfiguration.HandwritingGestureLineMargin
pour les gestes d'écriture manuscrite. Prise en charge du gesteJoinOrSplit
pourBasicTextField
(Ie6e13, b/325660505) FocusProperties.enter
etFocusProperties.exit
ne sont plus au stade expérimental.FocusDirection.Enter
etFocusDirection.Exit
ne sont plus au stade expérimental.FocusRequester.Cancel
n'est plus en phase expérimentale (I461a1, b/261564106).- Lorsque vous interrogez les coordonnées de mise en page, vous pouvez désormais utiliser l'argument
excludeDirectManipulationOffset
pour exclure le décalage défini par les mises en page parentes qui ont placé leurs enfants à l'aide dePlaceable.PlacementScope.withDirectManipulationPlacement
. De même, une mise en page qui modifie fréquemment la position de ses enfants peut désormais les placer à l'aide dewithDirectManipulationPlacement
(comme Scroll, implémenté par défaut). Cela permet aux animations basées surapproachLayout
d'être plus intuitives, car vous pouvez désormais différencier le décalage à animer et ce que vous devez appliquer directement lorsque vous décidez d'animer votre approche. (I60ec7) - L'indicateur de fonctionnalité pour les captures d'écran longues a été supprimé. (I28648, b/329128246)
LazyColumn
affiche désormais correctement les en-têtes persistants dans les captures d'écran longues. (I8d239, b/329296635)- Les sources
NestedScroll
"Drag" (Glisser) et "Fling" (Flotter) sont remplacées parUserInput
etSideEffect
pour tenir compte de la définition étendue de ces sources, qui incluent désormais les animations (effet secondaire), la molette de la souris et le clavier (UserInput
). (I40579) ApproachLayoutModifierNode
etModifier.approachLayout
sont désormais stables, et les nouveauxisMeasurementApproachInProgress()
etisPlacementApproachInProgress()
remplacent respectivement les anciensisMeasurementApproachComplete()
etisPlacementApproachComplete()
.- Suppression du modificateur
intermediateLayout
, devenu obsolète. (I3e91c) - Renommez
GraphicsLayer#buildLayer
pour enregistrer afin de refléter les méthodes begin/endRecording des API compatibles avec Displaylist, commeRenderNode
et Picture. - Modification de
rememberGraphicsLayer
pour exploiterrememberObserver
. (I312c1, b/288494724, b/330758155) UrlAnnotation
est obsolète. Utilisez plutôtLinkAnnotation.Url
. Si vous utilisez la thématisation Material, utilisez l'objetTextDefaults
pour créer l'annotation avec la thématisation Material appliquée. (I8d180, b/323346545)- Les liens textuels ont reçu une option de style pour l'état de pression en plus du style normal, du style en survol et du style en surbrillance (I5f864, b/139312671).
- Remplacement du nom
String.parseAsHtml
parAnnotatedString.Companion.fromHtml
. (I43dcd) - Ajout d'arguments de style (
linkStyle
,focusedLinkStyle
ethoveredLinkStyle
) et d'un écouteur d'interaction de lien à la méthodeparseAsHtml
. Lors de l'analyse de la chaîne taguée en HTML avec des balises<a>
, la méthode crée unLinkAnnotation.Url
pour chaque balise de ce type et transmet les objets de style et l'écouteur d'interaction de lien à chaque annotation. (I7c977) LinkAnnotation
accepte désormais les arguments de style basés sur l'état et unLinkInteractionListener
. Ajoutez cette annotation àAnnotatedString
pour obtenir un lien hypertexte. En transmettantfocusedState
et/ouhoveredState
, vous pouvez définir leconfiguration
visuel pour les liens lorsqu'ils sont sélectionnés et/ou survolés. (I81ce4, b/139312671)ImeOptions.hintLocales
n'est plus nullable. Si vous souhaitez transmettre une liste de paramètres régionaux vide, veuillez utiliserLocaleList.Empty
. (Ic5bc4)
Correction de bugs
- Gère correctement les données d'événement d'entrée historiques incorrectes/corrompues (ignore les données de décalage incorrectes).
- Corrige les événements de pointeur inattendus lorsqu'un modificateur de saisie au pointeur est ajouté dynamiquement avant un autre modificateur de saisie au pointeur pendant un flux d'événements de saisie au pointeur actif (par exemple, entre une entrée au pointeur et une sortie au pointeur [souris/stylet]).
Version 1.7.0-alpha06
3 avril 2024
Publication d'androidx.compose.ui:ui-*:1.7.0-alpha06
. La version 1.7.0-alpha06 contient ces commits.
Nouvelles fonctionnalités
- Ajout de la méthode
parseAsHtml
pour les chaînes stylisées: elle permet de convertir une chaîne marquée avec des balises HTML enAnnotatedString
. Notez que toutes les balises ne sont pas acceptées. Par exemple, vous ne pouvez pas encore afficher de listes à puces. (I84d3d, I30626, b/139326648) - Implémentation d'une prise en charge expérimentale des captures d'écran longues dans les conteneurs de défilement Compose à l'aide de l'API Android officielle (
ScrollCaptureCallback
). Cette fonctionnalité est expérimentale et ne gère peut-être pas tous les cas correctement pour le moment. C'est pourquoi elle est actuellement désactivée par défaut. Pour activer cette option, définissez l'indicateurComposeFeatureFlag_LongScreenshotsEnabled
sur "true". (I2b055, b/329296471)
Modifications apportées à l'API
fun ClipEntry.getMetadata()
devientval ClipEntry.clipMetadata
. (I50155)- Suppression des fonctions
ClipboardManager.getClipMetadata
etClipboardManager.hasClip
. Veuillez utiliserclipEntry.getMetadata()
pour lire les métadonnées de l'entrée de clip actuelle. Vérifiez également si le résultat deClipboardManager.getClip
est nul ou non pour savoir si le presse-papiers contient un extrait actuel. (I50498) - Vous pouvez désormais transmettre des objets
GraphicsLayer
à des fonctionsplaceable.placeWithLayer()
. (I1b22f) ClipboardManager.setClip
accepte désormais la valeur nulle pour pouvoir effacer le presse-papiers. (I7d2e9)- Ajout d'ID de ressource pour faciliter le masquage des vues utilisées comme détails d'implémentation dans les outils de compilation (I99531)
- Ajout de la méthode de suspension
GraphicsLayer#toImageBitmap
pour permettre le rendu du contenu d'un bitmap dans unGraphicsLayer
. Il s'agit d'une opération de rendu accélérée matérielle au niveau d'API 22 ou supérieur (inclus), compatible avec plus de 99% de tous les appareils Android. Au niveau d'API Android 21, le rendu logiciel est utilisé. (I9e114) - Méthode d'assistance pour convertir une
RectF
Android enComposeRect
(I39925, b/325660505) - Tous les paramètres
KeyboardOptions
ont désormais une valeur non spécifiée par défaut. Ajout de la méthodeKeyboardOptions.merge
. KeyboardOptions.autoCorrect
a été renommé enautoCorrectEnabled
et peut désormais être nul, ce qui indique qu'aucune valeur n'a été spécifiée. (Ia8ba0, b/295951492)- La variante
BasicTextField(state)
etBasicSecureTextField
utilisent désormaisKeyboardActionHandler
au lieu deKeyboardActions
pour traiter les actions effectuées par le clavier logiciel. (I58dda)
Version 1.7.0-alpha05
20 mars 2024
Publication d'androidx.compose.ui:ui-*:1.7.0-alpha05
. La version 1.7.0-alpha05 contient ces commits.
Nouvelles fonctionnalités
- Introduction d'une nouvelle API
GraphicsLayer
pour enregistrer des commandes de dessin dans une liste d'affichage, ainsi que des propriétés supplémentaires qui affectent le rendu de la liste d'affichage. Cela fournit une limite d'isolation pour diviser une scène complexe en éléments plus petits qui peuvent être mis à jour individuellement sans avoir à recréer l'ensemble de la scène. Les transformations apportées à unGraphicsLayer
peuvent être effectuées sans réenregistrer la liste d'affichage. Contrairement àModifier.graphicsLayer
,GraphicsLayer
permet d'afficher le contenu du composable ailleurs et est utile dans les cas d'utilisation animés où le contenu doit être affiché dans différentes scènes.
Modifications apportées à l'API
GraphicsLayer.draw(Canvas)
n'est plus une API publique. Veuillez plutôt utiliser la fonction d'extensionDrawScope.drawLayer(GraphicsLayer)
pour dessiner le calque. (I7a7c0)- Séparation de
restrictedConstraints()
en deux méthodes:fitPrioritizingWidth()
etfitPrioritizingHeight()
(I6d7fd) - Introduction du bouchon
HardwareCanvas
pour Android L. (I1c3b5, b/288494724) - Mise à jour du framework Compose pour exposer une composition
GraphicsContext
locale, ainsi que la mise à jour des implémentations de modificateur Owner,DelegateableNode
etdrawWithCache
pour exposer l'accès auGraphicsContext
pour un accès limité qui nettoiera automatiquement les instancesGraphicsLayer
lorsque les modificateurs seront détruits. (I64a2f, b/288494724) - Ajout de
InterceptPlatformTextInput
pour faciliter l'écriture de tests de bas niveau liés à l'IME et d'autres cas d'utilisation de l'IME de bas niveau.PlatformTextInputTestOverride
est maintenant obsolète. (I862ed, b/322680547) - La fonction d'extension
GraphicsLayer.setOutline(Outline)
a été ajoutée. (Ib81f4) - Introduction du constructeur de fonction
GraphicsContext
pour créer une fabrique permettant de créer des instancesGraphicsLayer
. (Ib98d6, b/288494724) - API
GraphicsLayer
exposée pour offrir aux développeurs la flexibilité définie par eux-mêmes pour capturer des commandes de dessin pouvant être utilisées pour dessiner ailleurs et appliquer différents effets visuels au résultat final. (I80245, b/288494724) - Découvrez
Paragraph#getRangeForRect
, qui renvoie une plage de texte couverte par une zone rectangulaire donnée. (Iee516, b/325660505) - Suppression du forçage expérimental de
BasicText
avec l'argumentonLinkClicked
. Une API de remplacement pour la prise en charge des liens hypertextes sera disponible à l'avenir. (I107d5)
Correction de bugs
- Ajout de la définition d'API
GraphicsLayer
"expect/actual" pour prendre en charge la capture et la lecture des commandes de dessin avec des effets visuels et des transformations de composition facultatifs. Introduction de l'interfaceGraphicsContext
pour contenir les dépendances graphiques, y compris la création et la gestion des instancesGraphicsLayer
. (I4a8d6, b/288494724) - Résolution d'un problème d'interopérabilité avec la recherche de ciblage 1D, qui bloquait le ciblage dans un
ComposeView
intégré à d'autres vues. (I08fd4)
Contribution externe
LocalLifecycleOwner
est passé de l'UI Compose àlifecycle-runtime-compose
afin que ses API d'assistance basées sur Compose puissent être utilisées en dehors de l'UI Compose. Merci à Jake Wharton pour sa contribution. (I6c41b, b/328263448)- Exposez de manière cohérente les propriétés de flottaison de biais sur tous les sous-types d'alignement basés sur les biais. (I69f0f, b/328088992)
Version 1.7.0-alpha04
6 mars 2024
Publication d'androidx.compose.ui:ui-*:1.7.0-alpha04
. La version 1.7.0-alpha04 contient ces commits.
Modifications apportées à l'API
- Prise en charge de la fonctionnalité d'écriture manuscrite avec stylet pour BasicTextField2 sur les appareils postérieurs à Android U. (I002e4)
- Dans cette CL, nous ajoutons l'action sémantique
GetScrollViewportLength
afin de pouvoir transmettre des informations sur les composants défilés dans Compose au système a11y. Cette CL applique également l'utilisation de cette propriété dans les listes déroulantes Foundation. (Ic5fa2) FocusRequester.createRefs
est désormais stable (I4d92c, b/261436820).- Ajout de
DelegatableNode.requireView()
pour permettre aux nœuds de modification d'obtenir l'View
Android actuel sans lire une composition locale. (I40768) - Nouvelle API
Path.reverse()
pour inverser le sens d'un parcours (I36348) - Ajout de
hintLocales
àKeyboardOptions
pour permettre àTextFields
d'indiquer aux IME des paramètres régionaux spécifiques afin de prédéfinir une langue préférée. - Exposez la propriété
platformLocale
à partir deLocale
, qui renvoie l'objet de plate-forme sous-jacent, par exemplejava.util.Locale
. (I921c6)
Version 1.7.0-alpha03
21 février 2024
Publication d'androidx.compose.ui:ui-*:1.7.0-alpha03
. Liste des commits de la version 1.7.0-alpha03
Modifications apportées à l'API
- Présentation de
ContextualFlowRow
et deFlowRow
/Column
améliorés avec MaxLines et Overflow. Nous sommes heureux d'annoncer des améliorations apportées aux élémentsFlowRow
etFlowColumn
expérimentaux, qui sont désormais compatibles avec maxLines et overflow, ainsi que le lancement deContextualFlowRow
etContextualFlowColumn
. Cette mise à jour est conçue pour fournir des composants optimisant les performances.ContextualFlow*
est parfait pour un grand nombre d'éléments utilisant une petite configurationmaxLines
et des boutons dynamiques "+N Voir plus".FlowRow
etFlowColumn
sont parfaits pour un petit nombre d'éléments, moins de 100 éléments. Important: Pour conserver le comportement existant dansFlowRow
ouFlowColumn
, où tous les éléments sont composés, que ce soit ou non en fonction de la taille maximale de l'axe croisé, définissezoverflow
surFlowRowOverflow.Visible
ouFlowColumnOverflow.Visible
lors de l'initialisation. DécouvrezContextualFlowRowSample
etFlowRowSample
pour voir comment ces nouvelles fonctionnalités fonctionnent. (Ib9135, b/293577082) - Ajoutez la propriété sémantique
maxTextLength
qui doit être définie sur les champs de texte qui filtrent le nombre maximal de caractères autorisés. (I24d9f, b/170648072) - Le wrapper
Modifier.inspectable
est obsolète. Cette API crée plus d'invalidations de votre modificateur que nécessaire. Son utilisation est donc désormais déconseillée. Nous encourageons les développeurs à implémenter la méthodeinspectableProperties()
surModifierNodeElement
s'ils souhaitent exposer les propriétés de modificateur aux outils. (Ib3236) - Nouveau constructeur pour
PopupProperties
, qui permet un contrôle total sur les indicateursWindowManager.LayoutParams
. (Ibb33e, b/312485503) - Ajout de
DelegatableNode.requireLayoutCoordinates()
pour obtenir laLayoutCoordinates
actuelle d'unModifier.Node
sans avoir à remplaceronPlaced
et à stocker vous-même les coordonnées dans une propriété. (Ia8657) - Ajout de
DelegatableNode.currentLayoutCoordinates
pour obtenir laLayoutCoordinates
actuelle d'unModifier.Node
sans avoir à remplaceronPlaced
et à stocker vous-même les coordonnées dans une propriété. (Iaebaa) BasicTextField2
et les API associées du packageandroidx.compose.foundation.text2
sont déplacées versandroidx.compose.foundation.text
. (I9f635)- Ajout d'une nouvelle API
ApproachLayoutModifierNode
pour créer une logique d'approche personnalisée dans un nœud de modificateur explicite. Ajout également d'une nouvelle APIDeferredTargetAnimation
expérimentale pour les animations dont la cible est inconnue lors de l'instanciation. (I60745) - Nouvelles API
Path
pour interroger l'orientation d'un chemin et extraire des contours à partir d'unPath
. (I63d04) - Ajout de
PathHitTest
etPath.contains(Offset)
pour vérifier si unPath
contient un point spécifique. (I3b218) TextLayoutResult
expose désormais la méthodegetLineBaseline(lineIndex)
. Cela permet de lire la ligne de base d'une ligne arbitraire du texte en plus des propriétés pratiques existantesfirstBaseline
etlastBaseline
. (Ide4e8, b/237428541)- Ajout d'une méthode permettant de comparer uniquement les annotations de deux
AnnotatedStrings
. (I32659)
Correction de bugs
- Correction d'un problème de rétrocompatibilité avec
SemanticsPropertyReceiver.performImeAction
etSemanticsActions.PerformImeAction
. (Id0528, b/322269946)
Version 1.7.0-alpha02
7 février 2024
Publication d'androidx.compose.ui:ui-*:1.7.0-alpha02
. Liste des commits de la version 1.7.0-alpha02
Modifications apportées à l'API
- Correction d'un problème de compatibilité binaire avec
SemanticsPropertyReceiver.performImeAction
. (I65865, b/322269946) - Le constructeur
PopupProperties
qui accepte un paramètreusePlatformDefaultWidth
n'est plus expérimental. (I8f8d2) - Ajout d'une surcharge de
ComposeTestRule.waitUntil
qui accepte une description de la condition à inclure dans le message de délai avant expiration. (I9413e) - Nouvelle API de sémantique
unset()
pour supprimer les propriétés de sémantique ajoutées dans la même chaîne de modificateurs. Nouvelle propriété sémantiqueisOpaque
. (I8c583, b/317966058, b/246056649) - Suppression de
originalEventPosition
de la méthode de copie dans l'API publique dePointerInputChange
. (I7bead)
Correction de bugs
- Correction d'un bug d'accessibilité qui permettait aux éléments autres que les onglets et les boutons d'option d'être cliquables lorsqu'ils étaient sélectionnés. (I2181c)
VelocityTracker
inclura désormais le correctif permettant d'activer l'ajout de points par défaut. En cas de problème, vous pouvez toujours désactiver le correctif en définissantVelocityTrackerAddPointsFix
sur "false". (Ib3877, b/269487059)- Correction de l'incompatibilité binaire ascendante dans
TextStyle
etParagraphStyle
. (I179f0, b/320819734)
Contribution externe
- Ajout d'un nouveau constructeur
DialogProperties
sans paramètres spécifiques à la plate-forme. (I45829) - Ajout d'un nouveau constructeur
PopupProperties
sans paramètres spécifiques à la plate-forme. (I9a038)
Version 1.7.0-alpha01
24 janvier 2024
Publication d'androidx.compose.ui:ui-*:1.7.0-alpha01
. Liste des commits de la version 1.7.0-alpha01
Modifications apportées à l'API
ClipboardManager
étendu en ajoutantClipEntry
etClipMetadata
pour prendre en charge le contenu arbitraire tel que les images.- Ajoute l'API
DeviceConfigurationOverride
àui-test
pour permettre de remplacer localement le comportement du contenu testé, par exemple pour spécifier une taille, des paramètres régionaux, une direction de mise en page, une échelle de police ou un thème disponibles.
Version 1.6
Version 1.6.8
12 juin 2024
Publication d'androidx.compose.ui:ui-*:1.6.8
. La version 1.6.8 contient ces commits.
Correction de bugs
- Correction des incohérences dans la mise à l'échelle de la police lorsque la mise à l'échelle de la police est inférieure à la table la plus basse définie. Dans ce cas, nous interpolons entre l'échelle linéaire 1x et le tableau le plus bas défini, de sorte que la taille de police augmente de manière monotone à mesure que les échelles augmentent. (Icbae3)
Version 1.6.7
1er mai 2024
Publication d'androidx.compose.ui:ui-*:1.6.7
. La version 1.6.7 contient ces commits.
Version 1.6.6
17 avril 2024
Publication d'androidx.compose.ui:ui-*:1.6.6
. La version 1.6.6 contient ces commits.
Correction de bugs
- Correction d'un plantage rare de
BasicTextField
.
Version 1.6.5
3 avril 2024
Publication d'androidx.compose.ui:ui-*:1.6.5
. La version 1.6.5 contient ces commits.
Version 1.6.4
20 mars 2024
Publication d'androidx.compose.ui:ui-*:1.6.4
. La version 1.6.4 contient ces commits.
Version 1.6.3
6 mars 2024
Publication d'androidx.compose.ui:ui-*:1.6.3
. La version 1.6.3 contient ces commits.
Version 1.6.2
21 février 2024
Publication d'androidx.compose.ui:ui-*:1.6.2
. Liste des commits de la version 1.6.2
Version 1.6.1
7 février 2024
androidx.compose.ui:ui-*:1.6.1
est publié. Liste des commits de la version 1.6.1
Correction de bugs
- Correction d'un problème de rétrocompatibilité avec
SemanticsPropertyReceiver.performImeAction
etSemanticsActions.PerformImeAction
. (Ie0bb2, b/322269946) - Les mises en page génèrent désormais une erreur lors de la mesure lorsqu'une mise en page renvoie une taille anormalement grande. Ce type d'erreur se produit généralement lorsque la mesure utilise directement des contraintes maximales sans vérifier
Constraints.Infinity
. Cette vérification aidera les développeurs à détecter les problèmes de taille de la mise en page plutôt que dans une mise en page qui la contient. (I339a9)
Version 1.6.0
24 janvier 2024
Publication d'androidx.compose.ui:ui-*:1.6.0
. Liste des commits de la version 1.6.0
Version 1.6.0-rc01
10 janvier 2024
Publication d'androidx.compose.ui:ui-*:1.6.0-rc01
. Liste des commits de la version 1.6.0-rc01
Correction de bugs
- Implémentation optimisée des graphiques vectoriels pour améliorer les performances en réduisant les recompositions supplémentaires.
Version 1.6.0-beta03
13 décembre 2023
Publication d'androidx.compose.ui:ui-*:1.6.0-beta03
. Liste des commits de la version 1.6.0-beta03
Nouvelles fonctionnalités
- Il est désormais possible de détacher un
LayoutCoordinates
sans détacher le nœud. Prévention de ce problème dans l'outil d'inspection de la mise en page de Compose (If693)
Correction de bugs
PlatformImeOptions
est désormais une classe concrète et non plus une interface. (If40a4)- Correction des recompositions en aval supplémentaires causées par l'attribution de nouvelles valeurs à
LocalSoftwareKeyboardController
etLocalTextInputService
chaque fois qu'une racine est recomposée. (I42190, b/310510985)
Version 1.6.0-beta02
29 novembre 2023
Publication d'androidx.compose.ui:ui-*:1.6.0-beta02
. Liste des commits de la version 1.6.0-beta02
Version 1.6.0-beta01
15 novembre 2023
Publication d'androidx.compose.ui:ui-*:1.6.0-beta01
. Liste des commits de la version 1.6.0-beta01
Modifications apportées à l'API
- Le modificateur
DragAndDropTarget
accepte désormais explicitement leDragAndDropTarget
destinataire et dispose d'un lambda pour activer une session de glisser-déposer. Il existe désormais deux fonctions d'usine pour unDragAndDropModifierNode
. L'un pour recevoir les transferts et l'autre pour transférer des données (I69481) - Modification de
maximumFlingVelocity
pour qu'il soit représenté en tant que Float. Mise à jour de la documentation pour clarifier l'unitémaximumFlingVelocity
. (I8adc7) onDragAndDropStart
dans la fabriqueDragAndDropModifierNode
a été renomméacceptDragAndDropTransfer
.acceptsDragAndDropTransfer
a été ajouté au modificateurdragAndDropTarget
pour accepter les éléments à partir d'une session de glisser-déposer. Ce lambda renvoie unDragAndDropTarget
viable si vous souhaitez utiliser une session de glisser-déposer. D'autres lambdas pour le traitement des événements de glisser-déposer ont été remplacés par celui-ci. Une fonction de fabriqueDragAndDropTarget
a été ajoutée pour recevoir des sessions de glisser-déposer (Iebf3a).Suppression de
DragAndDropInfo
en tant que type.DragAndDropModifierNode.drag
accepte désormais des paramètres pour le lambdaDrawScope
transferData
, la taille de la décoration et la décoration de glissement.DragAndDropTarget
comporte des méthodes pour des événements de glisser-déposer particuliers au lieu d'être une méthode abstraite unique.onDragAndDropEvent
dans la fonction d'usine d'unDragAndDropModifierNode
a été renomméonDragAndDropStart
pour mieux indiquer que l'DragAndDropTarget
fourni n'est valide que pour une session de glisser-déposer donnée.Suppression de
DragAndDropEventType
. (I645b1)PlatformTextInputModifierNode.runTextInputSession
a été renomméestablishTextInputSession
. (I03cd0)Amélioration des noms d'API de nœuds traversables pour les rendre plus compréhensibles. (Ia4474)
Remplacez
OriginalText
parTextSubstitution
. (Ifa5a8)Changement de nom :
PlatformTextInputModifierNode.textInputSession
devientrunTextInputSession
. (Ie9c6b)Les enfants de
SubcomposeLayout
(et les mises en page commeLazyColumn
qui s'y basent) qui sont conservés pour être réutilisés ultérieurement sont considérés comme désactivés. Une nouvelle API de testassertIsDeactivated()
a été introduite pour tester ces nœuds. Les autres API de test filtrent les nœuds désactivés par défaut. (I2ef84, b/187188981)Suppression de
FocusDirection.In
etFocusDirection.Out
. Utilisation deFocusDirection.Enter
etFocusDirection.Exit
à la place. (I2f660)Les API Material
SwipeToReveal
(pour les cartes et les chips) s'appuient désormais sur une API basée sur des emplacements (comme recommandé par Compose) au lieu d'instances basées sur des classes de données pour créer ces emplacements. Il s'agit d'un changement incompatible. Veuillez consulter la démonstration et l'exemple de code pour savoir comment utiliser la nouvelle API. (Ia8943)Le constructeur
FontStyle(int)
est obsolète. Utilisez plutôtFontStyle.Normal
ouFontStyle.Italic
. (I66610)Modification du nom de l'interface
FontScalable
enFontScaling
(Ie804a)
Correction de bugs
SoftwareKeyboardController.show()
n'affiche plus le clavier logiciel si aucun éditeur de texte n'est sélectionné. (I2165a, b/301477279)- Les événements de pression sur les touches matérielles "UP" pour les touches qui n'ont pas reçu d'événement "DOWN" dans la même vue Compose sont désormais ignorés. (Ib37b4, b/305518328)
- Ajout de la prise en charge du dégradé de balayage dans le moteur de rendu
ArcLine
. (I4d5bb) - Implémentez equals et le code de hachage pour
PageSize.Fixed
. (Ie3ede, b/300134276) - Correction d'un problème de compatibilité binaire avec le changement de marge intérieure de la fenêtre (Iee695)
- Suppression de la couche de base Material pour le chip/bouton Material3, car les micro-benchmarks montrent de meilleures performances sans elle. (I55555)
- Les
TestDispatcher
transmis en tant queeffectContext
pour les tests Compose seront désormais utilisés pour créer les horloges de test et de frame. (Ia7178)
Version 1.6.0-alpha08
18 octobre 2023
Publication d'androidx.compose.ui:ui-*:1.6.0-alpha08
. Liste des commits de la version 1.6.0-alpha08
Modifications apportées à l'API
- Le lambda
onDrawDragShadow
deModifier.dragAndDrawSource
a été renommédrawDragDecoration
, et le paramètre de taille deDragAndDropInfo
a été renommédragDecorationSize
. (Id0e30, b/303904810) - Introduisez
SemanticsNodeInteraction.isDisplayed()
etSemanticsNodeInteraction.isNotDisplayed()
pour vérifier si un nœud mis en correspondance est visible ou non sans également l'affirmer. (I2c196, b/302100809) - Ajout d'une valeur
Unspecified
spéciale pour les champsTextAlign
,TextDirection
,Hyphens
etLineBreak
deParagraphTextStyle
afin de remplacernull
. Étant donné que ces classes sont des classes inline, en remplaçant nullable par "Unspecified", nous évitons le boxing de type primitif. Les constructeurs, les getters et les autres méthodes deTextStyle
et du style de paragraphe ont été mis à jour pour accepter les paramètres mentionnés en tant que types non nuls. (I4197e, b/299490814) - Ajout d'une surcharge
GoogleFont
pour lire unGoogleFont
à partir d'un fichier XML. (If8f59) LoremIpsum
PreviewParameterProvider
a été défini comme une classe ouverte. (I41bf5, b/266918816, b/300116360)
Correction de bugs
FontFamilyResolver
utilise désormaisDispatchers.Main
pour les coroutines de gestion du cache. (Ie8dd9)AndroidViewBinding
supprime désormais de manière synchrone les instancesFragment
gonflées en incluant unFragmentContainerView
dans votre mise en page dans le cadre de sononRelease
à l'aide decommitNow
(au lieu decommit
qu'il utilisait auparavant), ce qui corrige les problèmes liés à la méthode de modification en direct en remplaçant la composition en cas de modification. (I58fbf)
Version 1.6.0-alpha07
4 octobre 2023
Publication d'androidx.compose.ui:ui-*:1.6.0-alpha07
. Liste des commits de la version 1.6.0-alpha07
Modifications apportées à l'API
- Ajout de
PlatformTextInputMethodTestOverride
pour écrire des tests pour les éditeurs de texte personnalisés. (Id159b) - Ajoute le modificateur
dragAndDropSource
pour démarrer des sessions de glisser-déposer et le modificateurdragAndDropTarget
pour recevoir des sessions de glisser-déposer. (Ib7828, b/286038936) - Ajout de collections
ColorList
etColorSet
qui évitent les allocations. (I744bd) - Ajout d'un indicateur temporaire
DisableNonLinearFontScalingInCompose
pour désactiver l'ajustement non linéaire de la police. DéfinissezDisableNonLinearFontScalingInCompose = true
dans vos tests si vous avez besoin de temps pour les nettoyer. Cet indicateur sera supprimé dans Compose 1.6.0-beta01. (Ic9486)
Correction de bugs
- Analyse optimisée des drawables vectoriels XML. (Ibb015)
Version 1.6.0-alpha06
20 septembre 2023
Publication d'androidx.compose.ui:ui-*:1.6.0-alpha06
. Liste des commits de la version 1.6.0-alpha06
Modifications apportées à l'API
- Optimisations supplémentaires apportées aux icônes Material. (I3e08d)
- Ajout de la possibilité de parcourir l'arborescence des modificateurs de haut en bas pour trouver des nœuds similaires. (I2d234)
- Ajout d'un rappel
onRestoreFailed()
au modificateurfocusRestorer()
(Ie1d43) - Ajout d'annotations androidx à diverses API graphiques pour spécifier
ColorInt
,FloatRange
,IntRange
,Size
, etc. (Id65c8, b/290950582) - Ajout de
showSystemUi=true
à la définition dePreviewScreenSizes
(Ib61d3)
Nouveaux comportements
- Compose utilise désormais une mise à l'échelle de la police non linéaire pour améliorer la lisibilité et l'accessibilité. Lorsque l'échelle de la police est supérieure à 100% dans les paramètres système, la taille du texte de petite taille augmente normalement, mais celle du texte déjà de grande taille n'augmente que légèrement. De plus, les hauteurs de ligne définies dans SP s'ajustent automatiquement pour rester proportionnelles à la hauteur prévue à 100 %. Pour en savoir plus, consultez les bonnes pratiques concernant l'ajustement de la taille de la police. (I11518)
Version 1.6.0-alpha05
6 septembre 2023
Publication d'androidx.compose.ui:ui-*:1.6.0-alpha05
. Liste des commits de la version 1.6.0-alpha05
Modifications apportées à l'API
- Activez la capture de contenu dans
AndroidComposeViewAccessibilityDelegateCompat
. (Ib2969) - Les vitesses de balayage dans les composants View tels que
ScrollView
etRecyclerView
sont limitées àViewConfiguration.ScaledMaximumFlingVelocity
. Compose contient désormais sa propre version demaximumFlingVelocity
, qui s'applique désormais àDraggable
. (Ibf974) - Ajoute une structure initiale pour prendre en charge les API de glisser-déposer de la plate-forme. (If84ce)
- Ajout de
deviceId
dansRotaryScrollEvent
(Iba3bf) - Mise à jour de l'API Devices
ui-tooling
pour inclure les appareils plus récents. (Ib25b4)
Version 1.6.0-alpha04
23 août 2023
Publication d'androidx.compose.ui:ui-*:1.6.0-alpha04
. Liste des commits de la version 1.6.0-alpha04
Modifications apportées à l'API
- Ajout d'une méthode pour désactiver
ReusableComposition
, en supprimant les observations, mais en laissant les nœuds en place. La composition désactivée peut être réactivée en appelantsetContent
. (Ib7f31) - Ajout de l'interface
ReusableComposition
pour gérer le cycle de vie et la réutilisation des sous-compositions. (I812d1, b/252846775) Modifier.focusGroup
est défini comme une API stable. (I7ffa3)- Ajout d'annotations androidx à diverses API graphiques pour spécifier
ColorInt
,FloatRange
,IntRange
,Size
, etc. (I70487, b/290950582) - Mise à jour de l'API
ColorFilter
pour inclure des types de sous-classes concrets afin d'améliorer l'inspectabilité des paramètres. (I5fe29) - Introduction de la bibliothèque wear-tooling-preview pour lister les appareils Wear valides pouvant être utilisés pour les aperçus d'UI (Ib036e)
- Création de l'interface
FontScalable
pour gérer la partie de mise à l'échelle de la police de l'interface Density. (I2cf3f)
Version 1.6.0-alpha03
9 août 2023
Publication d'androidx.compose.ui:ui-*:1.6.0-alpha03
. Liste des commits de la version 1.6.0-alpha03
Modifications apportées à l'API
- Nouveau type de transition d'entrée/de sortie qui met à l'échelle le contenu en fonction de la taille du conteneur animé pendant l'animation d'entrée et de sortie. L'interface et le composable
LookaheadScope
sont désormais stables. (Ifb2ce) - Prise en charge de la configuration de
privateImeOptions
(Idb772)
Correction de bugs
PopupPositionProvider.calculatePosition
met désormais automatiquement à jour la position de la fenêtre pop-up lorsque l'état lu dans le calcul est modifié. (I676a1, b/292257547)- Correction des champs de texte qui affichaient le clavier et étaient modifiables lorsque
readOnly
était défini sur "true". Correction du problème de non-affichage du clavier lorsquereadOnly
est défini sur "false" au lieu de "true" lorsqu'il est sélectionné. (I34a19, b/246909589) - Application étendue des assertions globales dans les tests d'interface utilisateur. (I1f90d)
Version 1.6.0-alpha02
26 juillet 2023
Publication d'androidx.compose.ui:ui-*:1.6.0-alpha02
. Liste des commits de la version 1.6.0-alpha02
Modifications apportées à l'API
- Ajout d'une interface de localisation de services pouvant être implémentée par les implémentateurs de la composition. Elle permet d'implémenter une composition qui délègue à un autre délégué de composition les recherches de service dans la composition d'origine. Cette méthode ne doit pas être appelée directement. Elle permet de créer des API expérimentales dans l'environnement d'exécution qui peuvent être trouvées à partir de versions encapsulées du compilateur, comme le module d'interface utilisateur. (I296b9)
- Refonte complète de l'API
PlatformTextInput*
. (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardController
etLocalSoftwareKeyboardController
ne sont plus au stade expérimental.LocalSoftwareKeyboardController
est désormais unCompositionLocal
approprié. (I4c364)LookaheadLayout
etLookaheadLayoutScope
sont obsolètes depuis quelques versions et sont désormais supprimés. Les API de remplacement sontLookaheadScope
, qui peuvent fonctionner avec n'importe quelle mise en page. (I12ac3)- Ajout de
SemanticsNodeInteraction.requestFocus
pour demander la mise au point de manière plus pratique et visible dans les tests. (Ie8722) - Ajout d'API expérimentales pour l'enregistrement d'assertions globales, à utiliser par les frameworks de test à l'avenir. (I12d77)
Correction de bugs
- La première invocation du rappel
update
deAndroidView
est désormais différée jusqu'à ce que la vue soit associée, au lieu de s'exécuter lorsque la composition qui introduitAndroidView
est appliquée. Cela corrige un bug qui empêchait l'invalidation du rappelupdate
si un état qu'il lisait était modifié immédiatement par un effet. (Ie9438, b/291094055)
Version 1.6.0-alpha01
21 juin 2023
Publication d'androidx.compose.ui:ui-*:1.6.0-alpha01
. Liste des commits de la version 1.6.0-alpha01
Nouvelles fonctionnalités
- Prise en charge de l'avance dans
LazyList
. Cela permet àLazyList
dans la passe lookahead de contourner toute animation (animation d'emplacement d'éléments,AnimatedVisibility
, etc.) et de calculer la taille et la position de lookahead pour tous les enfants. Après le passage d'anticipation, les enfants deLazyList
peuvent s'animer indépendamment de la réalité telle qu'elle apparaît dans le passage d'anticipation.
Modification de comportement: includeFontPadding est désormais défini sur "false" par défaut dans Compose
includeFontPadding
est désormais défini sur "false" par défaut (21d806) dans Compose.
includeFontPadding
est un ancien attribut qui contrôle si une marge intérieure supplémentaire doit être ajoutée au-dessus de la première ligne et de la dernière ligne du texte pour accueillir les caractères qui peuvent s'étendre au-dessus ou en dessous des lignes de base du texte.
La mise à jour de cette version de Compose modifiera l'affichage de tous les textes dans votre UI en supprimant la marge intérieure supplémentaire au-dessus de la première et de la dernière ligne de chaque texte que vous affichez.
Selon vos exigences d'interface utilisateur et les métriques de police que vous utilisez, les modifications devraient être minimes. Toutefois, vous pouvez rencontrer des obstacles, par exemple : - Des tests de capture d'écran défectueux. Corrigez l'UI si nécessaire, puis regénérez les images de référence. - Le texte est légèrement mal aligné. Supprimez les marges négatives personnalisées ou ajoutez-en si nécessaire.
Vous pouvez activer includeFontPadding
en utilisant PlatformTextStyle
pour chaque texte:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
Vous pouvez activer includeFontPadding
pour tous vos textes en configurant vos styles Material. Notez que les noms des paramètres varient entre M2 et M3.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
Pour en savoir plus sur Compose includeFontPadding
, consultez la documentation destinée aux développeurs et cet article de blog.
Si vous rencontrez des problèmes ou des bugs liés à ce changement, signalez-les à l'aide de l'outil de suivi des problèmes.
Modifications apportées à l'API
- Prise en charge de
InputConnection#requestCursorUpdates
(I0c69b) - Ajout de
FocusRequester.saveFocusedChild
etFocusRequester.restoreFocusedChild
. (Ic557e, b/272302679, b/275157318) - Ajout du type
ResourceResolutionException
pour encapsuler les throwables générés lors de la tentative de chargement d'éléments bitmap avec une description du chemin d'accès de l'élément qui n'a pas pu être chargé. (I19f44, b/230166331, b/278424788) - Accessibilité optimisée pour les performances et les allocations de mémoire. (Iede48)
- Ajout de propriétés et d'actions sémantiques pour la traduction de texte. (I4a6bc)
- Nouvelle propriété dans
IntrinsincMeasureScope
et ses implémentations (par exemple,MeasureScope
) pour indiquer si l'étape de mesure actuelle est une étape d'anticipation. (I7a812) - Mise à jour de l'API
DrawScope
pour permettre de recibler le rendu dans un autre canevas avec une autre densité/orientation de mise en page et une autre taille. - Mise à jour de
DrawContext
pour permettre la configuration de la densité et de l'orientation de la mise en page, et rendre le canevas configurable. (Ie1f9b, b/225408150) - Ajout de
Paragraph#fillBoundingBoxes
pour calculer les cadres de délimitation des caractères. (If30ee) - Ajout d'un ensemble de
MultiPreviews
courants (Ia5a27)
Correction de bugs
- Ajout de l'interface
FocusTargetModifierNode
, qui permet de créer unFocusTarget
personnalisé. (I9790e) - Renommage des paramètres
fallback*
du constructeurTextMeasurer
endefault*
. (I940a5) - Remplacement du nom
SemanticsPropertyReceiver.performImeAction
paronImeAction
et du nomSemanticsActions.PerformImeAction
parOnImeAction
. (I8e841) - Ajout de la molette pour différencier un défilement de souris d'un glissement dans le défilement imbriqué (plus précisément, dans
NestedScrollConnection
). (Ie57e4) - Ajout de l'API
asComposePaint
pour remplacertoComposePaint
, car l'objet renvoyé encapsule l'android.graphics.Paint
d'origine (I22b4c) - Abandon de
SemanticsProperties.imeAction
et remplacement par un nouveau paramètre pourSemanticsActions.performImeAction
. (I4a587) - Ajout de la possibilité de sélectionner des éléments à l'aide de la souris. La sélection tactile s'étend par mot et se réduit par caractère. (Ic0c6c, b/180639271)
- Les méthodes
Paragraph
qui généraient une exceptionAssertionError
pour les décalages hors limites génèrent désormais une exceptionIllegalArgumentException
, commeMultiParagraph
. (I549d3, b/243338896)
Version 1.5
Version 1.5.4
18 octobre 2023
Publication d'androidx.compose.ui:ui-*:1.5.4
. Liste des commits de la version 1.5.4
Version 1.5.3
4 octobre 2023
Publication d'androidx.compose.ui:ui-*:1.5.3
. Liste des commits de la version 1.5.3
Correction de bugs
- (b/301209788)
TextField
appliquait parfois de manière incorrecte les commandes précédentes lors de la sélection et de la saisie de texte en coréen, ce qui entraînait la perte de caractères.
Version 1.5.2
27 septembre 2023
Publication d'androidx.compose.ui:ui-*:1.5.2
. Liste des commits de la version 1.5.2
Correction de bugs
- Ajout d'une solution de contournement pour les plantages lorsque l'API de défilement d'accessibilité était accessible à partir d'un thread en arrière-plan.
- Correction des nœuds non associés ajoutés à l'arborescence sémantique.
Version 1.5.1
6 septembre 2023
Publication d'androidx.compose.ui:ui-*:1.5.1
. Liste des commits de la version 1.5.1
Correction de bugs
- Correction des champs de texte qui affichaient le clavier et étaient modifiables lorsque
readOnly
était défini sur "true". Correction du problème de non-affichage du clavier lorsquereadOnly
est défini sur "false" au lieu de "true" lorsqu'il est sélectionné. (I34a19, b/246909589)
Version 1.5.0
9 août 2023
Publication d'androidx.compose.ui:ui-*:1.5.0
. Liste des commits de la version 1.5.0
Version 1.5.0-rc01
26 juillet 2023
Publication d'androidx.compose.ui:ui-*:1.5.0-rc01
. Liste des commits de la version 1.5.0-rc01
Correction de bugs
- Correction du plantage qui se produisait lorsque
SubcomposeLayout
était utilisé dansmovableContentOf()
.
Version 1.5.0-beta03
28 juin 2023
Publication d'androidx.compose.ui:ui-*:1.5.0-beta03
. Liste des commits de la version 1.5.0-beta03
Correction de bugs
- Ajout de l'interface FocusTargetModifierNode, qui permet de créer un FocusTarget personnalisé. (Ifb1d6)
- Correction d'un problème lié aux composables Dialog et Popup qui pouvait entraîner le redimensionnement incorrect de la fenêtre enfant lorsque
usePlatformDefaultWidth=true
. (I112ee)
Version 1.5.0-beta02
7 juin 2023
Publication d'androidx.compose.ui:ui-*:1.5.0-beta02
. Liste des commits de la version 1.5.0-beta02
Modifications apportées à l'API
- Ajout de l'API
asComposePaint
pour permettre la consommation d'une instanceandroid.graphics.Paint
à utiliser dans Compose
Correction de bugs
- Ajout de l'API
asComposePaint
pour remplacertoComposePaint
, car l'objet renvoyé encapsule l'android.graphics.Paint
d'origine (I22b4c)
Version 1.5.0-beta01
24 mai 2023
Publication d'androidx.compose.ui:ui-*:1.5.0-beta01
. Liste des commits de la version 1.5.0-beta01
Modifications apportées à l'API
- Suppression des allocations dans la recomposition, les animations de couleur et
AndroidComposeView
(Ib2bfa) - Ajout de la fonction d'assistance
CacheDrawModifierNode()
pour permettre la délégation. (Icf8f9) - Présentation de la propriété
isLookingAhead
, accessible depuisMeasureScope
, pour observer les résultats d'anticipation et influencer la passe principale si vous le souhaitez. (Ibf4c3) - Nouvelle propriété de sémantique
traversalIndex
, un nombre à virgule flottante utilisé pour réorganiser les nœuds lors de l'explorationTalkBack
(les valeurs inférieures sont placées avant). (I9a81b, b/186443263) - Modification du nom de la propriété sémantique
isContainer
enisTraversalGroup
(I121f6) ColorProducer
utilise désormaisoperator fun invoke
au lieu deproduce
(I4a9a2)- Ajout de l'API de transformation
Path
pour appliquer des transformations de translation/redimensionnement/rotation aux objets de tracé. (I23434, b/233772232) - La méthode de
ColorProducer
s'appelleproduce
. (I78bde) toFrameworkColorSpace
a été renommétoAndroidColorSpace
. (I4f547)ColorLambda
a été renomméColorProducer
. (I73b1a)- Introduction d'API permettant de convertir des types de couleurs Android en types Compose. (Ie7db4, b/279979665)
- Ajout d'un paramètre de couleur à
BasicText
pour permettre d'animer ou de définir efficacement la couleur du texte. (Iffd88, b/246961787) - Changement de nom :
TextRange.constrain
devientTextRange.coerceIn
. (I31be2) - Ajout de
TextStyle.merge(...)
optimisé avec la liste complète des paramètres. (Iad234, b/246961787) - Stabilisation de nombreuses API Text, y compris
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
etMultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPadding
n'est plus obsolète. Notre intention initiale était de supprimer ce champ, mais les commentaires montrent que les développeurs ont besoin de cette option de configuration. Suppression de l'abandon du champ (I98e96, b/277703184)- Ajout de la méthode
TextRange.constrain
publique. (I97912) - Les
UrlAnnotation
dans lesAnnotatedString
peuvent désormais être ouverts via des services d'accessibilité tels queTalkBack
. (If4d82, b/253292081) - Ajout de l'action de sémantique
InsertTextAtCursor
pour les champs de texte. (I11ed5) - Le constructeur
LineHeightStyle.Alignment(topRatio)
est défini comme une API stable. (I79c32, b/261565383) TextMeasurer
et les API associées ne sont plus en phase expérimentale. (I74647, b/261581753)- Ajout de l'action de sémantique
PerformImeAction
pour appeler l'action IME sur les nœuds de l'éditeur de texte. (Ic606f, b/269633506) - Les API
PlatformTextInput
ne sont plus en phase expérimentale pour Android. (I668eb) - Modification du nom du paramètre de valeur pour
Enum.valueOf
(Ia9b89) - Davantage d'exceptions émises par l'énumération valueOf (I818fe)
- Introduction d'une nouvelle API
PlatformTextInputAdapter
de bas niveau pour créer des implémentations de saisie de texte personnalisées qui communiquent directement avec les API de la plate-forme. (I58df4) - Ajout des paramètres
BlendMode
aux méthodesDrawScope.drawText
,Paragraph.paint
etMultiParagraph.paint
pour accepter différents algorithmes de combinaison lors du tracé de texte sur Canvas. (I57508) Font.MaximumAsyncTimeout
a été renomméFont.MaximumAsyncTimeoutMillis
. Renommez uniquement. (I07af5)- Mise à jour des valeurs de DPI des appareils de référence
@Preview
(Id6151, b/254528382) - Ajout des paramètres
brush
etalpha
àBasicText
pour permettre d'animer ou de définir efficacement le pinceau de texte. - Définition de types de lambda sans boîte pour Float, Double, Long, Int et Short dans :ui:ui-unit (I6f18d, b/246961787)
Correction de bugs
- Suppression de plusieurs allocations dans le suivi de la vitesse du pointeur (I26bae)
- Réduction des allocations dans la gestion de la mise en page et de la saisie au pointeur (I5333a)
- Optimisation de l'utilisation de la mémoire et du rendu des premières images de Vector (I2f3c6)
- Suppression des allocations lors du dessin de lignes et de points avec Canvas (I9f535)
- Ajout de documentation pour
AndroidFont.fontVariationSettings
(I7d9e2)
Contribution externe
- Amélioration des performances et réduction des allocations dans les API Vector (I906cb)
Version 1.5.0-alpha04
10 mai 2023
Publication d'androidx.compose.ui:ui-*:1.5.0-alpha04
. Liste des commits de la version 1.5.0-alpha04
Nouvelles fonctionnalités
- Améliorations de la délégation
Modifier.Node
Ajout d'une fonctionnalité améliorée permettant de déléguer à d'autres instancesModifier.Node
à partir d'unDelegatingNode
. Pour ce faire, utilisez les APIdelegate
etundelegate
. Avant ce changement, chaque API du nœud délégué devait être déléguée explicitement au nœud délégué. Après ce changement, les interfaces de nœuds seront déléguées implicitement, sauf siDelegatingNode
les remplace explicitement. (67352bc)
Modifications apportées à l'API
- Introduction de
NestedScrollModifierNode
, unNestedScroll Modifier.Node
auquel une délégation peut être accordée. (I69513) - Ajout des paramètres
onReset
etonRelease
au composableAndroidViewBinding
, en miroir du composableAndroidView
et en permettant la réutilisation de la vue avecViewBinding
. (I00b1e, b/276802519) - Mise à jour de l'API Compose Path pour prendre en charge les opérations de retour en arrière afin de prendre en charge les cas d'utilisation de la manipulation fréquente de chemins avec une réutilisation plus rapide. (I7b797)
- Ajout de
TextStyle.merge(...)
optimisé avec la liste complète des paramètres. (Iad234, b/246961787) - Stabilisation de nombreuses API Text, y compris
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
etMultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPadding
n'est plus obsolète. Notre intention initiale était de supprimer ce champ, mais les commentaires montrent que les développeurs ont besoin de cette option de configuration. Suppression de l'abandon du champ (I98e96, b/277703184)
Correction de bugs
- Correction de la régression où le clavier ne s'affichait pas pour les champs de texte dans les boîtes de dialogue qui n'étaient pas créées par le composable
Dialog
. (I82551, b/262140644)
Version 1.5.0-alpha03
19 avril 2023
Publication d'androidx.compose.ui:ui-*:1.5.0-alpha03
. Liste des commits de la version 1.5.0-alpha03
Nouvelles fonctionnalités
- Nouveau comportement par défaut pour
SubcomposeLayout
dansLookaheadScope
: lesSubcomposeLayouts
qui ne disposent pas d'emplacements conditionnels (par exemple,TabRow
,Scaffold
,BoxWithConstraints
, etc.) fonctionnent désormais correctement avec les animations d'anticipation.
Modifications apportées à l'API
- Le nouveau
intermediateMeasurePolicy
par défaut qui réutilise la stratégie de mesure de la transmission anticipée permet aux sous-typesSubcomposeLayout
sans emplacements conditionnels tels queScaffold
,TabRow
etBoxWithConstraints
de fonctionner avec la transmission anticipée par défaut. (Id84c8) - Le recomposeur créé pour une fenêtre Android ne bloquera désormais que les appels à
withFrameNanos
au lieu de toute composition lorsqu'il recevra une notificationON_STOP
. Cela signifie que les fenêtres associées aux activités arrêtées continueront de se recomposer en cas de modification des données, mais les animations ou tout autre appelant dewithFrameNanos
seront bloqués. (Id9e7f, b/240975572) - Définit
motionEventSpy
en version stable. (Ic5ec4, b/261560988) - Ajout de la méthode
TextRange.constrain
publique. (I97912) PlatformTextStyle.includeFontPadding
n'est plus obsolète pour encourager les développeurs à utiliser cette API de compatibilité pour activer et tester le paramètreincludeFontPadding
défini sur "false". (I98e96, b/277703184)
Version 1.5.0-alpha02
5 avril 2023
Publication d'androidx.compose.ui:ui-*:1.5.0-alpha02
. Liste des commits de la version 1.5.0-alpha02
Modifications apportées à l'API
- Nouvelle API
SubcomposeLayout
qui utilise une stratégie de mesure intermédiaire supplémentaire pour gérer la logique de mesure/mise en page lors des animations basées sur l'anticipation. (I017d3) - PointerInput est désormais paresseux et utilise Modifier.Node pour améliorer les performances (en savoir plus sur le changement mineur de comportement). (15dab9)
- Passage des API expérimentales à la version stable avec les événements de touche. (I9c7d8, b/261566839, b/261567368)
- Passage des API expérimentales en version stable dans
PointerInputChange
. (I1b543, b/261560988, b/261565762, b/261565749) - Ajoute un moyen d'instancier un
SuspendingPointerInputModifierNode
pour des implémentationsModifier.Node
plus complexes. (Ic4933) - Les
UrlAnnotation
dans lesAnnotatedString
peuvent désormais être ouverts via des services d'accessibilité tels queTalkBack
. (If4d82, b/253292081) - Ajout d'une API pour intercepter les touches physiques avant qu'elles ne soient envoyées au clavier virtuel. (I4f4c6, b/186800395)
- Ajout de l'action de sémantique
InsertTextAtCursor
pour les champs de texte. (I11ed5) - Les actions de test liées au texte (par exemple,
performTextInput
) demanderont désormais directement la sélection, à l'aide de l'action de sémantique, au lieu de cliquer sur le champ. (I6ed05)
Correction de bugs
- Les actions de test de texte nécessitent désormais d'activer les champs de texte. (Iab328)
Version 1.5.0-alpha01
22 mars 2023
Publication d'androidx.compose.ui:ui-*:1.5.0-alpha01
. Liste des commits de la version 1.5.0-alpha01
Modifications apportées à l'API
- Modifier.intermediateLayout ne nécessite plus de LookaheadScope explicite. Le bloc de mesure dans intermediateLayout a IntermediateMeasureScope comme receveur, ce qui fournit des CoroutineScope, LookaheadScope et MeasureScope pratiques.(Ibe2e5)
- LookaheadLayout a été remplacé par LookaheadScope, qui n'est plus une mise en page. Cela permet de contrôler directement le contenu enfant d'un LookaheadScope par la règle MeasurePolicy du parent. (Ibe2e5)
- Ajout de
Modifier.Node#coroutineScope
pour permettre à Modifier.Nodes de lancer des coroutines. (I76ef9) - Autorisez Modifier.Nodes à lire des CompositionLocals en implémentant l'interface CompositionLocalConsumerModifierNode. (Ib44df)
- Propagation de la classe @Deprecated vers la propriété. (I882d1)
Version 1.4
Version 1.4.3
3 mai 2023
Publication d'androidx.compose.ui:ui-*:1.4.3
. Liste des commits de la version 1.4.3
Correction de bugs
- Correction d'un problème qui pouvait empêcher la mise en page correcte de
AndroidView
lorsqu'il était utilisé avec certains modificateurs. (I4dc77, b/274797771) - Correction d'un bug dans la recherche par sélection en mode 2D qui affectait les menus
DropDown
. (b/276811828) - Correction d'un bug dans les propriétés de saisie/sortie personnalisées qui n'exécutaient le bloc de saisie/sortie que la première fois que le lambda était appelé (b/277234245)
- Correction d'une régression dans le système de mise au point qui entraînait un plantage lors de la lecture de
focusProperties
. (b/271324781, b/274897776)
Version 1.4.2
19 avril 2023
Publication d'androidx.compose.ui:ui-*:1.4.2
. Liste des commits de la version 1.4.2
Correction de bugs
- Correction d'un problème qui empêchait
AndroidView
de réutiliser correctement ses modificateurs, ce qui pouvait entraîner un comportement inattendu et des plantages. (Ib67ee, b/275919849) - Correction de la régression où le clavier ne s'affichait pas pour les champs de texte dans les boîtes de dialogue qui n'étaient pas créées par le composable
Dialog
(I82551, b/262140644)
Version 1.4.1
5 avril 2023
Publication d'androidx.compose.ui:ui-*:1.4.1
. Liste des commits de la version 1.4.1
Correction de bugs
- Correction d'un problème lié à
ParentDataModifier
qui n'affectait pasAndroidView
(b/274797771)
Version 1.4.0
22 mars 2023
Publication d'androidx.compose.ui:ui-*:1.4.0
. Liste des commits de la version 1.4.0
Changements importants depuis la version 1.3.0
- Ajout d'une nouvelle API
PinnableContainer
permettant d'épingler des éléments de liste différée afin qu'ils ne soient pas supprimés lorsqu'ils sont hors vue suite au défilement. Par exemple,Modifier.focusable()
utilise ce mécanisme pour épingler l'élément actuellement sélectionné. (Ib8881, b/259274257, b/195049010) - Réécriture du système de sélection à l'aide des nouvelles API expérimentales
Modifier.Node
. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Ajout à la propriété sémantique
IsContainer
sur les surfaces. Cette propriété sera utilisée lors d'une modification ultérieure qui détermine l'ordre de navigation en fonction de la signification sémantique des éléments tels que les surfaces. (I63379) - Ajout du nouveau rôle d'accessibilité
DropdownList
. Il permet de répliquer le comportement deTalkBack
lorsque l'élémentandroid.widget.Spinner
est sélectionné. (I177e5, b/236159001) - Vous pouvez désormais utiliser
PlatformTextStyle(emojiSupportMatch)
pour désactiver la prise en charge des emoji sur un seul paragraphe. (Ia7100, b/139326806) - Les tests de l'UI d'Android Compose exécuteront désormais des contrôles de mise en page pour chaque image lors de l'exécution d'images pour arriver à l'inactivité (par exemple, via
waitForIdle
). Cela peut affecter les tests qui s'appliquent à des images individuelles d'animations de mise en page. (I8ea08, b/222093277) - Ajout de la propriété expérimentale
TextMotion
àTextStyle
pour définir le texte sur "Static(default)
" ou "Animé". UtilisezTextMotion.Animated
si un ajustement, une translation ou une rotation du texte doivent être effectués par une animation. (I24dd7)
Version 1.4.0-rc01
8 mars 2023
Publication d'androidx.compose.ui:ui-*:1.4.0-rc01
. Liste des commits de la version 1.4.0-rc01
Modifications apportées à l'API
- Ajout d'une surcharge de la fonction composable
AndroidView
, qui accepte le paramètreonReset
. Il permet de réutiliser les instances de vue lorsque leur nœud dans la composition est supprimé et réutilisé de manière compatible. Cela est particulièrement utile pourLazyRows
etLazyColumns
des vues. (I3f10d, b/230099236) - Introduction d'une nouvelle API
PlatformTextInputAdapter
de bas niveau pour créer des implémentations de saisie de texte personnalisées qui communiquent directement avec les API de la plate-forme. (I58df4)
Correction de bugs
- L'action de sémantique
SetText
deBasicTextField
met désormais à jour le tampon de texte à l'aide du même chemin de code que les mises à jour de l'IME et les fonctions de test (par exemple,performTextReplacement
). - Les fonctions de test de texte
performTextClearance
,performTextReplacement
etperformTextSelection
utilisent désormaisSemanticsActions
. (I0807d, b/269633168, b/269624358)
Version 1.4.0-beta02
22 février 2023
Publication d'androidx.compose.ui:ui-*:1.4.0-beta02
. Liste des commits de la version 1.4.0-beta02
Modifications apportées à l'API
- Suppression de l'API
modifierElementOf()
. Utiliser directementModifierNodeElement
à la place. (I2256b) - Ajout d'un rappel
Modifier.Node.onReset()
vous permettant de réinitialiser un état local pour traiter correctement la demande lorsqueLayout
est réutilisé (par exemple, en tant qu'élément deLazyColumn
). Correction deFocusTargetModifierNode
pour réinitialiser correctement l'état sélectionné. (I65495, b/265201972) - Ajout des paramètres
BlendMode
aux méthodesDrawScope.drawText
,Paragraph.paint
etMultiParagraph.paint
pour accepter différents algorithmes de combinaison lors du tracé de texte sur Canvas. (I57508)
Correction de bugs
- Amélioration de l'algorithme d'ordre de sélection de l'accessibilité. Par exemple, les barres supérieure/inférieure sont plus souvent lues en premier/dernier, respectivement (74e9c5)
Version 1.4.0-beta01
8 février 2023
Publication d'androidx.compose.ui:ui-*:1.4.0-beta01
. Liste des commits de la version 1.4.0-beta01
Modifications apportées à l'API
- Changement de nom :
PinnableContainer.PinnedHandle.unpin()
devientrelease()
(I4667a). - Ajout de
waitUntilNodeCount
,waitUntilAtLeastOneExists
,waitUntilExactlyOneExists
etwaitUntilDoesNotExist
en tant qu'API expérimentales dansComposeTestRule
, étendant l'APIwaitUntil
de sorte qu'elle accepte tous les outils de mise en correspondance et tous les nombres de nœuds. Pour en savoir plus, consultezComposeTestRule
. (Ifa1b9, b/226934294) - Remplacement du nom
Font.MaximumAsyncTimeout
parFont.MaximumAsyncTimeoutMillis
. (I07af5) - Suppression de
GoogleFont.Provider.AllFontsListUri
et association dans ktdoc. (I16f29)
Correction de bugs
- Ajout de documentation pour
AndroidFont.fontVariationSettings
(I7d9e2)
Version 1.4.0-alpha05
25 janvier 2023
Publication d'androidx.compose.ui:ui-*:1.4.0-alpha05
. Liste des commits de la version 1.4.0-alpha05
Modifications apportées à l'API
- Introduction de surcharges expérimentales pour les fonctions
runComposeUiTest
etcreate*ComposeRule
qui acceptent les paramètresCoroutineContext
. Le contexte sera utilisé pour la composition de test, ainsi que pour les appelsLaunchedEffect
etrememberCoroutineScope()
dans la composition. (I10614, b/265177763) - Ajoutez une API pour suivre la vitesse unidimensionnelle (If5a82).
FocusRequester
est désormais marqué comme@Stable
. (I580ee)- Supprimez une annotation expérimentale du constructeur
DialogProperties
qui accepte un paramètreusePlatformDefaultWidth
. (Ic4048) - Ajout d'une fonction à la position de calcul et à la tangente à une distance d'un tracé, avec
PathMeasure.getPosition()
etPathMeasure.getTangent()
(I3b47c) - Suppression d'un setter public exposé accidentellement sur
PlatformParagraphStyle
. (I07f47) - Plus de types/possibilités de valeurs nulles pour les fonctions intégrées/obsolètes ou masquées. (I24f91)
- Ajoutez
AnnotatedString.hasStringAnnotations
à la requête pour rechercher les annotations sans allocation. (I94dfe, b/246960758) - Ajout d'une surcharge pour la fonction
TextMeasurer.measure
qui accepteString
comme texte. (I47b2d, b/242705342) - Dans TextStyle, les API
LineBreak
etHyphens
passent à la version stable. (Ic1e1d)
Contribution externe
- Les méthodes
notifyFocusedRect
dansTextInputSession
etTextInputService
ne sont plus obsolètes. (I23a04, b/262648050)
Version 1.4.0-alpha04
11 janvier 2023
Publication d'androidx.compose.ui:ui-*:1.4.0-alpha04
. Liste des commits de la version 1.4.0-alpha04
Nouvelles fonctionnalités
- Ajout d'une nouvelle API
PinnableContainer
permettant d'épingler des éléments de liste différée afin qu'ils ne soient pas supprimés lorsqu'ils sont hors vue suite au défilement. Par exemple,Modifier.focusable()
utilise ce mécanisme pour épingler l'élément actuellement sélectionné. (Ib8881, b/259274257, b/195049010) - Réécriture du système de sélection à l'aide des nouvelles API expérimentales
Modifier.Node
. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Ajout à la propriété sémantique
IsContainer
sur les surfaces. Cette propriété sera utilisée lors d'une modification ultérieure qui détermine l'ordre de navigation en fonction de la signification sémantique des éléments tels que les surfaces. (I63379) - Ajout du nouveau rôle d'accessibilité
DropdownList
. Il permet de répliquer le comportement deTalkBack's
lorsque l'élémentandroid.widget.Spinner
est sélectionné. (I177e5, b/236159001) - Vous pouvez désormais utiliser
PlatformTextStyle(emojiSupportMatch)
pour désactiver la prise en charge des emoji sur un seul paragraphe. (Ia7100, b/139326806) - Les tests de l'UI d'Android Compose exécuteront désormais des contrôles de mise en page pour chaque image lors de l'exécution d'images pour arriver à l'inactivité (par exemple, via
waitForIdle
). Cela peut affecter les tests qui s'appliquent à des images individuelles d'animations de mise en page. (I8ea08, b/222093277) - Ajout de la propriété expérimentale
TextMotion
àTextStyle
pour définir le texte sur "Static(default)
" ou "Animé". UtilisezTextMotion.Animated
si un ajustement, une translation ou une rotation du texte doivent être effectués par une animation. (I24dd7)
Modifications apportées à l'API
- Remplacement de l'argument
maxSize: IntSize
dansdrawText
parsize: Size
pour l'aligner sur d'autres fonctionsDrawScope
.size
est défini surSize.Unspecified
par défaut, ce qui ne devrait pas modifier le comportement par défaut précédent. (Icd27d) - Suppression du constructeur de police expérimental obsolète. (I8a724, b/261435386)
- La classe de données ui-tooling
Group
dispose désormais d'un champ,isInline
, qui indique si le groupe est destiné à un appel à une fonction modulable intégrée. SiisInline
est défini surtrue
, il s'agit d'un appel à une fonction modulable intégrée. Toutefois, la valeur peut être "false" pour les appels à des fonctions modulables intégrées qui proviennent de modules compilés avec une version du plug-in de compilation Compose qui ne génère pas d'informations sur la fonction intégrée. (Idb846) - Reclassement d'un certain nombre d'API expérimentales en version stable.
- L'API Rotary Scroll Event est désormais stable (I42ad3, b/261561229).
- L'API
FontVariation
est désormais stable (I8779f, b/241016309). - Tous les constructeurs
Font()
sont désormais des API stables (I5948b, b/261435386). DeviceFontFamilyName
est désormais stable (I8b640, b/261435386).- Le constructeur
AndroidFont
avecvariationSettings
est maintenant une API stable. Vous pouvez l'utiliser pour créer des types de descripteurs de police. (I5adcc, b/261565807) - L'API
createFontFamilyResolver
est désormais stable. Cela permet d'identifier les exceptions non détectées lors du chargement asynchrone des polices. (Ibb481, b/261435386) - L'API
Font.loadingStrategy
est désormais stable. (I5937c, b/261435386) - L'API
GoogleFont
est désormais stable. (Ic90b0, b/261435386) - Reclassement de
TextUnit(float, TextUnitType)
, désormais considérée comme une API stable. (I90c84, b/261561612) - Reclassement de
pluralStringResource
, désormais considérée comme une API stable. (I09849, b/261439703)
Version 1.4.0-alpha03
7 décembre 2022
Publication d'androidx.compose.ui:ui-*:1.4.0-alpha03
. Liste des commits de la version 1.4.0-alpha03
Modifications apportées à l'API
- Suppression de
ExperimentalComposeUiApi
dePointerIcon
(I23af8) - Ajout d'actions d'accessibilité de la page :
PageUp
,PageDown
,PageLeft
etPageRight
. Celles-ci ne sont disponibles qu'à partir de l'API 29. (Ida4ab) - Mise à jour de la vue de paramètre
rememberNestedScrollConnection
, de vue racine en vue hôte. (Ia5200) - Ajout d'une API de modificateur pour interroger les informations de défilement des ancêtres. (I2ba9d, b/203141462)
- Utilisation dans
Clickable
pour retarder correctement les interactions liées à une pression du doigt susceptible de devenir un événement de défilement. - Correction de
Clickables
qui ne retardait pas correctement les ondulations en cas d'utilisation dans unScrollable ViewGroup
. - Mise à jour des panneaux et des feuilles pour retarder les pressions du doigt lorsque les gestes peuvent devenir des événements de défilement.
- Changement de nom :
CompositingStrategy.Always
devientOffscreen
, pour indiquer quegraphicsLayer
sera toujours affiché dans un tampon intermédiaire. (I47dc1) - Stabilisation de la surcharge de mise en page avec plusieurs emplacements de contenu. (I10566, b/248294649)
- Ajout des nouvelles API expérimentales
PerfettoTrace.record {}
etPerfettoTraceRule
pour capturer les traces de Perfetto (également appelées traces système) dans le cadre d'un test, afin d'inspecter le comportement et les performances du test. (I3ba16) - Dans les tests d'interface utilisateur avec une règle Compose, les continuations réactivées pendant les rappels
withFrameNanos
ne sont envoyées que lorsque l'exécution de tous les rappels de frame est terminée. Cela correspond au comportement de Compose en fonctionnement normal. Toutefois, les tests qui reposent sur l'ancien comportement peuvent échouer. Cela ne devrait affecter que le code qui appelle directementwithFrameNanos
ouwithFrameMillis
et dont la logique en dehors du rappel est transmise aux fonctions qui peuvent être amenées à être déplacées dans les rappels. Consultez les changements de test d'animation dans cet atelier pour voir des exemples. - Ajout d'un paramètre
onPerformTraversals: (Long) -> Unit
facultatif au constructeurTestMonotonicFrameClock
et à une fonction de fabrique permettant d'exécuter du code après les rappelswithFrameNanos
, mais avant de reprendre les coroutines des appelants. (Idb413, b/254115946, b/222093277, b/255802670) - Ajout d'EmojiCompat à Compose. (Ibf6f9, b/139326806)
- Ajout d'un paramètre de fond d'écran à
@Preview
pour prendre en charge les couleurs dynamiques. (I9f512)
Corrections de bugs
- Les notifications d'application d'instantanés sont désormais envoyées une fois que
Recomposer
a terminé d'appliquer les modifications. (Iad6c0, b/222093277) - Modification de
captureToImage
, afin de permettre les captures d'écran multifenêtres. Utile pour les tests de captures d'écran qui utilisent des fenêtres pop-up de Compose. (I169c5)
Mises à jour des dépendances
- Mise à jour de Compose UI et Compose Material, qui dépendent désormais de Lifecycle 2.5.1. (I05ab0, b/258038814)
Version 1.4.0-alpha02
9 novembre 2022
Publication d'androidx.compose.ui:ui-*:1.4.0-alpha02
. Liste des commits de la version 1.4.0-alpha02
Modifications apportées à l'API
- Mise à jour de
GraphicsLayerScope
pour exposer la taille actuelle degraphicsLayer
. Utile pour calculer les transformations degraphicsLayer
en tant que fonction de la taille du composable. (If8c43,b/181387080) - Introduction de
CompositingStrategy
pour déterminer quand utiliser une couche de composition hors écran pour le rendu du contenu dugraphicsLayer
. L'option "Auto" conserve le comportement par défaut, qui exploite une couche en interne si la valeur alpha ou unRenderEffect/Overscroll
sont appliqués. L'option "Always" introduit systématiquement un tampon hors écran, oùModulateAlpha
évitera d'utiliser un tampon hors écran et modulera chacune des instructions de dessin enregistrées dans legraphicsLayer
. L'activation deModulateAlpha
continuera d'exploiter un tampon hors écran pour les utilisations deRenderEffect/Overscroll
. (I25e82, b/256382834) - Ajout de
invalidateSubtree()
àModifier.Node
pour permettre l'annulation de hiérarchies entières pour le tracé et la mise en page. (I4bd90) - Promotion de
rememberNestedScrollInteropConnection
en version stable. Ajout de la possibilité de transmettre une vue racine àrememberNestedScrollInteropConnection
. Cela peut aider la vue personnalisée à mieux réagir aux contraintes de défilement, en particulier dans les vues non standards (par exemple,ModalBottomSheetDialog
). (I9e107) - Ajout de l'interface
ObserverNode
, qui peut être utilisée par les implémentationsModifier.Node
qui doivent être notifiées lorsqu'une valeur précédemment lue a changé. (I5728b, b/247716483) - Ajout d'un constructeur à
Paint
, qui accepte unandroid.graphics.Paint
natif. Ajout d'une fonction d'extensiontoComposePaint()
qui convertit un objet Paint natif existant en objet Compose Paint. (Ica91b) - Ajout de
FontFamily.Resolver.resolveAsTypeface
à utiliser sur Android. (I8950b) - Ajout de
ToolingState
pour permettre aux outils de modifier les états internes du composable. (Ie6614) - Refactorisation des outils pour une meilleure compatibilité avec les nouvelles animations. (I8677b)
- Ajout du paramètre
minLines
dans le texte Material et Material3, ainsi queTextField
etOutlinedTextField
, ce qui permet de définir la hauteur minimale du composant en termes de nombre de lignes. (I4af1d)
Version 1.4.0-alpha01
24 octobre 2022
Publication d'androidx.compose.ui:ui-*:1.4.0-alpha01
. Liste des commits de la version 1.4.0-alpha01
Modifications apportées à l'API
- Une nouvelle méthode,
awaitEachGesture()
, a été ajoutée pour les détecteurs de gestes. Son fonctionnement est semblable à celui deforEachGesture()
, mais la lecture en boucle des gestes fonctionne entièrement dansAwaitPointerEventScope
, de sorte que les événements ne peuvent pas être perdus entre les itérations. forEachGesture()
a été abandonné au profit deawaitEachGesture()
, car il permet la perte d'événements entre deux gestes. (Iffc3f, b/251260206)- Abandon du recyclage des objets accessibles sur AndroidX. Nous avons constaté que les variations de performances étaient négligeables, même dans les versions compatibles les plus anciennes. (I0a961)
- Ajout de
DrawStyle
en tant qu'attribut expérimental àTextStyle
etSpanStyle
pour permettre le tracé de texte avec contours. (If24b8, b/155421273) - Mise à jour de
AnnotatedString.Builder
, qui implémente désormaiskotlin.text.Appendable
. (I1a061, b/231030444) - Mise à jour de
AnnotatedString.Builder
, qui dispose désormais d'une méthodeappend(AnnotatedString, start: Int, end: Int)
pour ajouter une sous-chaîne d'uneAnnotatedString
et les styles qui se croisent. - Ajout du paramètre
DrawStyle
aux fonctions PaintParagraph
etMultiParagraph
pour permettre le tracé de texte avec contours. (Ic8102, b/155421273)
Contribution externe
- Merci à
vighnesh
d'avoir ajouté les appareils TV à Preview. (Ie15cd)
Version 1.3
Version 1.3.3
11 janvier 2023
Publication de androidx.compose.ui:ui-*:1.3.3
. Liste des commits de la version 1.3.3
Correction de bugs
- Correction d'un plantage qui pouvait se produire sur Android 9 lorsqu'Activity enregistrait l'état de la vue de Compose. (I0b755, b/260322832)
Version 1.3.2
7 décembre 2022
Publication d'androidx.compose.ui:ui-*:1.3.2
. Liste des commits de la version 1.3.2
Corrections de bugs
- Mise à jour afin d'utiliser Profobuf 3.21.8, ce qui évite une alerte de sécurité dans
protobuf-javalite:3.19.4
(CVE-2022-3171). (b/255545055)
Version 1.3.1
9 novembre 2022
Publication d'androidx.compose.ui:ui-*:1.3.1
. Liste des commits de la version 1.3.1
Version 1.3.0
24 octobre 2022
Publication d'androidx.compose.ui:ui-*:1.3.0
. Liste des commits de la version 1.3.0
Changements importants depuis la version 1.2.0
- Ajout d'une suite d'API expérimentales
LookaheadLayout
(permettant des comportements d'animation jusqu'alors impossibles). - Ajout d'une suite d'API expérimentales
Modifier.Node
(alternative plus performante àModifier.composed
). - Amélioration de la prise en charge des encarts WindowInsets.
- Prise en charge ciblée pour les pavés directionnels et claviers physiques dans LazyLists.
- Réduction de l'élévation maximale prise en charge dans les boîtes de dialogue et les fenêtres pop-up à 8 dp (modification destructive du comportement pour certains systèmes de conception personnalisés ; justifications disponibles dans les notes de la version beta01).
- Nombreuses améliorations d'API mineures et non destructives.
- Correction de nombreux bugs et amélioration des performances
Version 1.3.0-rc01
5 octobre 2022
Publication d'androidx.compose.ui:ui-*:1.3.0-rc01
. Liste des commits de la version 1.3.0-rc01
Modifications apportées à l'API
- Ajout d'une nouvelle API expérimentale pour permettre l'utilisation automatique de tirets dans le texte. (Iaa869)
Corrections de bugs
- Mise à jour des polices
DeviceFontFamilyName
, qui ne configureront pas par défaut les paramètres de variantewght
etital
, mais utiliseront les paramètres de la plate-forme pour leTypeface
chargé. (Ia7a6d, b/246989332) - Correction d'une fuite de mémoire
LazyColumn
:onModifierLocalsUpdated
n'était pas appelé avec la valeur par défaut lors d'une réutilisation des modificateurs. (b/230168389)
Version 1.3.0-beta03
21 septembre 2022
Publication d'androidx.compose.ui:ui-*:1.3.0-beta03
. Liste des commits de la version 1.3.0-beta03
Modifications apportées à l'API
- Ajout d'options permettant de personnaliser les sauts de ligne dans le texte. (I86907)
- Remplacement de l'argument
size:IntSize
parconstraints: Constraints
dans la méthodeTextMeasurer.measure
pour prendre en charge les contraintes de largeur minimale. (I37530, b/242707525)
Corrections de bugs
- L'API
BackHandler
d'AndroidX Activity fonctionne désormais dans un composableDialog
. (I35342)
Version 1.3.0-beta02
7 septembre 2022
Publication d'androidx.compose.ui:ui-*:1.3.0-beta02
. Liste des commits de la version 1.3.0-beta02
Modifications apportées à l'API
- Ajout d'une surcharge expérimentale pour Layout, qui accepte une liste de plusieurs lambdas de contenu composables, ce qui permet de traiter différemment les fonctions mesurables placées dans des lambdas de contenu distincts. (Ic1b4e)
Modifications apportées aux API Focus expérimentales :
- Abandon de
FocusDirection.In
etFocusDirection.Out
, remplacés parFocusDirection.Enter
etFocusDirection.Exit
. (Ia4262, b/183746982) - Ajout de deux nouvelles propriétés de sélection permettant de spécifier un comportement personnalisé pour
FocusManager.moveFocus(Enter)
etFocusManager.moveFocus(Exit)
. (I5f3f9, b/183746982) - Prise en charge de
FocusRequester.Cancel
pour annuler un déplacement de sélection.FocusRequester.Cancel
peut être utilisé dans chacune des propriétés de sélection suivantes : haut, bas, gauche, droite, suivant, précédent, début, fin, entrée et sortie. (Ib300f)
Version 1.3.0-beta01
24 août 2022
Publication d'androidx.compose.ui:ui-*:1.3.0-beta01
. Liste des commits de la version 1.3.0-beta01
Refactorisation du nœud Modifier
La couche qui gère les instances Modifier/Modifier.Element
et coordonne leur comportement sur LayoutNodes
a été largement refactorisée. En l'état, cette refactorisation n'a eu d'incidence sur l'API publique d'aucun des nombreux modificateurs de Compose et peut être considérée comme affectant uniquement l'implémentation. Malgré cela, il s'agit d'un changement important pour diverses raisons. (Ie4313)
Résumé des modifications
Les API Modifier.Node
expérimentales ajoutées fournissent une abstraction, qui permet de conserver l'état sur une instance conservée avec le cycle de vie du nœud de mise en page, et qui sera allouée par nœud de mise en page et par utilisation du Modifier.Element
qui l'a produit.
De manière générale, cette abstraction fournit un mécanisme alternatif pour produire des modificateurs avec état sans dépendre des mécanismes de l'API Modifier.composed
.
Risque
Cette modification est strictement compatible au niveau binaire avec les versions précédentes et vise à assurer la rétrocompatibilité en termes de comportement observable, dans la mesure du possible. Cela dit, certains sous-systèmes de Compose n'ont pas été touchés par cette refactorisation, et il est probable que leur comportement ait changé d'une manière non couverte par nos tests, qui n'a pas encore été détectée ni corrigée.
Veuillez faire preuve de prudence lorsque vous passez à cette version. Si vous observez des dysfonctionnements et pensez que cette mise à jour en est la cause, veuillez nous en informer.
API expérimentales
Nous avons ajouté plusieurs API expérimentales, qui se rapportent au nouveau concept de "nœud Modifier". La création de Modifier.Node résulte des éléments suivants :
fun modifierElementOf(…): Modifier
abstract class ModifierNodeElement
abstract class Modifier.Node
abstract class DelegatingNode
interface LayoutModifierNode
interface DrawModifierNode
interface SemanticsNode
interface PointerInputNode
interface ModifierLocalNode
interface ParentDataModifierNode
interface LayoutAwareModifierNode
interface GlobalPositionAwareModifierNode
interface IntermediateLayoutModifierNode
Modification destructive affectant le comportement
L'élévation maximale prise en charge dans les boîtes de dialogue et les fenêtres pop-up a été réduite à 8 dp.
L'élévation maximale prise en charge pour les boîtes de dialogue et les fenêtres pop-up de Compose a été réduite de 30 dp à 8 dp. Ce changement affecte les boîtes de dialogue et les fenêtres pop-up personnalisées Material et UI. Cette modification vise à atténuer un bug d'accessibilité sur les versions antérieures à Android S, et à s'assurer que les services d'accessibilité de ces fenêtres peuvent interagir avec le contenu de la boîte de dialogue ou de la fenêtre pop-up.
Vous ne serez concerné par ce changement que si vous créez une boîte de dialogue ou une fenêtre pop-up personnalisée avec une élévation définie sur des niveaux supérieurs à 8 dp. Le cas échéant, envisagez de réduire l'élévation de la boîte de dialogue ou de la fenêtre pop-up. Si vous avez besoin de désactiver ce nouveau comportement, vous pouvez dupliquer votre propre boîte de dialogue ou votre fenêtre pop-up avec l'élévation souhaitée. Cette approche n'est pas recommandée, car elle peut avoir un impact négatif sur l'accessibilité. C'est au développeur qu'il incombe de s'assurer que les services d'accessibilité peuvent lire et interagir avec la partie inférieure de la boîte de dialogue ou de la fenêtre pop-up.
Modifications apportées à l'API
- Correction d'un problème qui empêchait
painterResource
de se mettre à jour en cas de modification de la configuration. (I58e73, b/228862715) - Mise à jour de
rememberTextMeasurer
, qui n'accepte plus les paramètresFontFamily.Resolver
,Density
niLayoutDirection
. Veuillez utiliser le constructeurTextMeasurer
afin de fournir des valeurs personnalisées pour ces paramètres. (Ia1da3) - Ajout de la propriété
DialogProperties.decorFitsSystemWindows
pour permettre la prise en charge deWindowInsets
par les boîtes de dialogue. (I57742, b/229378542) - Déplacement des constructeurs de polices vers le fichier Kotlin d'origine, afin de conserver la compatibilité au niveau binaire. Aucun changement par rapport à la dernière version stable. (Ieb2f3)
- Suppression d'un opérateur inutile dans plusieurs définitions d'égalité. Changement sans conséquence. (I6c309)
- Définition de
FontVariation.Setting
comme interface scellée, pour permettre les futures API de limitation. (I11021, b/143703328) - Ajout de
CompositionGroup.findParameters
àSlotTree.kt
, permettant aux outils de récupérer des paramètres pour unCompositionGroup
sans avoir à analyser toute la table d'emplacements. (I124fe)
Version 1.3.0-alpha03
10 août 2022
Publication d'androidx.compose.ui:ui-*:1.3.0-alpha03
. Liste des commits de la version 1.3.0-alpha03
Modifications apportées à l'API
- Mise à jour de
LayoutCoordinates.findRootCoordinates()
, désormais public. (I7fa37, b/204723384) - Ajout d'une API expérimentale pour obtenir
LayoutCoordinates
dansPlacementScope
. Cela permet aux développeurs de savoir où la mise en page actuelle doit positionner les éléments enfants par rapport à sa propre position. (I5482b, b/238632578) - Ajout de
LayoutCoordinates.transformFrom
pour obtenir la transformation de Matrice depuis unLayoutCoordinates
vers un autre. (Ic5ab1, b/238632578) - Abandon de
SemanticsModifier.id
. L'ID de la sémantique a été déplacé versLayoutInfo.semanticsId
. (Iac808, b/203559524) - Prise en charge de la définition de paramètres de variation de police pour les polices de ressources (niveaux d'API 26 et supérieurs). (I900dd, b/143703328)
- Prise en charge des polices variables dans
DeviceFontFamilyNameFont
. (Ic1279, b/143703328) - Mise à jour des constructeurs de police, qui acceptent désormais une liste de
FontVariation.Setting
pour configurer des polices variables sur les appareils O+. (I11a9d, b/143703328) - Ajout d'une API
FontVariation
permettant de définir et utiliser des polices variables. (I3c40c, b/143703328) - Mise à jour du constructeur
LineHeightStyle.Alignment
, désormais public (expérimental). (I4bbbe, b/235876330) - Paragraph est désormais associé aux mots clés "expect" (attendu) et "actual" (réel), et défini pour Android et les ordinateurs. (Id387e, b/239962983)
- Mise à jour de l'interface Paragraphe, désormais scellée. Aucun cas d'utilisation ne justifie le sous-classement de Paragraph. Si ce changement vous affecte, nous vous invitons à nous contacter. (If5247, b/239962983)
- Suppression de l'annotation expérimentale pour
PlatformTextStyle
etLineHeightStyle
. (I64bef) - Abandon de
TextInputService.show|hideSoftwareKeyboard
. UtilisezSoftwareKeyboardController
à la place dans le code de l'application etTextInputSession
dans le code de gestion IME. (I14e4c, b/183448615) - Ajout d'une API pour les types d'animation existants. (I26179)
Correction de bugs
- Ajout de
@RequiresPermission
aux API nécessitant l'autorisationPOST_NOTIFICATIONS
sur le SDK 33 et les versions ultérieures (Ie542e, b/238790278)
Version 1.3.0-alpha02
27 juillet 2022
Publication d'androidx.compose.ui:ui-*:1.3.0-alpha02
. Liste des commits de la version 1.3.0-alpha02
Modifications apportées à l'API
- Ajout d'une propriété
PointerInputChange#pressure
permettant de récupérer la pression. (I45a5e, b/205164819) - Ajout de
rememberTextMeasurer
, pour faciliter la création et mémorisation des instancesTextMeasurer
dans la composition. (I8d66e) - Mise à jour de
Rect
,RoundRect
etMutableRect
, qui acceptent maintenant la syntaxein
de Kotlin pour appeler la fonctioncontains
. (Ie42b0, b/238642990) - Suppression des fonctions inutiles
pressKeys
,keysDown
etkeysUp
deKeyInjectionScope
, qui peuvent être facilement implémentées avec des parties plus simples de l'API. (I81d77) - Refactorisation des noms de constantes et de paramètres dans
KeyInjectionScope
, pour inclure le suffixe "Millis" lorsque ces éléments sont exprimés en millisecondes. (Iabef5) - Ajout de la méthode
toStringForLog()
àEditCommand
pour aider à résoudre les problèmes de modification de texte. (I53354, b/228862731) - Ajout de la fonction d'extension
drawText
surDrawScope
pour permettre d'afficher du texte multistyle sur les composables et les modificateurs fonctionnant sur un élémentDrawScope
tel queCanvas
oudrawBehind
. (I16a62, b/190787898) - Ajout d'une API expérimentale appelée
TextMeasurer
, qui permet de calculer la mise en page de texte arbitraire pour créer des résultats identiques àBasicText
, indépendamment de l'environnement d'exécution Compose. (I17101) - Ajout de
mapTree
àSlotTree.kt
. Cela permet aux outils d'inspecterSlotTree
sans effectuer de copie en mémoire au préalable, contrairement à asTree. Dans l'outil d'inspection de la mise en page, ce changement produit une amélioration des performances d'un facteur proche de 10. (I5e113) - Mise à jour de l'aperçu Compose, désormais stocké dans des fichiers de sortie binaires afin de permettre aux développeurs d'écrire et de réutiliser des annotations
MultiPreview
à partir de bibliothèques. (I85699, b/233511976)
Correction de bugs
- Lors de l'ajout d'événements
InputEventChange
à l'outil de suiviVelocity
, les deltas sont désormais considérés plutôt que les positions, ce qui permet de calculer la vitesse même lorsque l'élément cible se déplace. (Icea9d, b/216582726, b/223440806, b/227709803) - Correction d'une exception NPE causée par
AnnotatedString.toUpperCase
en présence d'annotations. (I0aca2, b/210899140)
Version 1.3.0-alpha01
29 juin 2022
Publication d'androidx.compose.ui:ui-*:1.3.0-alpha01
. Liste des commits de la version 1.3.0-alpha01
Modifications apportées à l'API
- Ajout de
LookaheadLayout
, qui prend en charge une transmission anticipée (lookahead) avant la mesure/mise en page réelle. Cela permet de précalculer la mise en page lorsqu'elle change, tout en permettant à l'outil de mesure/mise en page post-lookahead d'utiliser la taille/position précalculée pour animer la taille et les positions par rapport à la cible. LesSubcomposeLayouts
ne sont pas encore pris en charge, mais le seront dans une prochaine version. (I477f5) - Ajout d'un paramètre alpha facultatif aux types de pinceaux de
TextStyle
etSpanStyle
, permettant de modifier l'opacité de l'ensemble duText
. (Ic2fac, b/234117635) - Introduction du type d'annotation
UrlAnnotation
et des méthodes associées pour permettre la compatibilité avec les liensTalkBack
dans lesAnnotatedString
. (I1c754, b/231495122) - Migration de la fonction utilitaire vers l'environnement d'exécution. (I4f729)
Correction de bugs
TextLayoutResult.getLineForOffset
ne génère pas d'exceptions. (Idc5d6, b/235876324)
Contribution externe
- Ajout d'une API
WindowInfo.keyboardModifiers
permettant d'observer son état dans les fonctions modulables ou via snapshotFlow. (Icdb8a)
Version 1.2
Version 1.2.1
10 août 2022
Publication d'androidx.compose.ui:ui-*:1.2.1
. Liste des commits de la version 1.2.1
Correction de bugs
- Correction du pointeur de valeur nulle dans l'outil d'inspection. (b/237987764)
- Correction de l'exception de diffusion de classe lors de la remise en mémoire dans l'outil d'inspection. (b/235526153)
Version 1.2.0
27 juillet 2022
Publication d'androidx.compose.ui:ui-*:1.2.0
. Liste des commits de la version 1.2.0
Modifications importantes depuis la version 1.1.0
Améliorations apportées au balayage de la sélection :
- Mise à jour du défilement axé sur la sélection dans les listes différées, qui exploite désormais la nouvelle API principale
BeyondBoundsLayout
. - Ajout de nouvelles API de personnalisation du comportement dans
FocusOrder
etFocusProperties
. - Amélioration du comportement avec un clavier physique ou une télécommande de téléviseur.
- Mise à jour du défilement axé sur la sélection dans les listes différées, qui exploite désormais la nouvelle API principale
Ajout de nouvelles API pour :
- Les encarts WindowInsets
- Les primitives de base pour les animations basées sur des gestes, infinies et de mise en page
- Les fonctionnalités
GraphicsLayer
, dontRenderEffect
Correction de nombreux bugs et amélioration des performances
Version 1.2.0-rc03
29 juin 2022
Publication d'androidx.compose.ui:ui-*:1.2.0-rc03
. Liste des commits de la version 1.2.0-rc03
- Aucune modification depuis la version 1.2.0-rc02
Version 1.2.0-rc02
22 juin 2022
Publication d'androidx.compose.ui:ui-*:1.2.0-rc02
. Liste des commits de la version 1.2.0-rc02
Version 1.2.0-rc01
15 juin 2022
Publication d'androidx.compose.ui:ui-*:1.2.0-rc01
. Liste des commits de la version 1.2.0-rc01
Modifications apportées à l'API
- Mise à jour des interfaces dans les bibliothèques Compose, désormais créées à l'aide des méthodes d'interface jdk8 par défaut. (I5bcf1)
- Ajout de fonctions d'ordre supérieur à
KeyInjectionScope
, permettant d'injecter des pressions sur les touches pendant que d'autres touches sont maintenues enfoncées ou activées. Ces fonctions incluentwithKeysDown
etwithKeysToggled
, entre autres. Des propriétés ont également été ajoutées pour vérifier si une touche de combinaison particulière est activée (par exemple,isCtrlDown
pour vérifier si l'une des touches Contrôle est activée). Reportez-vous àKeyInjectionScope
pour obtenir de la documentation sur chaque fonction. (I9f6cd, b/229831515) - Introduction d'un
OverscrollEffect
expérimental permettant de générer des effets de défilement hors limites personnalisés, ainsi que des surchargesModifier.scrollable
qui l'acceptent. - Changement de nom et déplacement de la propriété expérimentale
LocalOverScrollConfiguration
, renomméeLocalOverscrollConfiguration
et déplacée defoundation.gesture
vers le package Foundation. (If19fb, b/204650733) - Changement de nom :
runComposeUiTestWithoutActivity {}
devientrunEmptyComposeUiTest {}
, pour plus de cohérence aveccreateEmptyComposeRule()
. (I6fed7)
Version 1.2.0-beta03
1er juin 2022
Publication d'androidx.compose.ui:ui-*:1.2.0-beta03
. Liste des commits de la version 1.2.0-beta03
Modifications apportées à l'API
- Ajout de
pressKeyTimes
, deisCapsLockOn
et des autres touches àKeyInjectionScope
. LAPI est désormais compatible avec les schémas d'injection combinant la souris et le clavier (utilisation de clics avec une touche de combinaison). (I4c8da, b/229831515) - Prise en charge expérimentale de l'injection d'événements de touches. Utilisez
performKeyInput
pour envoyer des événements de touche. Vous pouvez également les envoyer via la propriétékey
deMultiModalInjectionScope
lors d'un geste d'entrée multimodal avecperformMultiModalInput
. Reportez-vous àKeyInjectionScope
pour obtenir de la documentation sur l'API. (Ic5000, b/229831515) - Ajout de
GoogleFont.Provider.AllFontsListUri
permettant de récupérer la source Internet canonique des polices Google Fonts compatibles avec Android. - Amélioration des messages d'erreur renvoyés lorsque GoogleFonts ne se charge pas dans Compose. (I0416c)
Correction de bugs
- Lors de l'ajout d'événements
InputEventChange
à l'outil de suivi Velocity Tracker, les deltas sont désormais considérés plutôt que les positions, ce qui permet de calculer la vitesse même lorsque l'élément cible se déplace. (I51ec3, b/216582726, b/223440806, b/227709803) - Mise à jour du paramètre
Show Layout Bounds
, désormais appliqué aux composables immédiatement après son activation ou désactivation depuis la fenêtre de configuration rapide, sans avoir à quitter/revenir dans l'activité. (I843d5, b/225937688) - Modification du comportement de recherche de chaînes d'accessibilité, qui ne déclenche plus le chargement des polices. Auparavant, la tentative de charger les polices pour
StyleSpans
provoquait des plantages siFontFamily.Resolver
avait été écrasé. (I4609d) - Correction d'un plantage qui survenait lorsque la touche Supprimer était activée alors que le curseur se trouvait à la fin d'un champ de texte.
- Mise à jour de
DeleteSurroundingTextCommand
etDeleteSurroundingTextInCodePointsCommand
, qui exigent désormais des arguments de constructeur non négatifs. (Ica8e6, b/199919707)
Version 1.2.0-beta02
18 mai 2022
Publication d'androidx.compose.ui:ui-*:1.2.0-beta02
. Liste des commits de la version 1.2.0-beta02
Modifications apportées à l'API
- Prise en charge de la réutilisation des fonctionnalités dans d'autres types d'aperçus. (I19f39)
Correction de bugs
- Changement de nom :
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
devientDisposeOnDetachedFromWindowOrReleasedFromPool
, afin de mieux refléter les circonstances qui déclenchent l'élimination, plutôt que l'inverse. (If15ca)
Version 1.2.0-beta01
11 mai 2022
Publication d'androidx.compose.ui:ui-*:1.2.0-beta01
. Liste des commits de la version 1.2.0-beta01
Nouvelles fonctionnalités
- Première publication bêta de la version 1.2.
Modifications apportées à l'API
- Ajout d'un
BeyondBoundsInterval
expérimental utilisable par les implémentations personnalisées deLazyList
lorsqu'elles mettent en page des éléments au-delà des limites visibles. (Ifabfb, b/184670295) - Mise à jour des versions appariées de
Modifier.composed
, désormais considérées comme API stables. (Ie65e4, b/229988420) - Simplification de l'API
rememberNestedScrollConnection
, qui utilise désormais les compositions locales pour obtenir les informations sur la vue actuelle. (I67ca7) - Mise à jour des annotations
@ComposableTarget
, ainsi que celles marquées par@ComposableTargetMarker
, qui peuvent désormais être utilisées au niveau du fichier avec le préfixe@file
. Utiliser une annotation cible au niveau du fichier indique au compilateur que toutes les fonctions modulables du fichier sont destinées à la cible associée. Par exemple, utiliser@file:UiComposable
revient à déclarer que toutes les fonctions@Composable
ciblent l'interface utilisateur de Compose. Une fonction qui doit s'appliquer à une autre cible doit fournir explicitement l'annotation repère correspondante. (I40804) Introduction d'une API de test expérimentale et indépendante de la plate-forme :
interface ComposeUiTest
etfun runComposeUiTest(block: ComposeUiTest.() -> Unit)
, qui permettent de tester l'UI Compose sansTestRule
. Pour exécuter un test sansComposeTestRule
, transmettez le test en tant que lambda àrunComposeUiTest
, puis utilisez les méthodes et les membres du champ d'applicationComposeUiTest
receveur, qui sont identiques à ceux deComposeContentTestRule
.Ajout des
interface AndroidComposeUiTest
etfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
spécifiques à Android pour permettre l'accès à l'activité sous-jacente, comme dansAndroidComposeTestRule
. Pour un contrôle plus précis, vous pouvez instancier unclass AndroidComposeUiTestEnvironment
vous-même.class DesktopComposeUiTest
fournit l'implémentation pour ordinateur, mais aucune fonction d'exécution spécifique aux ordinateurs de bureau n'est proposée pour le moment.Pour migrer un test de
ComposeTestRule
versComposeUiTest
, procédez comme suit (applicable pour Android) :@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }
Vers :
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }
Pour l'instant,
ComposeContentTestRule
etComposeTestRule
ne s'étendent pas à partir deComposeUiTest
. Par conséquent, les fonctions d'extension deComposeUiTest
ne peuvent pas encore être appelées sur l'interfaceTestRule
. LorsqueComposeUiTest
passera en phase d'API stable,ComposeContentTestRule
etComposeTestRule
seront mises à jour pour s'étendre depuisComposeUiTest
. (Ib4e90)Changement de nom :
LineHeightBehavior
devientLineHeightStyle
.Changement de nom :
LineVerticalAlignment
devientLineHeightStyle.Alignment
.Changement de nom :
LineHeightTrim
devientLineHeightStyle.Trim
.Suppression des valeurs de constructeur par défaut de
LineHeightStyle
. (I582bf, b/181155707)Ajout d'un
Brush
àTextStyle
et àSpanStyle
pour permettre l'affichage de texte avec un dégradé de couleurs. (I53869, b/187839528)Remplacement des attributs
trimFirstLineTop
ettrimLastLineBottom
deLineHeightBehavior
par une seule énumération :LineHeightTrim
.LineHeightTrim
peut prendre quatre valeurs d'état définies par deux booléens (FirstLineTop
,LastLineBottom
, Both et None). (Ifc6a5, b/181155707)Ajout de
LineHeightBehavior
àTextStyle
et àParagraphStyle
.LineHeightBehavior
contrôle si la hauteur de ligne est appliquée au-dessus de la première ligne ou au-dessous de la dernière ligne. Cet élément définit également l'alignement de la ligne dans l'espace fourni parTextStyle(lineHeight)
.Par exemple, il est possible d'obtenir un comportement semblable à celui défini par le langage CSS via
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.Les configurations
trimFirstLineTop
ettrimLastLineBottom
ne fonctionnent correctement que siincludeFontPadding
est défini sur "false". (I97332, b/181155707)Reclassement des fonctions
PlatformParagraphStyle.lerp
etPlatformSpanStyle.lerp
, désormais fonctions de niveau supérieur. (I9a268)
Correction de bugs
- Mise à jour de la documentation de
PointerInputChange::copy
, qui indique désormais correctement qu'il s'agit d'une copie superficielle. (I182f5) - Prise en charge des points de suspension lorsque la hauteur est limitée et qu'elle ne convient pas à toutes les lignes de texte. (Ie528c, b/168720622)
- Mise à jour de
includeFontPadding
, désormais activé par défaut. Il est possible de désactiverincludeFontPadding
à l'aide de l'attributTextStyle.platformTextStyle
. Nous prévoyons de modifier le comportement par défaut dans un avenir proche. En attendant, cette approche nous permet de mieux intégrer les améliorations apportées à la hauteur de ligne (aosp/2058653) et de résoudre les problèmes de rognage deTextField
. (I01423, b/171394808)
Contribution externe
- Mise à jour de
MouseInjectionScope.scroll(delta = someDelta)
, désormais inversé sur Android lors du défilement vertical (si someDelta est positif, le défilement se fera vers le bas). (Ifb697, b/224992993)
Version 1.2.0-alpha08
20 avril 2022
Publication d'androidx.compose.ui:ui-*:1.2.0-alpha08
. Liste des commits de la version 1.2.0-alpha08
Modifications apportées à l'API
- Qualification des fonctions
pluralStringResource
comme expérimentales, pour permettre une meilleure internationalisation de leurs évolutions à venir. (If24e4) - Mise à jour de Paragraph et MultiParagraph, qui acceptent désormais le paramètre Constraints. La transmission de
Constraints.maxHeight
est une opération no-op pour le moment, mais elle permettra d'effectuer des calculs à l'avenir, comme tronquer un texte avec des points de suspension en fonction de la hauteur. (I6afee, b/168720622) - Mise à jour de
SubcomposeSlotReusePolicy.getSlotsToRetain()
, qui accepte désormais une classe personnalisée de type MutableSet n'autorisant pas l'ajout de nouveaux éléments. (Icd314) - Reclassement de PointerIcon, désormais une interface
@Stable
. (I9dafe) - Abandon de la consommation partielle (position OR vers le bas) dans
PointerInputChange
. Vous pouvez utiliserconsume()
pour consommer complètement le changement. Vous pouvez utiliserisConsumed
pour déterminer si le changement a déjà été consommé par un tiers. - Mise à jour de
PointerInputChange::copy()
, qui crée désormais toujours une copie superficielle. Autrement dit, les copies dePointerInputChange
seront consommées une fois que l'une des copies aura été consommée. Si vous souhaitez créer unPointerInputChange
non associé, utilisez plutôt le constructeur. (Ie6be4, b/225669674) - Prise en charge de l'interopérabilité de défilement imbriqué entre le système de vues et Compose dans la direction Compose > Vue. Cela signifie qu'un parent Compose pourra recevoir des deltas de défilement imbriqué à partir d'une vue de défilement imbriquée. (If7949, b/174348612)
- Ajout de
SemanticsProperty testTagsAsResourceId
, qui peut être utilisé pour rendre Compose conforme aux tests UIAutomator conçus pour le système de vues. (I39c20) - Prise en charge de toutes les épaisseurs de police système disponibles sur Android lors de l'utilisation de
FontFamily.SansSerif
. Des noms de police de remplacement tels que sans-serif-medium seront utilisés en interne sur les niveaux d'API 21 à 28. Il s'agit d'un changement de comportement, car seules les épaisseurs 400 et 700 étaient acceptées sur ces niveaux d'API. (I380fe, b/156048036, b/226441992) - Réorganisation des arguments de position, qui précèdent désormais les arguments facultatifs dans Paragraph et MultiParagraph. (Idafaa)
- Mise à jour de
AndroidFont
, qui utilise désormais typefaceLoader comme paramètre de constructeur. (I2c971)
Version 1.2.0-alpha07
6 avril 2022
Publication d'androidx.compose.ui:ui-*:1.2.0-alpha07
. Liste des commits de la version 1.2.0-alpha07
Modifications apportées à l'API
- Ajout d'une fonction
Snapshot.withoutReadObservation { ... }
. Elle permet aux utilisateurs d'exécuter le lambda transmis sans s'abonner aux modifications des valeurs d'état lues dans ce bloc. Cette fonction peut s'avérer utile lorsque vous souhaitez bénéficier de lectures/écritures thread-safe basées sur une capture instantanée tout en conservant la possibilité de lire la valeur sans provoquer de recomposition ni de nouvelles mesures inutiles. (I9f365, b/214054486) - Mise à jour de la propriété d'extension
consumeWindowInsets
deComposeView
, qui permet désormais aux développeurs de désactiver la consommation desWindowInsets
Android. ChaqueComposeViews
dans la hiérarchie peut ainsi appliquer desWindowInsets
sans interférer avec les autres. (I0ef08, b/220943142) - Ajout de
KeyboardType.Decimal
comme alternative àKeyboard.Number
pour inclure spécifiquement le séparateur décimal dans l'IME. (Iec4c8, b/209835363) - Reclassement de
PointerEventType.Scroll
etPointerEvent.scrollDelta
comme API stables. (I574c5, b/225669674) - Prise en charge de l'interopérabilité de défilement imbriqué entre le système de vues et Compose pour les classes de vues coopérantes. Compose peut désormais envoyer des deltas de défilement à une vue parente coopérante. (I5d1ac, b/174348612)
- Mise à jour de
FontFamily.Resolver
pour intégrer le paramètre d'accessibilité Texte en gras à l'échelle du système. (I6c1e7) - Abandon de
Font(AssetManager, String, ...)
, remplacé parFont(String, AssetManager, ...)
. Cette API est expérimentale. (I1c7a4) - Ajout d'un descripteur de police
Font(DeviceFontFamilyName)
afin de rechercher si besoin les polices installées par le système pour les chaînes de remplacement de police. (I30468, b/219754572) - Ajout d'une configuration de compatibilité temporaire pour
includeFontPadding
dans TextStyle/ParagraphStyle.includeFontPadding
peut être modifié viaTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. Cette option de configuration est temporaire. Elle a été ajoutée pour la migration et sera supprimée par la suite. (If47be, b/171394808) - Ajout de l'extension
GoogleFont.Provider.isAvailableOnDevice
pour l'aide au débogage. (I64e31) - Ajout d'un constructeur
GoogleFont.Provider
à utiliser avec@ArrayRes
. (Ic5ee1, b/225984280) - Changement de nom :
Compose GoogleFont
devientFont(GoogleFont)
. L'API reste stable. (I125f2)
Correction de bugs
- Ajout d'une vérification lint pour Material/Scaffold, afin de garantir l'utilisation de la marge intérieure. (Ifb111)
Version 1.2.0-alpha06
23 mars 2022
Publication d'androidx.compose.ui:ui-*:1.2.0-alpha06
. Liste des commits de la version 1.2.0-alpha06
Modifications apportées à l'API
- Ajout de l'action de sémantique
RequestFocus
permettant de positionner le curseur sur la cible sélectionnable. (I17b71) - Mise à jour de l'analyse des drawables vectoriels pour permettre la mise en miroir automatique afin d'inverser le contenu d'un
VectorPainter
si la mise en page actuelle se lit de droite à gauche. (I79cd9, b/185760237) Mise à jour des paramètres de couleurs d'ombre et d'ambiance, désormais paramètres de fin de
Modifier.graphicsLayer
, afin d'assurer la compatibilité avec les API. (I3f864, b/160665122)Ajout d'implémentations par défaut aux couleurs d'ombre et d'ambiance sur
GraphicsLayerScope
, pour prendre en charge d'éventuelles modifications ultérieures de l'API.Ajout d'un horodatage aux événements RSB. (Ief8ae)
Fusion de
FocusOrder
avecFocusProperties
.focusProperties()
présente désormais toutes les fonctionnalités defocusOrder()
. Abandon deFocusOrder
etfocusOrder()
. La méthodefocusOrder()
qui accepte unfocusRequester
doit être remplacée par un modificateurfocusRequester()
associé àfocusProperties()
. Cela permet aux modificateurs de mieux séparer les préoccupations. (I601b7)Amélioration des performances de défilement des vues RecyclerView avec des vues Compose en tant qu'enfants lorsque
RecyclerView
etCompose
sont mis à niveau.Ajout de
ViewCompositionStrategy.Default
comme moyen de récupérer la stratégie intégrée par défaut.Ajout de
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
comme nouvelle stratégie par défaut, qui gère correctement les conteneurs de pooling tels que RecyclerView. (If7282)Prise en charge de l'annotation des classes d'annotations avec @Preview. Il s'agit d'une première étape en vue de l'ajout de la fonctionnalité Multipreview. Ces annotations peuvent être utilisées pour annoter des méthodes composables ou d'autres classes d'annotation, qui peuvent alors être considérées comme indirectement annotées par la mention @Preview en question. (I12eff)
Ajout d'appareils de référence à la liste des appareils pour @Preview. (I071c9)
Correction de bugs
- Mise à jour des API Vector Graphics afin d'utiliser l'annotation composable appropriée @VectorComposable au lieu de @UiComposable. (I942bc)
- Suppression de la fonction crossinline de
AnnotatedString.Builder.withStyle
. (If84d5)
Contribution externe
- compose-ui : ajout des propriétés
ambientShadowColor
etspotShadowColor
àGraphicsLayerScope
. (I1ba1a, b/160665122) - Prise en charge des ressources plurielles via fonctions
pluralStringResource
. (Ib2f23, b/191375123)
Version 1.2.0-alpha05
9 mars 2022
Publication d'androidx.compose.ui:ui-*:1.2.0-alpha05
. Liste des commits de la version 1.2.0-alpha05
Modifications apportées à l'API
- Mise à jour de
TextToolbar
, qui accepte désormais les arguments lambda au lieu deActionCallback
. (Ib2eb9, b/197950089) - Mise à jour de la possibilité de valeur nulle dans Core et AppCompat pour correspondre à Tiramisu DP2. (I0cbb7)
- Mise à jour de l'interface mesurée afin d'exposer la propriété parentData. (I3313f)
- Mise à jour de
Modifier.onPlaced
et de l'interfaceOnPlacedModifier
, désormais considérés comme stables. (Ib5482) - Super ! Compose Animation est désormais compatible avec le paramètre de durée "Animator duration scale" des options pour les développeurs. (I5a4fc, b/161675988)
- Ajout d'un modificateur
BeyondBoundsLayout
local. (If8b51, b/184670295) - Texte : mise à jour de includeFontPadding, désormais désactivé par défaut. Correction des problèmes de rognage causés par
includeFontPadding=false
. Les scripts de grande taille ne devraient plus être rognés. (I31c84, b/171394808)
Correction de bugs
ComposeContentTestRule.setContent
génère désormais une exceptionIllegalStateException
si vous essayez de définir du contenu alors qu'il en existe déjà. (I888a5, b/199631334)- Correction du plantage causé par le contenu du presse-papiers lors de la lecture du presse-papiers sur Android. (I06020, b/197769306)
- Amélioration des échantillons de défilement RSB. (I6a596)
Contribution externe
- Mise à jour permettant d'utiliser les coroutines Kotlinx 1.6.0. (I3366d)
Version 1.2.0-alpha04
23 février 2022
Publication d'androidx.compose.ui:ui-*:1.2.0-alpha04
. Liste des commits de la version 1.2.0-alpha04
Modifications apportées à l'API
Ajout de
ComposableTarget
,ComposableTargetMarker
etComposableOpenTarget
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'un applicateur personnalisé, de fonctions modulables abstraites (telles que les méthodes d'interface), de champs ou de variables globales qui sont des lambdas modulables (les variables locales et les paramètres sont déduits), ou lorsque vous utilisez
ComposeNode
ou une fonction modulable associée.Pour les applicateurs personnalisés, les fonctions modulables qui appellent
ComposeNode
ouReusableComposeNode
doivent ajouter une annotationComposableTarget
pour la fonction et un type de paramètre lambda de composable. Il est toutefois recommandé de créer une annotation marquée avecComposableTargetMarker
, puis d'utiliser l'annotation marquée plutôt que d'utiliser directementComposableTarget
. Une annotation composable marquée avecComposableTargetMarker
équivaut à unComposbleTarget
avec le nom complet de la classe d'attribut en tant que paramètre d'applicateur. Pour obtenir un exemple d'utilisation deComposableTargetMarker
, reportez-vous àanroidx.compose.ui.UiComposable
. (I38f11)Mise à jour de
Font(resId, ...)
, qui utilise désormais loadStrategy sur une API stable. (Ief3d2)Reclassement de
FontLoadingStrategy
, désormais considérée comme une API stable. (I1ee35, b/174162090)Prise en charge du chargement asynchrone des polices dans Text. (I77057, b/214587005)
Ajout d'une API de jonction permettant de convertir un
Font.ResourceLoader
personnalisé enFontFamily.Resolver
. (Ia0060)
Correction de bugs
- Les valeurs
FontFamily.Resolver
fournies sont transmises à des sous-compositions telles que Popup. - Les valeurs
Font.ResourceLoader
fournies sont transmises à des sous-compositions telles que Popup. (I48fa5)
Version 1.2.0-alpha03
9 février 2022
Publication d'androidx.compose.ui:ui-*:1.2.0-alpha03
. Liste des commits de la version 1.2.0-alpha03
Modifications apportées à l'API
- Abandon des méthodes
notifyFocusedRect
dansTextInputSession
etTextInputService
. Ces méthodes ne seront pas appelées. UtilisezBringIntoViewRequester
à la place. (Ia4302, b/192043120, b/216842427, b/178211874) - Introduction de la méthode
destroyDisplayListData
sur la classe bouchonRenderNode
. (I1e659, b/216660268) - Ajout d'une API permettant de prémesurer les enfants de
SubcomposeLayout
que vous avez précomposés. (I857ea) Ajout de
movableContentOf
, qui convertit un lambda composable en lambda qui déplace son état et les nœuds correspondants vers tout nouvel emplacement où il est appelé. Lorsque l'appel précédent sort de la composition, l'état est temporairement conservé. Si un nouvel appel au lambda entre dans la composition, l'état et les nœuds associés sont déplacés vers l'emplacement du nouvel appel. Si aucun nouvel appel n'est ajouté, l'état est supprimé définitivement et les observateurs de mise en mémoire sont notifiés.Si un lambda
movableContentOf
est appelé plusieurs fois dans la même composition, un état et des nœuds sont créés pour chaque appel. L'état est ensuite déplacé lorsque les appels quittent la composition et que de nouveaux appels y sont ajoutés. L'état du premier appel sortant passe au premier appel entrant, et ainsi de suite, dans l'ordre d'appel. Tous les états non revendiqués par de nouveaux appels sont définitivement supprimés. (Ib4850)Mise à disposition de
FontFamilyResolver
viaLocalFontFamilyResolver.current
.Ajout de
createFontFamilyResolver(context)
etcreateFontFamilyResolver(context, coroutineScope)
afin de créer des résolveurs FontFamily en dehors de Compose.Mise à jour de Paragraph et MultiParagraph, qui acceptent désormais
FontFamily.Resolver
.Mise à jour de
TextLayoutResult.layoutInput.fontFamilyResolver
, qui contient désormais le résolveur utilisé pour cette mise en page.TextLayoutResult.layoutInput.resourceLoader
a été abandonné, car il n'est plus utilisé. (Id5a45, b/174162090)Prise en charge du chargement de polices asynchrone et facultatif, avec comportement de remplacement. Ce chemin est utilisé par Text et TextField, et exposé via FontFamilySolver.
Prise en charge du préchargement des polices via
FontFamilyResolver.preload
Ajout de
FontFamilyResolver.setAsyncLoadContext
, qui permet de définir le contexte de coroutine globale utilisé pour charger des polices asynchrones. (I87fe8, b/174162090)Ajout de
AndroidFont
, une nouvelle API de bas niveau permettant de fournir de nouveaux types de descripteurs de ressources de police sur Android. Par exemple, vous pouvez charger des polices à partir d'un backend propre à l'application, localiser éventuellement les polices préinstallées sur l'appareil ou charger une police à partir d'une ressource non fournie par les fabriques Font actuelles.Développement de l'API
Font.ResourceLoaded
, pour permettre le chargement de police asynchrone et facultatif. Il est déconseillé aux développeurs d'applications d'utiliser directement cette API. Pour ajouter des types de polices, reportez-vous àAndroidFont
.Prise en charge de la construction d'un
Font.ResourceLoader
en dehors de la composition via la fonction d'extensionFont.AndroidResourceLoader
.Ajout du paramètre
loadingStrategy
aux polices basées sur les ressources, afin de permettre un chargement asynchrone lorsque la police de la ressource fait référence à un fichier XML de polices téléchargeables. (Ie5aea, b/174162090)Abandon du constructeur
Typeface(FontFamily)
. Il était utilisé pour précharger les polices, ce qui pouvait prendre jusqu'à 10 secondes pour les polices téléchargeables. Avec les polices téléchargeables, cet appel peut être bloqué pendant 10 secondes. Utilisez plutôtFontFamilyResolver.preload
.Abandon de
fontResource(FontFamily): Typeface
. Il était utilisé pour précharger les polices, ce qui pouvait prendre jusqu'à 10 secondes pour les polices téléchargeables. Utilisez plutôtFontFamilyResolver.preload
. (If8e7c, b/174162090)Abandon du constructeur
SubcomposeLayoutState
, qui acceptaitmaxSlotsToRetainForReuse
. Il est remplacé par un nouveau constructeur, qui accepteSubcomposeSlotReusePolicy
, une nouvelle interface permettant un contrôle plus précis des emplacements à conserver pour une réutilisation ultérieure. (I52c4d)Exposition des fonctions HSV et HSL de
Color
en tant qu'API non expérimentale. L'espace colorimétrique Oklab est désormais une API publique. (I08fb6, b/180731008)Abandon de
AndroidComposeTestRule.AndroidComposeStatement
, qui n'apportait rien et n'était pas destiné à faire partie d'une API publique. (Ibc46b)Changement du nom de la classe kt interne générée. (Ia0b9e, b/174162090)
Suppression de
FontLoadingStrategy.values
. (I42a9d, b/174162090)Changement du nom : le chargeur de police devient
FontFamilyResolver
. (I4f773, b/174162090)Utilisez le nouveau système de chargement des polices sur ordinateur. (I9ce5c, b/174162090)
Mise à jour de
FontFamily.Resolver.resolve
, afin de renvoyerState<Any>
. (I4406c, b/174162090)
Correction de bugs
- Correction des champs de texte, qui restent désormais au-dessus du clavier lorsqu'ils sont sélectionnés et que le clavier s'affiche avec le mode de saisie
ADJUST_PAN
. (I8eaeb, b/190539358, b/192043120) - L'expérience pour ordinateur utilise la composition locale pour
FontFamily.Resolver
. - Abandon de
FontLoader
pour ordinateur. - Nouvelle fabrique
createFontFamilyResolver
sur ordinateur. (I6bbbb, b/174162090) - Correction du problème de clignotement du type de saisie au clavier virtuel, qui survenait lorsque l'utilisateur passait d'un champ de texte à un autre. (I1bf50, b/187746439)
Version 1.2.0-alpha02
26 janvier 2022
Publication d'androidx.compose.ui:ui-*:1.2.0-alpha02
. Liste des commits de la version 1.2.0-alpha02
Modifications apportées à l'API
- Ajout de
Modifier.onRotaryScrollEvent()
etModifier.onPreRotaryScrollEvent()
pour les appareils Wear avec bouton latéral rotatif. (I18bf5, b/210748686) - Ajout d'une extension
View.createLifecycleAwareRecomposer
expérimentale. (I0cde6)
Contribution externe
- Mise à jour de
PointerEvent.scrollDelta.y
, désormais inversé sur Android (affiche maintenant 1 au lieu de -1 si la molette de la souris est inclinée vers la droite). (Ia9811)
Version 1.2.0-alpha01
12 janvier 2022
Publication d'androidx.compose.ui:ui-*:1.2.0-alpha01
. Liste des commits de la version 1.2.0-alpha01
Modifications apportées à l'API
- Abandon de
FontFamily.canLoadSynchronously
. Cette propriété n'a pas d'incidence sémantique. (Ica5ef) - Ajout d'un champ d'identité à
CompositionData
pour générer des ID invariants dans l'outil d'inspection de la mise en page. (Ic116e) - Ajout des ID d'appareils Wear OS à la liste des appareils Preview. (I93232)
Mises à jour des dépendances
- Mise à jour des dépendances vers Kotlin
1.6.10
.
Version 1.1
Version 1.1.1
23 février 2022
Publication d'androidx.compose.ui:ui-*:1.1.1
. Liste des commits de la version 1.1.1
Correction de bugs
- Correction d'une exception
NullPointerException
dansandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
. (aosp/1947059, b/206677462) - Correction du plantage causé par le contenu du presse-papiers lors de la lecture du presse-papiers sur Android. (I06020, b/197769306)
- Résolution du problème de lecture de droite à gauche dans
LazyVerticalGrid
. (aosp/1931080, b/207510535)
Version 1.1.0
9 février 2022
Publication d'androidx.compose.ui:ui-*:1.1.0
. Liste des commits de la version 1.1.0
Modifications importantes depuis la version 1.0.0
- Stabilisation de la prise en charge de l'effet de défilement hors limites d'Android 12.
- Améliorations apportées au dimensionnement des zones cibles tactiles.
- Notez que, dans Compose 1.0, les composants Material développent leur espace de mise en page pour respecter les consignes d'accessibilité Material concernant la taille des zones cibles tactiles. Par exemple, la zone cible tactile minimale d'un bouton est de 48 × 48 dp, et sera étendue si le paramètre indique une dimension inférieure. Cela permet d'aligner la bibliothèque Compose Material sur le comportement des composants Material Design, pour plus de cohérence si vous combinez le système de vues et Compose. Cette modification garantit également que les conditions minimales requises pour l'accessibilité des zones cibles tactiles sont remplies lorsque vous créez votre UI à l'aide de composants Compose Material.
- Stabilisation de la prise en charge du rail de navigation.
- Reclassement d'un certain nombre d'API expérimentales en version stable.
- Prise en charge des nouvelles versions de Kotlin.
Version 1.1.0-rc03
26 janvier 2022
Publication d'androidx.compose.ui:ui-*:1.1.0-rc03
. Liste des commits de la version 1.1.0-rc03
Correction de bugs
- Mise à jour pour assurer la compatibilité avec Compose Material 1.1.0-rc03.
Version 1.1.0-rc01
15 décembre 2021
Publication d'androidx.compose.ui:ui-*:1.1.0-rc01
. Liste des commits de la version 1.1.0-rc01
Correction de bugs
- Correction d'un bug qui causait l'omission de certaines actions d'accessibilité liées au défilement. (I7cbfb)
- Mise à jour de
SemanticsNodeInteraction.captureToImage()
, qui fonctionnera désormais également siHardwareRenderer.isDrawingEnabled()
est défini surfalse
, en l'activant pour la durée de l'appel. (Idf3d0)
Version 1.1.0-beta04
1er décembre 2021
Publication d'androidx.compose.ui:ui-*:1.1.0-beta04
. Liste des commits de la version 1.1.0-beta04
Nouvelles fonctionnalités
- Mise à jour pour assurer la compatibilité avec Kotlin
1.6.0
.
Modifications apportées à l'API
- Correction de la possibilité de valeur nulle dans
androidx.core.view
. (I7078a, b/204917439) - Ajout d'API expérimentales permettant aux utilisateurs de consommer PointerInputchange entièrement et de vérifier s'il a été consommé. (I2e59d)
- Prise en charge des événements de molette de la souris dans la couche de l'interface utilisateur. (Ia14eb, b/198214718)
- Ajout de surcharges
Modifier.composed
expérimentales qui acceptent des clés à comparer pour établir des égalités et déterminer si des optimisations doivent être ignorées. (Ice799, b/205851704) - Mise à jour de
ComposeNotIdleException
, qui s'étend désormais à partir d'Exception
au lieu de s'étendre directement depuisThrowable
. Notez que cela signifie que les clauses catch qui interceptentException
peuvent désormais intercepter les fonctionsComposeNotIdleException
, ce qui n'était pas le cas auparavant. (I9c217)
Correction de bugs
- Correction des poignées de texte qui restaient fixes lorsque la visibilité IME changeait. (I25f2e)
Version 1.1.0-beta03
17 novembre 2021
Publication d'androidx.compose.ui:ui-*:1.1.0-beta03
. Liste des commits de la version 1.1.0-beta03
Modifications apportées à l'API
- Ajout d'un modificateur Modifier.onPlaced pour permettre l'observation de la modification de l'emplacement. Permet de procéder à des modifications supplémentaires du décalage du modificateur enfant en fonction du changement d'emplacement observé. (I558fd)
- Suppression de
InjectionScope.flush()
etInjectionScope.dispose()
. Le nettoyage de tous les événements et la suppression du champ d'application sont désormais effectués à la fin de la méthode perform*Input(), comme précédemment. (I2bed8) - Suppression de
MultiModalInjectionScope.Touch
etMultiModalInjectionScope.Mouse
. Pour injecter des événements tactiles et de souris pour les gestes multimodaux, vous pouvez maintenant utiliserMultiModalInjectionScope.touch()
etMultiModalInjectionScope.mouse()
, qui acceptent tous les deux un lambda avec le champ d'application receveur de cette modalité. (Idde18)
Correction de bugs
- Mise à jour de la valeur par défaut de
durationMillis
dansTouchInjectionScope.swipeWithVelocity
, désormais calculée de façon à permettre le balayage. (I19deb)
Version 1.1.0-beta02
3 novembre 2021
Publication d'androidx.compose.ui:ui-*:1.1.0-beta02
. Liste des commits de la version 1.1.0-beta02
Modifications apportées à l'API
- Ajout d'une API expérimentale BringIntoView, qui permet d'envoyer une demande aux parents afin qu'ils fassent défiler l'écran pour afficher un élément. (Ib918d, b/195353459)
- Ajout d'API d'animation pour la prise en charge des outils. Plus précisément, ces API permettent aux outils d'inspecter les animations et leurs configurations dans des transitions. (I4116e)
Contribution externe
- Ajout de Modifier.pointerHoverIcon. (I95f01)
Version 1.1.0-beta01
27 octobre 2021
Publication d'androidx.compose.ui:ui-*:1.1.0-beta01
. Liste des commits de la version 1.1.0-beta01
Modifications apportées à l'API
- Ajout d'une API expérimentale
BringIntoView
, qui permet d'envoyer une demande aux parents afin qu'ils fassent défiler l'écran pour afficher un élément. (Ib918d, b/195353459) - Ajout d'API d'animation pour la prise en charge des outils. Plus précisément, ces API permettent aux outils d'inspecter les animations et leurs configurations dans des transitions. (I4116e)
Version 1.1.0-alpha06
13 octobre 2021
Publication d'androidx.compose.ui:ui-*:1.1.0-alpha06
. Liste des commits de la version 1.1.0-alpha06
Modifications apportées à l'API
- Suppression de
ExperimentalComposeUiApi
deViewRootForInspector
etLayoutInfo.ownerViewId
. (I5c2e3) - Ajout d'une surcharge sans enfant pour Layout, pour gagner en efficacité. (Ib0d9a)
- Suppression de
InternalCompilerApi
des méthodes Composer devant être appelées entre les modules. (I1aa0b) - Mise à jour de
SemanticsNodeInteraction.performSemanticsAction
, qui renvoie désormais laSemanticsNodeInteraction
sur laquelle la fonction a été appelée. (I9e5db) - Ajout de LocalInputModeManager CompositionLocal pour détecter TouchMode/NonTouchMode. (I6a83c, b/175899786)
- Ajout de
viewConfiguration: ViewConfiguration
àLayoutInfo
pour permettre aux consommateurs d'obtenir la bonne valeur dans des cas tels que l'expiration des appuis prolongés. (I76ca6)- Ajout de
viewConfiguration: ViewConfiguration
àInjectionScope
pour permettre aux tests d'ajuster l'injection d'entrées en fonction d'éléments tels que l'expiration des appuis prolongés ou la pente tactile. - Modification de la durée par défaut de l'appui prolongé et du double appui pour baser l'entrée tactile/de la souris sur les valeurs de
InjectionScope.viewConfiguration
.
- Ajout de
- Implémentation de ExposedDropdownMenu, basé sur ExposedDropdownMenuBox avec TextField et DropdownMenu à l'intérieur. (If60b2)
- Ajout de dismissOnOutsideClick aux PopupProperties, pour remplacer dismissOnClickOutside, désormais obsolète. La nouvelle propriété reçoit la position du clic et les limites de l'ancrage, ce qui permet de contrôler plus précisément si onDismissRequest doit être appelé ou non. Par exemple, cela peut être utile pour éviter que des touches dans l'ancrage soient ignorées.
- Ajout de updateAndroidWindowManagerFlags aux PopupProperties, permettant de contrôler à bas niveau les indicateurs transmis par le pop-up à Android WindowManager. Les indicateurs calculés à partir des valeurs PopupProperties, qui génèrent des indicateurs WindowManager tels que "focusable", serviront de paramètre au lambda. Le résultat du lambda sera les indicateurs finaux qui seront transmis à Android WindowManager. Par défaut, updateAndroidWindowManagerFlags ne modifie pas les indicateurs calculés à partir des paramètres. Utilisez cette API avec précaution, uniquement si votre pop-up doit répondre à des exigences de comportement très spécifiques. (I6e9f9)
- Abandon de
Recomposer.state
, remplacé parRecomposer.currentState
afin de lui attribuer le type StateFlow. (Ic2ab3, b/197773820) - Ajout de
flush()
etdispose()
àInjectionScope
. Utilisez ces options lorsque vous souhaitez vider immédiatement tous les événements mis en file d'attente ou lorsque vous souhaitez supprimer le champ d'application. (Ifb73a) - Ajout de
performScrollToNode(matcher: SemanticsMatcher)
, qui fait défiler un conteneur déroulant jusqu'au contenu désigné par l'élément de mise en correspondance donné. (Ic1cb8) - Mise à jour de
InjectionScope
, qui implémente désormaisDensity
, ce qui vous permet de convertir facilement des pixels px en dp dansperformTouchInput
et similaires. (I8fe1f)
Correction de bugs
- Mise à jour d'AndroidView, qui propage désormais les propriétés LocalLifecycleOwner et LocalSavedStateRegistryOwner dans sa vue via ViewTreeLifecycleOwner et ViewTreeSavedStateRegistryOwner. (I38f96, b/179708470)
- Correction du problème de balayages ignorés par la SwipeToDismissBox de Wear OS. (I9387e)
- Mise à jour du délai par défaut entre les injections d'événements d'entrée, qui passe de 10 ms à 16 ms. Ce changement peut affecter le résultat des tests qui impliquent des gestes d'entrée, comme un balayage spécifique. (I829fd)
Version 1.1.0-alpha05
29 septembre 2021
Publication d'androidx.compose.ui:ui-*:1.1.0-alpha05
. Liste des commits de la version 1.1.0-alpha05
Modifications apportées à l'API
- Prise en charge de la communication inter-modificateurs. (Id5467, b/198826874)
- Ajout de pointeurs historiques expérimentaux à PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
- Ajout de
density: Density
etlayoutDirection: LayoutDirection
àLayoutInfo
. Cela permet aux consommateurs deLayoutInfo
d'interpréter correctement les dimensions et la position exposées dansLayoutInfo
. (I002f1) - Prise en charge expérimentale de l'injection d'événements de souris. Utilisez
performMouseInput
pour commencer à envoyer des événements de souris, ou envoyez des événements de souris via la propriétéMouse
deMultiModalInjectionScope
lors d'un geste d'entrée multimodal avecperformMultiModalInput
. Reportez-vous àMouseInjectionScope
pour obtenir de la documentation sur l'API disponible. (Iaa4a8, b/190493367)
Correction de bugs
- Correction de la prise en charge de l'accessibilité concernant le défilement dans les éléments applicables (Lazy ou non). (I6cdb0)
- Amélioration de
TouchInjectionScope.swipeWithVelocity
, qui accepte maintenant une plage de variables d'entrée plus étendue et suggère des modifications pour l'entrée si un balayage ne peut pas être créé. (I40fbe, b/182477143)
Version 1.1.0-alpha04
15 septembre 2021
Publication d'androidx.compose.ui:ui-*:1.1.0-alpha04
. Liste des commits de la version 1.1.0-alpha04
Modifications apportées à l'API
- Ajout de
PointerEventType
àPointerEvent
pour gérer les événements de pointage. (I091fa) - Prise en charge du traitement par les enfants d'entrées de pointeur en dehors des limites d'entrée du parent, qui peut intercepter ces appels avec une propriété PointerInputScope.alwaysInterceptChildEvents. (I9eae3, b/192479655)
- Abandon de
performGesture
etGestureScope
, remplacés parperformTouchInput
etTouchInjectionScope
. (Ia5f3f, b/190493367) - Ajout de
touchBoundsInRoot
àSemanticsNode
, qui inclut la taille minimale des zones cibles tactiles afin que les développeurs puissent s'assurer que ces dernières respectent les valeurs minimales d'accessibilité. (I2e14b, b/197751214) - Réfection de la mise en œuvre des éléments inspectables. (I927bc, b/191017532)
- Modification du nom de paramètre de l'élément inspectable pour correspondre à la valeur composée. (I3a482, b/191017532)
Introduction de
performTouchInput
etTouchInjectionScope
pour remplacerperformTouchInput
etTouchInjectionScope
, ouvrant ainsi la voie à d'autres modalités (comme la souris).TouchInjectionScope
utilise les mêmes méthodes queGestureScope
, à l'exception demovePointerTo
etmovePointerBy
, qui ont été renommésupdatePointerTo
etupdatePointerBy
. Toutes les autres méthodes sont identiques.Le comportement de
TouchInjectionScope
est presque identique àGestureScope
, à deux petits détails près :- Lors de l'envoi d'un événement "vers le bas" alors que les pointeurs ont été déplacés sans envoi d'un événement de déplacement (en d'autres termes,
updatePointerTo()
a été utilisé, mais pasmove()
, puisdown()
est appelé), l'implémentation précédente antidate l'événement et envoie un événement de déplacement avant d'envoyer l'événement "vers le bas". La nouvelle mise en œuvre envoie toujours l'événement de déplacement, mais n'antidate pas l'événement dans ce scénario spécifique. - Lors de l'envoi d'un événement "vers le haut" alors que les pointeurs avaient été déplacés sans envoyer d'événement de déplacement (comme ci-dessus), l'implémentation précédente antidatait l'heure de l'événement et envoyait un événement de déplacement d'envoyer l'événement "vers le haut". La nouvelle implémentation ne fait ni l'un ni l'autre : les nouvelles positions des pointeurs seront uniquement reflétées via l'événement "vers le haut".
Introduction
TouchInjectionScope
d'une nouvelle méthodecurrentPosition(pointerId: Int)
pour obtenir la position actuelle du pointeur. (If1191, b/190493367)- Lors de l'envoi d'un événement "vers le bas" alors que les pointeurs ont été déplacés sans envoi d'un événement de déplacement (en d'autres termes,
Correction de bugs
- Prise en charge de l'extension des limites de la zone cible tactile au-delà de la zone de bornement pour satisfaire aux exigences de dimensions minimales des zones cibles tactiles. (I43e10, b/171509422)
- Prise en charge du défilement hors limite sur les appareils Android 12. (Iccf3c, b/171682480)
Version 1.1.0-alpha03
1er septembre 2021
Publication d'androidx.compose.ui:ui-*:1.1.0-alpha03
. Liste des commits de la version 1.1.0-alpha03
Nouvelles fonctionnalités
- Mise à jour des dépendances Compose
1.1.0-alpha03
vers Kotlin1.5.30
. (I74545)
Modifications apportées à l'API
- Ajout de
Modifier.inspectable
pour encapsuler d'autres modificateurs. (I1909b, b/191017532) - Ajout de l'API
BlurredEdgeTreatment
pour simplifier les cas d'utilisation du floutage en créant des combinaisons des indicateurs de bornement et TileModes les plus communément utilisés. La plupart des cas d'utilisation impliquent de laisser s'effectuer le rendu du contenu flouté en dehors des limites du contenu d'origine, et de flouter les régions en dehors de ces limites avec du noir transparent, ou de rogner le contenu jusqu'aux limites en échantillonnant le bord le plus proche pour le floutage de blocs dépassant les limites du contenu. (I6b4b7, b/166927547) - Prise en charge de RenderEffect dans la version ordinateur de Compose. Introduction d'OffsetEffect ainsi que du modificateur de flou pour introduire des effets visuels de floutage dans une partie de la hiérarchie de la composition. (I0f6aa, b/166927547)
- Introduction de l'API RenderEffect, qui peut être configurée sur une
Modifier.graphicsLayer
pour modifier le contenu de la couche elle-même. Cette option permet de flouter le contenu d'un composable et de ses composables enfants dans une hiérarchie de composition. (I47c4d, b/166927547) - Mise à jour d'AwaitPointerEventScope, qui dispose désormais de withTimeout() et withTimeoutOrNull(). (I507f0, b/179239764, b/182397793)
- Ajout d'une taille minimale aux zones cibles tactiles dans ViewConfiguration, pour garantir l'accessibilité lorsque des entrées pointeur ou sémantiques sont utilisées. (Ie861c)
- Prise en charge de TileMode.Decal, utile pour définir le comportement en périphérie des RenderEffects basés sur le floutage. (I7e8ed, b/166927547)
- Reclassement de
performScrollToIndex
,performScrollToKey
,hasScrollToIndexAction
ethasScrollToKeyAction
, désormais considérées comme des API stables. (I142ae, b/178483889) - Ajout d'une méthode de test pour obtenir les limites rognées. (I6b28e)
Correction de bugs
- Suppression de la méthode isBounded de BlurredEdgeTreatment, au profit de la vérification explicite du caractère nul du paramètre de forme. (I85d68)
Version 1.1.0-alpha02
18 août 2021
Publication d'androidx.compose.ui:ui-*:1.1.0-alpha02
. Liste des commits de la version 1.1.0-alpha02
Modifications apportées à l'API
- Prise en charge par PointerEvent de la lecture de l'état des boutons de la souris et des modificateurs de clavier. (I6310c, b/180075467)
- Mise à jour des gestes injectés, qui utilisent désormais l'heure de MainTestClock comme référence horaire. L'heure considérée par les événements injectés dans
performGesture
sera initialisée sur l'heure actuelle de MainTestClock. (Ifb364, b/192064452) - Ajout du constructeur
DpRect(DpOffset, DpSize)
. (I2cf16, b/194219828) - Ajout de la classe DpSize. (I7abb1, b/194219828)
Correction de bugs
- Mise à jour de l'analyse XML des graphiques vectoriels pour prendre en charge ColorStateList en tant que propriété de teinte racine pour les drawables vectoriels. (I86915, b/195668138)
Version 1.1.0-alpha01
4 août 2021
Publication d'androidx.compose.ui:ui-*:1.1.0-alpha01
. Liste des commits de la version 1.1.0-alpha01
Modifications apportées à l'API
- Mise à jour de
RelocationRequester.bringIntoView
, qui accepte désormais un rectangle comme paramètre, permettant d'afficher une partie d'un composable dans une vue. (Ice2c5, b/194330245) - Déplacement de
AnimatedImageVector
et des API associées vers le nouveau moduleandroidx.compose.animation:animation-graphics
. (I60873) - Ajout d'un modificateur expérimental pour gérer les demandes de repositionnement. (I65a97, b/178211874)
Introduction de l'API BrushPainter permettant l'affichage d'un pinceau arbitraire dans un Painter semblable à ColorPainter.
Mise à jour de l'API Brush pour définir un paramètre de taille intrinsèque interrogé dans BrushPainter. (Ia2752, b/189466433)
Mise à jour de la méthode DrawScope#drawImage, qui consomme désormais les rectangles source et de destination pour consommer un paramètre filterQuality facultatif. Cette méthode est utile pour afficher les éléments de style pixel art, conçus pour paraître pixélisés lorsqu'ils sont agrandis. Mise à jour du composable BitmapPainter + Image, afin d'utiliser également un paramètre FilterQuality facultatif. (Ie4fb0, b/180311607)
Ajout de la méthode
GestureScope.advanceEventTime
pour mieux contrôler la chronologie des événements dans un geste. (Ibf3e2)
Correction de bugs
- Pour mieux prendre en charge le chaînage de modificateurs de dessin, assurez-vous que votre implémentation de Modifier.paint appelle drawsContent.
Auparavant, Modifier.paint était attendu dans un nœud externe (leaf) de la chaîne de modificateurs. Cette approche l'empêchait d'être configuré sur un conteneur composable (par exemple, une boîte) ou d'ajouter des décorations par-dessus (par exemple,
Modifier.paint().border()
). Faire en sorte que Modifier.paint appelle drawContent après avoir tracé le contenu du Painter donné permet d'obtenir une meilleure cohérence de comportement avec le modèle de modificateur. (Ibb2a7, b/178201337, b/186213275) - Mise à jour des boîtes de dialogue, qui suivent désormais le comportement de dimensionnement de plate-forme. Définissez
usePlatformDefaultWidth
sur "false" pour désactiver ce comportement. (Iffaed, b/192682388) - Déplacement de
InfiniteAnimationPolicy
vers :compose:ui. (I5eb09, b/160602714) - Ajout d'animations pour le défilement à l'aide d'actions sémantiques pour les listes Lazy et les composants à défilement standard. (Id9066, b/190742024)
Version 1.0
Version 1.0.5
3 novembre 2021
Publication d'androidx.compose.ui:ui-*:1.0.5
. Liste des commits de la version 1.0.5
Correction de bugs
- Correction d'un plantage lié au suivi des instances de derivedStateOf. (aosp/1792247)
Version 1.0.4
13 octobre 2021
Publication d'androidx.compose.ui:ui-*:1.0.4
. Liste des commits de la version 1.0.4
Mises à jour des dépendances
- Mise à jour des dépendances vers Kotlin
1.5.31
Version 1.0.3
29 septembre 2021
Publication d'androidx.compose.ui:ui-*:1.0.3
. Liste des commits de la version 1.0.3
Mises à jour des dépendances
- Mise à jour des dépendances vers Kotlin
1.5.30
Version 1.0.2
1er septembre 2021
Publication d'androidx.compose.ui:ui-*:1.0.2
. Liste des commits de la version 1.0.2
Mise à jour pour prendre en charge la version 1.0.2
de Compose. Compose 1.0.2
reste compatible avec Kotlin 1.5.21
.
Version 1.0.1
4 août 2021
Publication d'androidx.compose.ui:ui-*:1.0.1
. Liste des commits de la version 1.0.1
Mises à jour des dépendances
- Mise à jour des dépendances vers Kotlin
1.5.21
Version 1.0.0
28 juillet 2021
Publication d'androidx.compose.ui:ui-*:1.0.0
. Liste des commits de la version 1.0.0
Principales fonctionnalités de la version 1.0.0
Première version stable de Compose. Pour en savoir plus, consultez le blog officiel des publications de Compose.
Problèmes connus
Si vous utilisez Android Studio Bumblebee Canary 4 ou AGP
7.1.0-alpha04
/7.1.0-alpha05
, vous risquez de rencontrer le plantage suivant :java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Pour résoudre ce problème, augmentez temporairement la valeur minSdkVersion à 24 ou au-delà dans votre fichier
build.gradle
. Ce problème sera résolu dans la prochaine version d'Android Studio Bumblebee et AGP7.1
. (b/194289155)
Version 1.0.0-rc02
14 juillet 2021
Publication d'androidx.compose.ui:ui-*:1.0.0-rc02
. Liste des commits de la version 1.0.0-rc02
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.ui:ui-*:1.0.0-rc01
. Liste des commits de la version 1.0.0-rc01
Nouvelles fonctionnalités
- Division du module ui-tooling dans
ui-tooling
etui-tooling-preview
. (Iefa28, b/190649014)
Modifications apportées à l'API
- Suppression des fonctionnalités expérimentales
FocusManager#moveFocusIn
etFocusManager#moveFocusOut
, devenues obsolètes. (I227d7, b/170154986, b/186567354, b/168510304) - Prise en charge par Canvas d'un paramètre contentDescription pour l'accessibilité. (Ib547c)
- Changement de nom : dans
PopupProperties
,useDefaultMaxWidth
devientusePlatformDefaultWidth
. (I05710) - Mise à jour des boîtes de dialogue, qui peuvent désormais utiliser toute la largeur de l'écran. (I83929, b/190810877)
- Prise en charge expérimentale pour les représentations de couleurs HSV et HSL. (Id7cf8, b/180731008)
Nouveaux comportements
- Compose
@Preview
fournit maintenant unLocalActivityResultRegistryOwner
, qui permet de prévisualiser les composables utilisant des API telles querememberLauncherForActivityResult()
qui dépendent de ce propriétaire. (Ib13d1, b/185693006) - Compose
@Preview
fournit maintenant unLocalOnBackPressedDispatcherOwner
, qui permet de prévisualiser les composables utilisant des API telles queBackHandler
qui dépendent de ce propriétaire. (Ia1c05, b/185693006)
Correction de bugs
- Déplacement de
InfiniteAnimationPolicy
versandroidx.compose.ui:ui
. (I5eb09, b/160602714) - Suppression temporaire de AnimatedImageVector, pour permettre de modifier la structure du module. (I41906, b/160602714)
Version 1.0.0-beta09
16 juin 2021
Publication d'androidx.compose.ui:ui-*:1.0.0-beta09
. Liste des commits de la version 1.0.0-beta09
Modifications apportées à l'API
- Conversion des énumérations Role et LiveRegionMode en classes inline avec un constructeur privé. (Id1890)
- Conversion de KeyboardCapitalization en classe inline. (Id5a1c)
- Conversion de HapticFeedbackType en classe inline. (I255ec)
- Marquage de Modifier.pointerInteropFilter comme @ExperimentalComposeUiApi. (Iede6c)
- Conversion de TextAlign, FontSynthesis et TextDirection en classes inline. (I212fe)
- Conversion de TextOverflow en classe inline. (I433af)
- Conversion de FontStyle en classe inline. (I9e48b)
Correction de bugs
- Marquage temporaire des constantes clés comme @ExperimentComposeUiApi. La consommation de code peut déclarer des constantes privées avant la stabilisation. (Ia5d48)
- Mise à jour des tests Compose, qui peuvent désormais être exécutés sur Robolectric. Les limites suivantes ont été identifiées :
- En l'absence de bitmap natif,
ImageBitmap()
conduit à une exception NullPointerException. - Comme il n'y a pas de dessin,
captureToImage()
attendra indéfiniment la prochaine transmission (interblocage). - Aucune police n'est chargée, ce qui empêche le texte d'être mesuré correctement. Tous les caractères ont une hauteur fixe d'environ 20 px pour une largeur de 1 px.
ComposeTestRule.waitUntil {}
n'exécute pas le thread principal pendant l'attente, ce qui le rend identique àComposeTestRule.mainClock.advanceTimeUntil {}
. D'autres limites devraient être identifiées à l'avenir. (I284fa)
- En l'absence de bitmap natif,
Nouvelles règles de profil
Cette version ajoute des règles de profil aux modules de composition suivants. (I14ed6)
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Que sont les règles de profil ?
Les règles de profil d'une bibliothèque sont spécifiées dans un fichier texte
baseline-prof.txt
, situé dans le répertoiresrc/main
ou un répertoire équivalent. Le fichier spécifie une règle par ligne. Dans ce cas, une règle correspond à un modèle mis en correspondance avec des méthodes ou des classes de la bibliothèque. La syntaxe de ces règles correspond à un sur-ensemble du format de profil ART intelligible, utilisé conjointement àadb shell profman --dump-classes-and-methods ...
. Ces règles prennent l'une des deux formes suivantes pour cibler des méthodes ou des classes.Une règle de méthode adoptera le format suivant :
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Une règle de classe adoptera le format suivant :
<CLASS_DESCRIPTOR>
Dans le cas présent,
<FLAGS>
désigne un ou plusieurs des caractèresH
,S
etP
et indique si cette méthode doit être signalée comme "Hot", "Startup" ou "Post Startup".<CLASS_DESCRIPTOR>
est le descripteur de la classe à laquelle appartient la méthode ciblée. Par exemple, la classeandroidx.compose.runtime.SlotTable
aurait comme descripteurLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
est la signature de la méthode, et inclut le nom, les types de paramètres et les types renvoyés de la méthode. Par exemple, la méthodefun isPlaced(): Boolean
surLayoutNode
aurait pour signatureisPlaced()Z
.Ces modèles peuvent comporter des caractères génériques (
**
,*
et?
) pour qu'une même règle affecte plusieurs méthodes ou classes.
Quel effet ont ces règles ?
Une méthode associée à l'indicateur
H
signale qu'il s'agit d'une méthode "hot" qui doit être compilée à l'avance.Une méthode associée à l'indicateur
S
signale qu'il s'agit d'une méthode appelée au démarrage, qui doit être compilée à l'avance pour éviter les coûts de compilation et d'interprétation de la méthode lors du démarrage.Une méthode associée à l'indicateur
P
signale qu'il s'agit d'une méthode appelée après le démarrage.La présence d'une classe dans ce fichier indique qu'elle est utilisée au démarrage et doit être préallouée dans le tas de mémoire pour éviter son coût de chargement.
Comment ça marche ?
- Les bibliothèques peuvent définir ces règles, qui seront packagées dans des artefacts AAR. Lorsqu'une application contenant ces artefacts est créée, ces règles sont fusionnées puis utilisées pour créer un profil ART binaire compact spécifique à l'application. ART peut ensuite exploiter ce profil lorsque l'application est installée sur des appareils, afin de compiler à l'avance un sous-ensemble spécifique de l'application, ce qui permet d'améliorer ses performances, notamment lors de la première exécution. Notez que cette opération n'a aucune incidence sur les applications débogables.
Version 1.0.0-beta08
2 juin 2021
Publication d'androidx.compose.ui:ui-*:1.0.0-beta08
. Liste des commits de la version 1.0.0-beta08
Modifications apportées à l'API
- Remplacement de l'énumération
NestedScrollSource
par une classe inline. (Ie321b, b/187055290) - Changement de nom :
FocusManager.clearFocus(forcedClear = true)
devientFocusManager.clearFocus(force = true)
. (Ia0c41) - Refactorisation des utilisations d'énumération en classes inline pour éviter les problèmes avec les instructions "when" exhaustives lorsque de nouvelles valeurs d'énumération sont ajoutées. (I2b5eb)
- Suppression de
@ExperimentalComposeUiApi
dePopupProperties
. (I01fa6) - Conversion de l'énumération
PointerType
en classe inline. (If5058) - Conversion en listes des propriétés sémantiques ContentDescription et Text (précédemment, des valeurs uniques). Cela permet de les fusionner telles quelles au lieu de les concaténer. Les API de test ont été améliorées pour tirer parti de ces modifications. (Ica6bf, b/184825850)
- Abandon de
Modifier.focusModifier()
, remplacé parModifier.focusTarget()
. (I6c860) - Reclassement de
Modifier.onSizeChanged()
etModifier.onGloballyPositioned()
, qui ne sont désormais plus des fonctions inline. (I727f6, b/186109675) - Remplacement de l'énumération
KeyboardType
par une classe inline. (I73045, b/187055290) - Remplacement de l'énumération
FocusState
par une interfaceFocusState
. (Iccc1a, b/187055290) - Remplacement de l'énumération ImeAction par une classe inline. (I18be5, b/187055290)
- Conversion de
PlaceholderVerticalAlign
en classe inline. (If6290) - Conversion de TextUnitType en classe inline. (I4cba9)
- Rattachement des fonctions
AnnotatedString.withAnnotation
à ExperimentalTextApi (au lieu de ExperimentalComposeApi). (I0cd0a)- Rattachement du constructeur TextUnit avec TextUnitType à ExperimentTextApi (au lieu de ExperimentComposeApi).
Correction de bugs
- Correction d'un bug introduit en version beta07, à cause duquel les éléments LazyColumn/Row étaient affichés partiellement après le défilement. (I8c9ac, b/188566058)
- Mise à jour de
detectDragGesures
,detectVerticalGestures
etdetectHorizontalGestures
, qui consommeront désormais automatiquement le changement de position, sans avoir à appeler change.consumePositionChange dans les rappels onDrag. (I42fc4, b/185096350, b/187320697) - Correction du problème avec LayoutModifiers, qui fournissait des lignes d'alignement. Un autre bug, qui empêchait la mesure des éléments parents lors de la modification des lignes d'alignement des éléments enfants, a aussi été corrigé. (I4401f, b/174315652)
- Modification de
Modifier.onGloballyPositioned()
, afin de rapporter les coordonnées de ce modificateur dans la chaîne de modificateurs, plutôt que les coordonnées de la mise en page après application de tous les modificateurs. Cela signifie que l'ordre des modificateurs a désormais une incidence sur les coordonnées rapportées. (Ieb67d, b/177926591)
Version 1.0.0-beta07
18 mai 2021
Publication d'androidx.compose.ui:ui-*:1.0.0-beta07
. Liste des commits de la version 1.0.0-beta07
Modifications apportées à l'API
- Ajout de l'interface
ViewRootForInspector
, à utiliser dans l'outil d'inspection. (Ib70df) - Prise en charge par
SubcomposeLayoutState
de la définition du nombre d'emplacements réutilisables. La mise en page conservera jusqu'à ce nombre d'emplacements actifs au lieu de les supprimer, pour pouvoir les réutiliser la prochaine fois qu'un emplacement est nécessaire. (Ieb981) - Remplacement de l'énumération KeyEventType par une classe inline. (Id670a, b/187055290)
- Remplacement de l'énumération
FocusDirection
par une classe inline. (Ib6d03, b/187055290, b/184086802) - Introduction de la possibilité de hisser l'état de SubcomposeLayout, ce qui permet de précomposer le contenu dans un slotId obligatoire, permettant de transmettre la mesure suivante plus rapidement, car les prochaines sous-compositions de ce même slotId ne nécessiteront aucune composition. (I42580, b/184940225)
- Ajout d'une poignée de sélection des bornements. (Iff80d, b/183408447)
- Suppression des API inutilisées associées à la prise en charge du LayoutInspector. (I2ac78)
Correction de bugs
- Mise à jour de LazyColumn/Row, qui conserve désormais jusqu'à deux éléments visibles précédemment actifs (non supprimés), même si ces éléments sont déjà hors écran suite au défilement. Cela permet au composant de réutiliser les sous-compositions actives lorsqu'un nouvel élément doit être composé, ce qui améliore les performances de défilement. (Ie5555)
- Mise à jour de
TextGeomerticTransform
etTextDecoration
surAnnotatedString
, qui seront appliqués comme fournis. (I61900, b/184760917)
Version 1.0.0-beta06
5 mai 2021
Publication d'androidx.compose.ui:ui-*:1.0.0-beta06
. Liste des commits de la version 1.0.0-beta06
Modifications apportées à l'API
- Résolution du conflit avec les gestes de navigation. (I1145e)
- Mise à jour de
@ComposeCompilerApi
, qui n'est plus@RequiresOptIn
. (Iab690) - Ajout des API d'accessibilité CollectionInfo et CollectionItemInfo, qui permettent de marquer la collection et ses éléments pour les services d'accessibilité. (Id54ef, b/180479017)
- Ajout de
SemanticsActions.ScrollToIndex
pour faire défiler une liste d'éléments indexés jusqu'à l'élément ayant un certain point de l'index, et deSemanticsProperties.IndexForKey
pour obtenir la référence d'indexation d'un élément donné dans une liste d'éléments appariés. Ces deux actions sont implémentées par LazyList.- Ajout de
SemanticsNodeInteraction.performScrollToIndex
, qui fait défiler une liste jusqu'au point d'index donné, et deSemanticsNodeInteraction.performScrollToKey
, qui fait défiler une liste jusqu'à l'élément associé à la clé donnée. (I4fe63, b/178483889, b/161584524)
- Ajout de
- Ajout de ownerViewId à GraphicLayerInfo. (I19f62)
- Ajout de la surcharge Font() pour charger les polices à partir des éléments, File et FileDescriptor. (I5d382)
- Ajout d'une
error
d'API d'accessibilité qui signale un nœud contenant une entrée non valide. (I12997, b/180584804, b/182142737) - Ajout des surcharges
Font()
pour charger les polices à partir des éléments, File et FileDescriptor. (I43007) - Prise en charge de l'enregistrement de AnnotatedString dans
TextFieldValue.Saver
. Ajout des fonctions utilitairesaddTtsAnnotation
et withAnnotation àAnnotatedString.Builder
. (I8cbdc, b/178446304) - Ajout de la fonction de constructeur TextUnit
TextUnit(value: Float, type: TextUnitType)
. (I7ecce, b/178446304)
Version 1.0.0-beta05
21 avril 2021
Publication d'androidx.compose.ui:ui-*:1.0.0-beta05
. Liste des commits de la version 1.0.0-beta05
Modifications apportées à l'API
- Ajout des fonctionnalités expérimentales
FocusManager.moveFocus(In)
etFocusManager.moveFocus(Out)
. (Ic5534, b/183746743) - Ajout de l'API expérimentale
performTextInputSelection
. (I2dcbb, b/178510628) - Abandon de l'interface
InputEventCallback
. L'interface n'était pas disponible dans les API publiques et n'était pas utilisée dans le code. (I34a02, b/184003208) - Abandon de la fonction
TextLayoutResult/createTextLayoutResult
. Cette fonction publique n'était pas utilisée et avait été ajoutée à des fins de test. Cette fonction n'est pas applicable dans les API textuelles de Compose. La fonction est désormais obsolète et sera supprimée ultérieurement. (I80413)
Correction de bugs
- Correction des actions de défilement accessible
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
etaccessibilityActionScrollDown
. Au lieu de faire défiler l'écran jusqu'à la fin de l'élément déroulant, le défilement s'effectue désormais écran par écran dans la direction donnée. (Ieccb0) - Prise en charge dans Android 12 des fichiers AndroidManifest provenant de ui-test-manifest et de ui-tooling-data. (I6f9de, b/184718994)
Version 1.0.0-beta04
7 avril 2021
Publication d'androidx.compose.ui:ui-*:1.0.0-beta04
. Liste des commits de la version 1.0.0-beta04
Modifications apportées à l'API
- Changement de nom : dans
SoftwareKeyboardController
,hideSoftwareKeyboard
devienthide()
etshowSoftwareKeyboard
devientshow()
.- Mise à disposition de l'interface CompositionLocal complète pour LocalSoftwareKeyboardController, permettant de la définir (particulièrement utile pour les tests). (I579a6)
- Ajout de l'API d'accessibilité LiveRegion. Si le nœud est marqué comme zone live, les services d'accessibilité en informeront automatiquement l'utilisateur. (Idcf6f, b/172590946)
- Ajout de TextOverflow.Visible. (Ic8f89)
Correction de bugs
- Correction du problème de mauvais positionnement des éléments de
LazyColumn
/LazyRow
situés sur les bords, qui survenait après un balayage trop rapide. (Ie4d13, b/183877420) - Mise à jour de
AndroidViewBinding
, qui supprime désormais correctement les fragments gonflés viaFragmentContainerView
lorsqueAndroidViewBinding
est supprimé de la hiérarchie Compose. (Ib0248, b/179915946) - Mise à jour de
AndroidViewBinding
, qui imbrique désormais correctement les fragments gonflés viaFragmentContainerView
lorsque votreComposeView
se trouve dans unFragment
, ce qui résout les problèmes d'enregistrement et de restauration de l'état de ces fragments. (I70eb0, b/179915946) - Mise à jour de Compose ViewBinding, qui dépend désormais de Fragment
1.3.2
et affiche de manière cohérente les fragments gonflés viaFragmentContainerView
après une modification de la configuration. (I0743d, b/179915946)
Version 1.0.0-beta03
24 mars 2021
Publication d'androidx.compose.ui:ui-*:1.0.0-beta03
. Liste des commits de la version 1.0.0-beta03
Modifications apportées à l'API
- Ajout d'un délai avant la vérification des dépendances ViewTree de ComposeView. (I8dbbf, b/182466548)
- Ajout des paramètres facultatifs
startX
/endX
etstartY
/endY
aux fonctionsswipeUp
/swipeDown
/swipeLeft
/swipeRight
dansGestureScope
. (I49e2d, b/182063305)
Version 1.0.0-beta02
10 mars 2021
Publication d'androidx.compose.ui:ui-*:1.0.0-beta02
. Liste des commits de la version 1.0.0-beta02
Modifications apportées à l'API
- Ajout d'une nouvelle API locale de composition
LocalSoftwareKeyboardController
pour remplacer l'ancienne interface SoftwareKeyboardController sur TextField. (I5951e, b/168778053) - Ajout d'une nouvelle API locale de composition
LocalSoftwareKeyboardController
pour remplacer l'ancienne interface SoftwareKeyboardController sur TextField. (I84472, b/168778053) - Suppression des éléments
SemanticsMatcher
suivants :hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(If16bd)
- Marquage des éléments
SemanticsMatchers
suivants comme @ExperimentTestApi :hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(Ia600c)
- Ajout des éléments
SemanticsMatcher
suivants :hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(I2f502)
Correction de bugs
- Application forcée des restrictions sur l'utilisation publique des API expérimentales. (I6aa29, b/174531520)
- Mise à jour de
androidx.compose.ui:ui
, qui ne dépend plus d'AppCompat ni de Fragment. Si vous utilisez ComposeView dans votre application, et si vous utilisez Fragment et/ou AppCompat, assurez-vous d'utiliser les versions 1.3 ou ultérieures d'AppCompat/Fragment. Ces mises à jour sont nécessaires pour définir correctement le cycle de vie et les propriétaires d'état enregistrés requis pour ComposeView. (I1d6fa, b/161814404) - Correction de la défaillance de
rememberSaveable { mutableStateOf(0) }
lors de son utilisation dans une destination de navigation-compose. (I1312b, b/180042685, b/180701630) - Ajout d'une nouvelle API locale de composition
LocalSoftwareKeyboardController
pour remplacer l'ancienne interface SoftwareKeyboardController sur TextField. (I658b6, b/168778053) - Correction de l'exception rare NoSuchElementException dans le
tearDownRegistry()
deComposeRootRegistry
. (Iddce1)
Version 1.0.0-beta01
24 février 2021
Publication d'androidx.compose.ui:ui-*:1.0.0-beta01
. Liste des commits de la version 1.0.0-beta01
Première publication bêta de la version 1.0.0 de Compose.
Modifications apportées à l'API
- Ajout du rappel onStart à
detectDragGestures
. (I67269, b/179995594) - Mise à jour des modificateurs de dimensionnement des fonctionnalités intrinsèques, qui ne sont plus en phase expérimentale. (I15744)
- Changement de nom : MeasurementBlocks devient MeasurementPolicy, une interface de fonction. Mise à jour et simplification des API Layout pour utiliser MeasurePolicy. (Icab48, b/167662468, b/156751158)
- Remplacement de
InteractionState
par[Mutable]InteractionSource
.- Les interfaces sont responsables de l'émission et de la collecte des événements d'interaction.
- Au lieu de transmettre
interactionState = remember { InteractionState() }
à des composants tels queButton
etModifier.clickable()
, utilisezinteractionSource = remember { MutableInteractionSource() }
. - Au lieu de
Interaction.Pressed in interactionState
, utilisez les fonctions d'extension sur InteractionSource, comme InteractionSource.collectIsPressedAsState(). - Pour les cas complexes, vous pouvez utiliser InteractionSource.interactions afin d'observer le flux des interactions. Pour en savoir plus, consultez la documentation et les exemples d'InteractionSource.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Ajout de l'interface AccessibilityMananger et de LocalAccessibilityMananger dans les CompositionLocals. (I53520)
- Suppression des méthodes LayoutCoordinates obsolètes. Utilisez la fonction au lieu de la propriété pour positionInParent et boundsInParent. (I580ed, b/169874631, b/175142755)
- Remplacement des Typealiases par les types sous-jacents :
ColorStop
est désormaisPair<Float, Color>
.SpanStyleRange
est désormais AnnotatedString.Range. ParagraphStyleRange
est désormaisAnnotatedString.Range<ParagraphStyle>
.StringAnnotation
est désormaisAnnotatedString.Range<String>
.- (I8dd1a)
- Création de TextInputSession pour les sessions d'entrée à partir de composants de texte de bas niveau tels que CoreTextField. (I8817f, b/177662148)
- Placeable expose désormais measuredSize, qui représente la taille réelle mesurée pour la mise en page enfant. Cette taille peut ne pas respecter les contraintes de dimensionnement. (Ib2729, b/172560206, b/172338608)
- Ajout d'un modificateur selectionGroup permettant de marquer la collection de Tabs ou RadioButtons à des fins d'accessibilité. (Ie5c29)
Mise à jour de
defaultFactory
pourcompositionLocalOf
etstaticCompositionLocalOf
, désormais obligatoire plutôt que facultatif.Cette modification élimine une erreur de type potentielle pour les types non nullables pour lesquels aucune fabrique par défaut n'était fournie. Auparavant, une référence nulle pouvait être fournie pour un type ne pouvant l'accepter.
Pour les types nullables, envisagez de définir
{ null }
comme fabrique par défaut.Nous vous déconseillons d'utiliser des valeurs locales avec des types non nullables, sauf si une valeur par défaut logique peut être fournie. S'il n'existe aucune valeur par défaut pertinente, le lambda
defaultFactory
doit générer une exception. Toutefois, générer une exception signifie que les consommateurs de la valeur locale auront une dépendance implicite quant à la mise à disposition de celle-ci, qui n'est pas forcée par le système de types. (Ifbd2a)Suppression des méthodes obsolètes des modules d'interface. (I646f6)
Renommage des modificateurs de taille. Modifier.width et ses variantes height/size deviennent respectivement requiredWidth, requiredHeight et requiredSize. Modifier.preferredWidth et ses variantes preferredHeight/preferredSize deviennent respectivement width, height et size. (I5b414)
Suppression de
Modifier.tapGestureFilter
. UtilisezModifier.pointerInput { detectTapGestures(...) }
à la place. (I266ed, b/175294473)Suppression de la consommation partielle du système d'entrée du pointeur. Nous vous recommandons de coordonner la consommation partielle à l'aide de Modifier.nestedScroll. (Ie9c9b)
Déplacement d'Orientation vers le package Foundation. Déplacement de VelocirtTracker de ui.gesture vers ui.input.pointer. (Iff4a8, b/175294473)
Conversion de imageResource et vectorResource en fonctions d'extension respectivement associées à ImageBitmap et ImageVector. Suppression des fonctions
load{Image,Vector,Font}Resource
. (I89130)Suppression de AnimationClockObservable et de ses sous-classes. Suppression d'AnimatedFloat. (Icde52, b/177457083)
Changement de nom : Providers devient CompositionLocalProvider.
- Abandon du constructeur de composition, qui n'accepte plus de paramètre de clé.
- Conversion de la fonction modulable de premier niveau currentCompositeKeyHash en propriété de premier niveau pour composable.
- Déplacement de CompositionData et CompositionGroup vers l'espace de noms androidx.compose.runtime.tooling.
- Conversion de la classe concrète ComposableLambda en interface sans paramètres de type.
- Conversion de la classe concrète ComposableLambdaN en interface sans paramètres de type.
- Déplacement de la fonction snapshotFlow vers l'espace de noms androidx.compose.runtime.
- Reclassement de la méthode de fusion de SnapshotMutationPolicy, qui n'est plus en phase expérimentale.
- Suppression de la fonction clearRoots @TestOnly, qui n'était plus nécessaire.
- Suppression des fonctions keySourceInfoOf et resetSourceInfo, qui n'étaient plus nécessaires.
- Suppression de Composer.collectKeySourceInformation, qui n'était plus nécessaire.
- Suppression des méthodes isJoinedKey, joinedKeyLeft et joinedKeyRight, qui n'étaient plus nécessaires.
- Déplacement et réorganisation de différentes API de premier niveau dans différents fichiers. En raison de la sémantique des classes de fichiers en Kotlin, ces changements empêcheront la compatibilité binaire, mais n'affecteront pas la compatibilité avec la source. La plupart des utilisateurs ne devraient donc pas rencontrer de problème.
- (I99b7d, b/177245490)
Suppression de
ComponentActivity.setContent()
de compose:ui. Utilisez celui deandroidx.activity:activity-compose:1.3.0-alpha01
. Suppression deviewModel()
etLocalViewModelStoreOwner
de compose:ui. Utilisez ceux deandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
. (I6f36b)Modification de Modifier.scrollable, qui utilise désormais une interface Scrollable au lieu de la classe ScrollableController. (I4f5a5, b/174485541, b/175294473)
Abandon de la prise en charge de CustomEvents par PointerInputModifier. (I02707, b/175294473)
Reclassement de SnapshotStateObserver, qui n'est plus en phase expérimentale. (Id2e6a)
Suppression d'API précédemment abandonnées. (Ice5da, b/178633932)
Suppression de longPressGestureFilter et doubleClickGestureFilter. Utilisez Modifier.pointerInput avec des fonctions d'assistance telles que detectTapGestures. (I2fedf, b/175294473)
Suppression des utilisations refactorisées de l'API String.format dans diverses méthodes toString afin de ne pas exploiter String.format en interne. (Id1290)
Suppression des assertions de dp. (I798d2)
Suppression de androidx.compose.runtime:runtime-dispatch. (I55feb)
Mise à jour des actions de texte, qui vérifient désormais automatiquement la sélection. (I13777, b/179648629)
Suppression de
runBlockingWithManualClock
. (I15cdc, b/179664814)Mise à jour de Modifier.verticalScroll()/horizontalScroll(), où la position de défilement est désormais représentée par des entiers. (I81298)
Changement de nom : FlingConfig devient FlingBehavior, et permet désormais de personnaliser l'animation de suspension plutôt que d'utiliser les décompositions prédéfinies. (I02b86, b/175294473)
Ajout d'une fonction d'assistance permettant de définir la même action pour tous les rappels ImeAction. (I63447, b/179226323)
Suppression du rappel SoftwareKeyboardController (qui sera bientôt remplacé par une nouvelle API) de tous les champs de texte. (Iae869, b/168778053)
Suppression de FontSpan et FontWeigthStyleSpan, qui n'étaient plus utilisés. (Ie5b56, b/177423444)
Modifications apportées à l'API Material :
- Ajout du paramètre contentPadding à Top/BottomAppBar pour permettre la personnalisation de la marge intérieure par défaut.
- Réorganisation des paramètres dans BackdropScaffold, afin de respecter les consignes d'API concernant la précédence des paramètres obligatoires sur les paramètres facultatifs.
- Déplacement du paramètre
icon
de BottomNavigationItem, aprèsselected
etonClick
. - Changement de nom : dans BottomNavigationItem,
alwaysShowLabels
devientalwaysShowLabel
. - Renommage des paramètres
bodyContent
, qui deviennent simplementcontent
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 quesecondary
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
devientonValueChangeFinished
, et peut désormais être nul. - Changement de nom : dans
Snackbar
, le paramètretext
devientcontent
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 surRowScope
. - Changement de nom :
ModalDrawerLayout
devientModalDrawer
. - Changement de nom :
BottomDrawerLayout
devientBottomDrawer
. - (I1cc66)
Correction de bugs
- Ajout d'une API permettant d'utiliser des ressources AnimatedVectorDrawable dans Compose. Utilisez animatedVectorResource pour charger un fichier XML
<animated-vector>
en tant que AnimatedImageVector et l'animer avec painterFor. (I8ea91) - Ajout d'une nouvelle API locale de composition LocalSoftwareKeyboardController pour remplacer l'ancienne interface SoftwareKeyboardController sur TextField. (I658b6, b/168778053)
Version 1.0.0-alpha12
10 février 2021
Publication d'androidx.compose.ui:ui-*:1.0.0-alpha12
. Liste des commits de la version 1.0.0-alpha12
Modifications apportées à l'API
- Abandon de la prise en charge de ViewGroups par UiApplier. Suppression des composables emitView obsolètes. (Ifb214)
- Mise à jour de Modifier.pointerInput, qui nécessite désormais des clés de mise en mémoire pour indiquer le moment où la coroutine de détection des entrées de pointeur doit redémarrer pour les nouvelles dépendances. (I849cd)
- Changement de nom : CompositionReference devient CompositionContext. (I53fcb)
- Changement de nom : Bounds devient DpRect. (I4b32a)
- Mise à jour de test : hasText() vérifie désormais s'il existe à la fois des textes d'entrée et des libellés, indices ou espaces réservés dans le champ de texte. (Iab803)
- Déplacement du composable viewModel() et de LocalViewModelStoreOwner vers androidx.lifecycle.viewmodel.compose. Vous devrez désormais ajouter une dépendance androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 distincte pour l'utiliser. (I7a374)
- Prise en charge des actions nullables dans AccessibilityAction. Changement du nom du libellé d'action dans AccessibilityAction et CustomAccessibilityAction : CharSequence devient String. (I0dc82)
- Changement de nom : ImagePainter devient BitmapPainter, afin de mieux correspondre aux conventions de nommage de ImageBitmap et ImageVector et de refléter son parallèle, VectorPainter. (Iba381, b/174565889)
- Amélioration des API de test de sous-chaîne, qui acceptent désormais les sous-chaînes en tant qu'arguments. (Icbe78)
- Ajout d'un
Modifier.focusOrder()
qui accepte un FocusRequester sans spécifier d'ordre de sélection personnalisé à un lambda. Cette option est utile lorsque vous avez seulement besoin de spécifier une référence, mais pas d'ordre de sélection personnalisé pour un composable. (I4f52a, b/179180978) - Déplacement de ComponentActivity.setContent vers androidx.activity.compose.setContent dans le module androidx.activity:activity-compose module. (Icf416)
- Suppression des méthodes de déstructuration et copy() de plusieurs classes où elles n'étaient que rarement utilisées. (I26702, b/178659281)
- Déplacement de Popup de manière à être spécifique à la plate-forme. AndroidPopupProperties devient PopupProperties, et
isFocusable
a été déplacé vers un paramètrefocusable
dePopupProperties
. (Ieeea5) - Déplacement de Dialog de manière à être spécifique à la plate-forme. AndroidDialogProperties devient DialogProperties. (I4ef69, b/179138130)
- Mise à jour de LayoutNode, qui devient interne. (I8a7b1, b/175103944)
- Remplacement de Constraints.enforce par Constraints.constrain. (I8b8ea)
- Abandon de loadFontResource, désormais obsolète. Utilisez plutôt fontResource. Abandon de imageResource, loadImageResource, vectorResource et loadVectorResource. Utilisez plutôt painterResource. (I6b809)
- Pour des raisons de performances, la sémantique ScrollAxisRange reçoit désormais des lambdas renvoyant des floats au lieu des valeurs directes des floats. (If4a35, b/178657186)
- Ajout de la sémantique EditableText pour marquer le texte d'entrée modifiable du champ de texte pour l'accessibilité, et des méthodes de test correspondantes pour vérifier la sémantique. (I8e07a)
- Mise à jour de OwnerLayer/OwnerScope/OwnerSnapshotObserver, qui devient interne. (I4ffaf, b/175103944)
- Changement de nom : toIntPx() devient roundToPx(). (I9b7e4, b/173502290)
- Changement de nom : IntBounds devient IntRect et l'API a été améliorée. (I1f6ff)
- Mise à jour de l'API Snapshot, pour plus de cohérence avec les consignes concernant les API et pour masquer les classes d'implémentation internes dans l'API publique. (Id9e32)
- Ajout des actions sémantiques de développement et de réduction. Ajout des états expand et halfExpand dans ModalBottomSheetState. (Ib5064)
- Abandon de Modifier.dragGestureFilter. Utilisez
Modifier.pointerInput { detectDragGestures (...)}
à la place. Vous pouvez également utiliser Modifier.draggable pour les déplacements sur un seul axe. (I0ba93, b/175294473) - Renommage des Ambients pour correspondre à la nouvelle convention Ambient > CompositionLocal. Le précédent nom des Ambients était AmbientFoo, tandis que CompositionLocals est devenu LocalFoo. (I2d55d)
- Suppression de BaseTextField, qui était obsolète. Utilisez plutôt BasicTextField. (I71368)
- Déplacement de Selection vers Foundation. (I7892b)
- Avertissement : Nous avons précédemment supprimé le composable
state { 0 }
, et encourageons désormais des approches telles queremember { mutableStateOf(0) }
. Suivant cet exemple, nous allons supprimer le composablesavedInstanceState { 0 }
. Nous vous invitons à utiliserrememberSaveable { mutableStateOf(0) }
, qui enregistrera et restaurera automatiquement si le type utilisé dans MutableState peut être stocké dans le bundle. Si vous transmettiez auparavant un objet Saver personnalisé, vous devrez désormais utiliser une nouvelle surcharge de rememberSaveable, qui contient le paramètrestateSaver
. Exemple de mise en œuvre :val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
. (Ib4c26, b/177338004) - Ajout de sémantique de mot de passe pour l'accessibilité. (I231ce)
- Ajout de ProgressBarRangeInfo.Indeterminate pour marquer les barres de progression indéterminées à des fins d'accessibilité. (I6fe05)
- Abandon des utilitaires
emptyContent()
et(@Composable () -> Unit).orEmpty()
, qui n'ont plus d'effet positif sur les performances ni de valeur ajoutée. (I0484d) - Reclassement de
snapshotFlow
etwithMutableSnapshot
, qui ne sont plus en phase expérimentale. (I6a45f) - Mise à jour des recomposeurs, qui peuvent désormais être fermés. Les recomposeurs fermés poursuivent la recomposition jusqu'à ce que les coroutines enfants de la composition soient terminées. Changement de nom : Recomposer.shutDown devient "cancel" pour marquer la distinction avec "close". (Ib6d76)
- Changements de nom : UiSavedStateRegistry devient SaveableStateRegistry et AmbientUiSavedStateRegistry devient AmbientSaveableStateRegistry. Les deux ont été déplacés vers le package androidx.compose.runtime.saveable. (I30224)
- Changement de nom : l'artefact androidx:compose:runtime:runtime-saved-instance-state devient androidx:compose:runtime:runtime-saveable. (I6dcac)
- Suppression de nombreuses API obsolètes du package UI. (I2f2dc)
- Abandon de l'artefact compose:runtime-dispatch. MonotonicFrameClock se trouve désormais dans compose:runtime, et AndroidUiDispatcher dans compose:ui. (Ib5c36)
- Reclassement des classes Outline.*, qui ne sont plus des classes de données. (I4879e, b/178001427)
- Suppression de
view.captureToImage()
, sans remplacement. (I7fcd2) - Introduction de l'API ColorMatrix, qui permet de modifier les valeurs RVB du contenu source. L'API ColorFilter a été refactorisée en interface afin de correspondre à l'implémentation de PathEffect. (Ica1e8)
- Ajout du paramètre layoutDirection au createOutline de Shape. Cela permet de créer des formes sensibles à l'orientation de la mise en page. (I57c20, b/152756983)
- Abandon de onImeActionPerformed. Utilisez KeyboardActions à la place. (If0bbd, b/179071523)
- Introduction d'un élément de contexte de coroutine
InfiniteAnimationPolicy
, qui sera appliqué dans les animations infinies. Par défaut, aucune règle n'est installée, sauf lors de l'exécution de tests avecComposeTestRule
. (I50ec4, b/151940543) - Suppression de canDrag de Modifier.scrollable. (Id66e7, b/175294473)
- Changement de nom : LayoutCoordinates.parentCoordinates devient LayoutCoordinates.parentLayoutCoordinates, pour permettre l'ajout d'une propriété parentCoordinates. La propriété parentCoordinates propose désormais les LayoutCoordinates du modificateur parent. Cette approche élargit les cas d'utilisation de onSizeChanged() et onGloballyPositioned(). (Idfbfd, b/177926591)
- Abandon de tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter et pressIndicaitonGestureFilter. Utilisez plutôt Modifier.clickable ou Modifier.pointerInput avec la fonction detectTapGestures. (I6baf9, b/175294473)
- Suppression de unregisterProvider de SaveableStateRegistry. En remplacement, registerProvider() renvoie désormais l'objet SaveableStateRegistry.Entry, que vous pouvez utiliser pour la désinscription. (Ic4274, b/178583739)
- Changement de nom : rememberSavedInstanceState() devient rememberSaveable(), et a été déplacé vers le package androidx.compose.runtime.saveable. (I1366e, b/177338004)
- Suppression de CoreText et CoreTextField de l'API publique.
- Suppression de la surcharge de SelectionContainer, devenue obsolète.
- (I99c19)
- Amélioration de la stabilité des tests dans lesquels Compose est utilisé dans des hiérarchies ajoutées/supprimées directement dans WindowManager. (Ie81ed, b/175765614)
- Suppression de Recomposer.current(). [Abstract]ComposeView utilise désormais par défaut des recomposeurs créés par nécessité, délimités dans la fenêtre et gérés par le ViewTreeLifecycleOwner pour la fenêtre concernée. La recomposition et les animations basées sur withFrameNanos sont suspendues tant que le cycle de vie de l'hôte est arrêté. (I38e11)
- Mise à jour de Recomposer.runningRecomposers, qui propose désormais un StateFlow global des RecomposerInfo en lecture seule, permettant d'observer l'état de la composition en cours dans le processus. Privilégiez cette API plutôt que Recomposer.current(), devenue obsolète. (If8ebe)
- Déplacement de Saver, listSaver(), mapSaver() et autoSaver depuis androidx.compose.runtime.savedinstancestate vers androidx.compose.runtime.saveable. (I77fe6)
- Mise à jour des EditCommands, qui acceptent désormais AnnotatedString. Toutefois, il s'agit d'une modification de l'API uniquement. La modification de texte multistyle n'est pas encore prise en charge. (I4c3ea)
- Suppression de Uptime et Duration. (Ib9bf4, b/177420019)
- Déplacement de CompositionData.asTree() et des API associées vers un module ui-tooling-data distinct, avec marquage comme expérimentales. (Ic95b8)
- Changement de nom : les paramètres de RounderCornerShape, CutCornerShape et CornerBasedShape ont été renommés de gauche-droite en début-fin, pour permettre la mise en miroir automatique de la forme pour la lecture de droite à gauche. Ajout de AbsoluteRounderCornerShape et AbsoluteCutCornerShape pour les cas où la mise en miroir automatique n'est pas souhaitée. (I61040, b/152756983)
Refactorisation de l'API ciblée par le plug-in de compilation du compilateur Compose, afin d'utiliser une interface plutôt qu'une classe concrète. Cette interface n'utilise plus de paramètre de type.
Il s'agit d'une modification interne qui ne devrait pas affecter la compatibilité du code source, mais qui constitue une modification destructive de la compatibilité binaire. (I3b922, b/169406779)
Suppression de la fonction StringBuilder.deleteAt, rendue publique par inadvertance. (Id6ed9)
Correction de bugs
- Mise à jour des ComposeViews placées dans des hiérarchies de vues qui sont l'enfant d'une autre composition, qui hébergent désormais les compositions enfants de leurs ancêtres. (I92883)
- Mise à jour de l'API imageFromResource de Compose, afin de réutiliser le cache drawable de la ressource lors du chargement d'objets ImageBitmap. (If3627, b/178751994)
Version 1.0.0-alpha11
28 janvier 2021
Publication d'androidx.compose.ui:ui-*:1.0.0-alpha11
. Liste des commits de la version 1.0.0-alpha11
Modifications apportées à l'API
- Mise à jour de WithConstraints, retravaillé, remplacé par BoxWithConstraints et déplacé vers foundation.layout. (I9420b, b/173387208)
- Abandon de Key.DPadUp. Utilisez Key.DirectionUp à la place. (Iab335, b/177954892)
- Reclassement de l'interface Owner, désormais interne. (If8e35)
- Ajout de l'API FocusManager.moveFocus(), pour permettre un déplacement programmatique de la sélection. (I045cb, b/177681839)
- Mise à jour de PopupPositionProvider, afin d'utiliser des coordonnées relatives à la fenêtre plutôt que des coordonnées globales. Changements de nom : parentGlobalBounds devient anchorBounds et windowGlobalBounds devient windowSize: IntSize. (I2994a)
- Suppression de la dépendance de l'entrée du pointeur aux classes Duration et Uptime, qui seront remplacées par Long en millisecondes. (Ia33b2, b/175142755, b/177420019)
- Ajout de AmbientSavedStateRegistryOwner, de manière semblable à AmbientLifecycleOwner et AmbientViewModelStoreOwner. (I9a3e8, b/176756365)
- Mise à jour de l'API Vector Graphics pour permettre l'analyse des teintes appliquées à la racine des éléments graphiques vectoriels. (Id9d53, b/177210509)
- Ajout de toolType à PointerInputChange pour différencier les appareils. (Iac787, b/175142755)
- Changement de nom : AmbientWindowManager devient AmbientWindowInfo. (I2686a, b/177084714, b/177084983)
- Abandon des méthodes de coordonnées globales, remplacées par de nouvelles méthodes de coordonnées relatives aux fenêtres. (Iee284)
- Ajout de Modifier.toolingGraphicsLayer, qui introduit un modificateur de couche graphique lorsque l'inspection est activée. (I315df)
- Reclassement de FocusRequester.createRefs, marqué comme expérimental car susceptible de changer. (I2d898, b/177000821)
- Changements de nom : SemanticsPropertyReceiver.hidden devient invisibleToUser avec le marquage @ExperimentalComposeUiApi. AccessibilityRangeInfo devient ProgressBarRangeInfo et stateDescriptionRange devient progressBarRangeInfo. AccessibilityScrollState devient ScrollAxisRange, horizontalAccessibilityScrollState devient horizontalScrollAxisRange et verticalAccessibilityScrollState devient verticalScrollAxisRange. (Id3148)
- Suppression de PointerInputData et modification de PointerInputChange, qui récupère tous les champs de PointerInputData. Reclassement de PointerInputEvent et PointerInputEventData comme internes, car ils ne sont utilisés dans aucune API publique. (Ifff97, b/175142755)
- Mise à jour de la densité d'implémentation de GraphicsLayerScope pour prendre en charge la conversion des dp en pixels bruts. (Ied528, b/176819695)
- Mise à jour de l'API Matrix, afin de suivre l'ordre des principales lignes et fournir des constantes d'index pour faciliter les conversions entre différentes représentations matricielles dans le but de correspondre à la logique de conversion du framework entre SkMatrix et Matrix4 en interne. (I432e6)
- Suppression des méthodes expérimentales monotonicFrameAnimationClockOf. (Ib753f, b/170708374)
- Déplacement de String.fintPrecedingBreak et String.fingFollowingBreak vers InternalTextApi. (I657c4)
- Suppression de androidx.compose.ui.util.isSurrogatePair de l'API publique. (Ia9494)
- Changement de nom : TransformedText.transformedText devient TransformedText.text.
- Reclassement de TransformedText, qui n'est plus une classe de données. (Ie672a)
- Suppression de
data class
des classes suivantes :- InlineTextContent
- LocaleList (I605c7)
- Reclassement des classes suivantes, qui ne sont plus des classes de données :
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
- Remplacement de VisualTransformation par une interface fonctionnelle. (I3bba4)
- Ajout d'un type de paramètre de référence de fonction. (I5e1bd)
- Ajout de limites transformées à InspectorNode. (Ice42f)
Correction de bugs
- Abandon des propriétés onCommit, onDispose et onActive, remplacées par les API SideEffect et DisposableEffect. (If760e)
Modification des fonctions de fabrique pour Font/FontFamily/Typeface.
- Ajout de fonctions de fabrique commençant par une majuscule.
- Abandon des anciennes fonctions de fabrique commençant par des minuscules.
- Les nouvelles fonctions de fabrique renvoient la classe FontFamily au lieu des sous-classes.
- Masquage des constructeurs de sous-classes pour qu'ils ne puissent être créés que via des fonctions de fabrique.
- Changement de nom : Font.asFontFamily devient Font.toFontFamily. (I42aa7)
Introduction de
ComposeContentTestRule
, qui étendComposeTestRule
et définitsetContent
, qui a été supprimé deComposeTestRule
. Ajout d'une méthode de fabriquecreateEmptyComposeRule()
qui renvoie uneComposeTestRule
et ne lance pas d'Activity pour vous. Utilisez cette option lorsque vous souhaitez lancer votre Activity au cours du test, par exemple en utilisantActivityScenario.launch
. (I9d782, b/174472899)Changement de nom : animateAsState devient animateFooAsState, où "Foo" est le type de variable animée (Float, Dp, Offset, etc.). (Ie7e25)
Ajout du paramètre de description du contenu à Image et Icon, utilisé pour fournir la description aux services d'accessibilité. (I2ac4c)
Suppression de displaySize, que nous vous invitons à éviter. En règle générale, il est préférable d'utiliser au minimum la taille onRoot() ou celle de la fenêtre. (I62db4)
Mise à jour de OnSizeChanged, qui rapporte désormais la taille à sa position actuelle dans la chaîne de modificateurs au lieu de la taille du contenu de la mise en page. (I36b78, b/177562900)
Abandon de l'API emit() et de toutes ses surcharges, renommées ComposeNode. Les API sont identiques, mais portent un nom différent afin de respecter les conventions de Compose. (I4137b)
Mise à jour de TextFieldValue, qui accepte désormais AnnotatedString. Toutefois, il s'agit d'une modification de l'API uniquement. La modification de texte multistyle n'est pas encore prise en charge.
- Suppression de
initial
des paramètres du constructeur EditingBuffer. (I326d5)
- Suppression de
Abandon de invalidate et compositionReference(), respectivement remplacés par currentRecomposeScope et par rememberCompositionReference. (I583a8)
Modification de AnnotatedString, qui s'étend désormais à partir de kotlin.CharSequence. Par conséquent, length et subSequence sont désormais des fonctions d'instance, et les fonctions d'extension ont été supprimées. (Iaf429)
Abandon de CompositionLifecycleObserver, remplacé par RememberObserver.
Remplacement de
CompositionLifecycleObserver
parRememberObserver
, avec une sémantique modifiée et des méthodes renommées. Le passage à la nouvelle API peut être effectué mécaniquement pour les objets qui ne sont mémorisés qu'une seule fois, ce qui constitue et reste la pratique recommandée. Toutefois, si une référence a été mémorisée plusieurs fois dans une composition,onRemembered
est appelé pour chaque référence, tandis queonEnter
n'est appelé qu'une seule fois.onEnter
était appelé plusieurs fois si l'objet était utilisé dans des sous-compositions, telles queWithConstraints
etScaffold
, ce qui rendait un appel unique deonEnter
non fiable, justifiant sa suppression deRememberObserver
.RememberObserver
ajouteonAbandoned
, qui est appelé si l'instanceRememberObserver
est renvoyée par le rappel transmis àremember
, mais n'a pas été mémorisé dans l'état de la composition, faisant queonRemembered
n'est jamais appelé. Ce cas peut se produire si une exception met fin à la composition avant qu'elle soit terminée, ou si la composition est supprimée, car l'état pour lequel la composition était produite n'est plus d'actualité, ou si la composition n'est plus nécessaire pour toute autre raison. Si l'instance deRememberObserver
qui suit la recommandation de référence unique ci-dessus suit une ressource externe,onForgotten
etonAbandoned
indiquent chacun que la ressource n'est plus nécessaire. Si l'objet suit le travail démarré ou les ressources allouées dansonRemembered
,onAbandoned
peut être ignoré, car il ne sera pas appelé sionRemembered
est appelé. (I02c36)Abandon des opérations arithmétiques entre deux ou plusieurs TextUnits. Abandon des fonctions TextUnit.Sp et TextUnit.Em, à remplacer par des fonctions d'extension telles que Int.sp et Int.em. (I48369)
Les ressources de bibliothèques ne comportant pas de ressources publiques explicitement déclarées (par exemple, via public.xml) sont désormais privées par défaut. (Ia1dcc, b/170882230)
Abandon de ScrollableColumn/Row. ScrollableColumn est moins efficace que LazyColumn pour les contenus volumineux, car LazyColumn permet de composer, mesurer et dessiner exclusivement les éléments visibles. Pour détourner les utilisateurs de l'approche inefficace, nous avons décidé d'abandonner ScrollableColumn et ScrollableRow, et d'encourager l'utilisation de LazyColumn et LazyRow. Les utilisateurs peuvent désactiver le comportement Lazy et utiliser les modificateurs directement, comme suit : Column(Modifier.verticalScroll(rememberScrollState())). (Ib976b, b/170468083)
Ajout d'une méthode de fabrique
items(count: Int)
pour le champ d'application de LazyColumn/LazyRow/LazyVerticalGrid.items(items: List)
etitemsIndexed(items: List)
sont désormais des fonctions d'extension, qui doivent être importées manuellement lorsqu'elles sont utilisées. Ajout de surcharges d'extension pour les tableaux :items(items: Array)
etitemsIndexed(Array)
. (I803fc, b/175562574)Veuillez utiliser ImeAction.None au lieu de ImeAction.NoAction.
- Veuillez utiliser ImeAction.Default au lieu de ImeAction.Unspecified (Ie1bcc)
Mise à profit de TestCoroutineDispatcher dans les tests. (I532b6)
Changement de nom : TextInputService.onStateUpdated devient updateState. (Id4853)
Abandon de la transition basée sur TransitionDefinition. (I0ac57)
Suppression de TextUnitType.Inherit. Utilisez TextUnitType.Unspecified à la place. (I9ff64)
Version 1.0.0-alpha10
13 janvier 2021
Publication d'androidx.compose.ui:ui-*:1.0.0-alpha10
. Liste des commits de la version 1.0.0-alpha10
Modification destructive
La restructuration de l'API de compilation interne permet de regrouper les modifications apportées aux nœuds générés par la composition dans la phase "Appliquer les modifications" de la composition, une fois terminée l'exécution de toutes les fonctions
@Composable
.Cette modification de comportement est potentiellement destructive pour le code de l'application, car les nœuds ne sont plus disponibles depuis les API internes et expérimentales tant que les modifications n'ont pas été appliquées. Pour contourner ce problème, vous pouvez généralement entourer le code de dépendances dans un composable
SideEffect
et différer son exécution jusqu'à ce que les nœuds aient été créés et initialisés. (I018da)
Modifications apportées à l'API
- Ajout de Modifier.focusOrder() permettant de spécifier un ordre de sélection personnalisé. (I90cf5, b/175899543, b/170155556, b/170155429)
- Suppression de focusObserver, devenu obsolète. Utilisez onFocusChanged ou onFocusEvent à la place. (I3ecb9, b/175156387)
- Modifications de l'API EditOperations :
- Changement de nom : EditOperation devient EditCommand.
- Ajout du suffixe Command pour les implémentations concrètes de EditOperation.
- Reclassement des EditCommand, qui ne sont plus des classes de données.
- Changement de nom : la fonction EditOperation.process devient applyTo.
- Changement de nom : InputEventListener devient InputEventCallback.
- (I0a366)
- Suppression de PxSquared, PxCubed, PxInverse, qui n'étaient pas utilisés. Reclassement de Size.center(), qui devient une propriété. (I973f7)
- Mise à jour du module ui-test, qui permet désormais de configurer la création de recomposeurs pour les UI testées. (Ibebd8)
- Mise à jour de Velocity, qui réunit désormais des composants et des opérations mathématiques. (Ib0447)
- Changement de nom :
@ExperimentalTesting
devient@ExperimentalTestApi
, pour être cohérent avec les annotations d'API expérimentales similaires. (Ia4502, b/171464963) - Changement de nom : Color.useOrElse() devient Color.takeOrElse(). (Ifdcf5)
- Suppression des classes DpInverse, DpSquared et DpCubed, qui n'étaient pas utilisées. (I4d62b)
- Changement de nom : Constraints#satisfiedBy devient isSatisfiedBy. (I9cf5c)
- Ajout d'un rappel pour notifier Owner lorsque les limites de layoutnode changent. (I72fd1)
- Ajout des propriétés isSpecified, isUnspecified et useOrElse pour les classes inline dont la constante est Unspecified. (I93f7b, b/174310811)
Développement des API [Abstract]ComposeView pour permettre le recyclage des vues basées sur Compose, en supprimant leur composition pour la recréer ultérieurement. Ajout d'API pour installer et découvrir les recomposeurs délimités dans la fenêtre, et de CompositionReferences pour créer des compositions enfants.
Ajout de ViewCompositionStrategy pour configurer la stratégie de suppression des compositions de [Abstract]ComposeViews. Le comportement par défaut consiste à supprimer lorsque la fenêtre est détachée. (I860ab)
Suppression de l'API publique Any.identityHashCode(). (I025d7)
Suppression de l'API toStringAsFixed, à remplacer par l'utilisation directe de String.format. (Iaba6b)
Ajout de Toggle à Strings.kt dans Foundation. (I4a5b7, b/172366489)
Déplacement de NativeClass vers le module d'interface utilisateur, avec reclassement comme interne. Mise à jour des utilisations de nativeClass dans les implémentations d'égalité, afin d'utiliser "is MyClass" à la place. (I4f734)
Abandon de Modifier.focus() et Modifier.focusRequester(). Utilisez Modifier.focusModifier() et Modifier.focusReference() à la place. (I75a48, b/175160751, b/175160532, b/175077829)
Introduction de SelectionRegistrar.notifySelectableChange pour notifier les mises à jour du Selectable au SelectionManager. (I6ff30, b/173215242)
Introduction d'une propriété Outline.bounds pour obtenir le rectangle de délimitation pour différentes implémentations de contour. (I16e74, b/175093504)
Abandon de TestUiDispatcher. Utilisez Dispatchers.Main à la place. (Ic171f, b/175385255)
Reclassement de ImeOptions et KeyboardOptions, qui ne sont plus des classes de données. (I3c898, b/168684531)
Modifications apportées à l'API VisualTransformation :
- Changement de nom : OffsetMap devient OffsetMapping.
- Changement de nom : OffsetMapping.identityOffsetMap devient OffsetMapping.Identity.
- Reclassement de PasswordTransformation, qui n'est plus une classe de données.
- Déplacement de OffsetMapping vers son propre fichier.
- (I0bdf3)
Changement de nom : Position devient DpOffset. Suppression de getDistance(). (Ib2dfd)
Mise à jour de la fonction Dp.isFinite(), qui devient une valeur Dp.isFinite. (I50e00)
Correction de bugs
- Mise à jour du recomposeur, qui expose désormais un flux de son état actuel, permettant de surveiller son activité et celle des effets associés. (Ifb2b9)
- Mise à jour du keyEvent natif, désormais accessible via keyEvent.nativeKeyEvent. (I87c57, b/173086397)
- Remplacement de
animate()
paranimateAsState()
, qui renvoieState<T>
au lieu deT
. Cela permet d'améliorer les performances, car le champ d'invalidation peut être réduit à l'endroit où la valeur State est lue. (Ib179e) - Ajout d'une API de rôle Semantics, et de Role en tant que paramètre des éléments SemanticsModifier pouvant être cliqués, sélectionnés ou activés/désactivés. Modification de Modifier.progressSemantics, afin que le rendre utilisable par Slider. (I216cd)
- Ajout d'une API basée sur la coroutine
Animatable
, qui garantit l'exclusivité mutuelle de ses animations.- Ajout de DecayAnimationSpec pour prendre en charge les animations de décomposition multidimensionnelle.
- (I820f2, b/168014930)
Version 1.0.0-alpha09
16 décembre 2020
Publication d'androidx.compose.ui:ui-*:1.0.0-alpha09
. Liste des commits de la version 1.0.0-alpha09
Modifications apportées à l'API
- Abandon de KeyEvent.Alt. Utilisez KeyEvent.isAltPressed à la place. (Idd695)
- Abandon de Modifier.keyInputFilter et Modifier.previewKeyInputFilter. Utilisez Modifier.onKeyEvent et Modifier.onPreviewKeyEvent à la place. (Idbf1b, b/175156384)
- Abandon de Modifier.focusObserver. Utilisez Modifier.onFocusChanged ou Modifier.onFocusEvent à la place. (I30f17, b/168511863, b/168511484)
- Changement de nom : pour les API d'entrée de pointeur de suspension, HandlePointerInputScope devient AwaitPointerEventScope et handlePointerInput() devient awaitPointerEventScope(). (Idf0a1, b/175142755)
- Reclassement de l'API de saisie automatique, désormais expérimentale (nécessite une activation). (I0a1ec)
- Ajout de déclarations de déstructuration pour créer des instances FocusRequester. (I35d84, b/174817008)
- Changement de nom : accessibilityLabel devient contentDescription et accessibilityValue devient stateDescription. (I250f2)
- Suppression des événements personnalisés ont été supprimés de l'API de suspension des entrées du pointeur. (Ia54d5, b/175142755)
- Introduction de plusieurs fonctions dans SelectionRegistrar. Changement de nom : onPositionChange devient notifyPositionChange. (Ifbaf7)
- Marquage d'autres membres de LayoutNode comme internes. (I443c6)
- Introduction de LayoutInfo, destiné à être utilisé par les outils et pour les tests. (I9b190)
- Reclassement de AndroidOwner, désormais interne. (Ibcad0, b/170296980)
- Suppression de l'annotation ExperimentalPointerInput. (Ia7a24)
- Ajout d'un système de défilement imbriqué. Reportez-vous à Modifier.nestedScroll pour en savoir plus. (I36e15, b/162408885)
- Reclassement de subcomposeInto(LayoutNode), désormais interne. (Id724a)
Mise à jour de l'interface
Applier
pour simplifier la construction d'arborescences de bas en haut plutôt que de haut en bas.Changement de nom : la méthode
insert()
devientinsertTopDown()
.Ajout d'une méthode
insertBottomUp()
.Un applicateur insère des nœuds dans l'arborescence modifiée à l'aide de
insertTopDown()
ou deinsertBottomUp()
, selon leur performance.Il est beaucoup plus efficace de construire certaines arborescences, telles que
LayoutNode
etView
, de bas en haut plutôt que de haut en bas. Avant ce changement, l'implémentation ascendante exigeait une pile d'insertions, qui devait être copiée sur chaque applicateur nécessitant une construction ascendante pour améliorer les performances. Avec cette modification,Applier
écraseinsertBottomUp()
pour créer une arborescence de bas en haut ouinsertTopDown()
pour construire l'arborescence de haut en bas. (Icbdc2)Ajout des propriétés dismissOnBackPress et dismissOnClickOutside aux AndroidDialogProperties. Ces propriétés permettent de configurer le moment où le lambda onDismissRequest de la boîte de dialogue est appelé. (If5e17)
Ajout de l'API painterResource pour gérer le chargement opaque des objets Painter à partir de formats d'éléments rastérisés (tels que PNG) ou de drawables vectoriels. Les consommateurs n'ont plus à déterminer le type d'élément à l'avance et peuvent appeler cette méthode pour obtenir un objet Painter à utiliser dans des composables d'image ou des modificateurs Painter. (I2c703, b/173818471)
Ajout de Modifier.clearAndSetSemantics pour effacer la sémantique des descendants et en définir une nouvelle. (I277ca)
Déplacement de ContentDrawScope vers le module ui-graphics, où se trouve DrawScope. (Iee043, b/173832789)
Introduction de l'API PathEffect pour éléments graphiques, permettant de fournir différents motifs aux formes tracées. Abandon de NativePathEffect, à remplacer par l'implémentation attendue/réelle de PathEffect. (I5e976, b/171072166)
Ajout des interfaces IdlingResource à Compose, en tant que variante compatible avec les ressources d'inactivité d'Espresso. Elles peuvent être inscrites ou désinscrites via ComposeTestRule. (I433f3)
Suppression de l'inscription/désinscription globale de ComposeIdlingResource et des horloges dans ComposeIdlingResource. (I32660)
Correction de bugs
- Mise à jour des lambdas dans les modificateurs de décalage, qui renvoient désormais IntOffset plutôt que Float. (Ic9ee5, b/174137212, b/174146755)
Suppression de SlotTable, SlotReader et SlotWriter de l'API publique. Précédemment marqués comme InternalComposeAPI, ces éléments sont désormais internes pour le module Compose.
Ajout de CompositionData et CompositionGroup comme substituts que l'API ui-tooling peut utiliser afin d'extraire des informations de composition. Ces éléments sont publics, mais ne sont pas destinés à être utilisés en dehors de l'API ui-tooling, car ils fournissent des informations brutes que cette API interprète. (I31a9c)
Refactorisation de ShaderBrush pour créer en différé une instance de nuanceur lorsque les informations de dimensionnement de l'environnement de dessin sont disponibles. Cette option est utile pour définir les dégradés qui occupent complètement l'espace délimité d'un composable au moment de la composition, sans implémentations personnalisées de DrawModifier.
Abandon des API de constructeur de fonctions de dégradés, à remplacer par des méthodes de fabrique sur un objet Gradient. (I511fc, b/173066799)
Abandon de LazyColumnFor, LazyRowFor, LazyColumnForIndexed et LazyRowForIndexed. Utilisez LazyColumn et LazyRow à la place. (I5b48c)
Abandon de BuildCompat.isAtLeastR. (Idb37e)
Ajout d'une fonction de fabrique buildAnnotatedString pour créer une AnnotatedString. Abandon de la fonction de constructeur annotatedString. (Idfe0b)
Suppression des méthodes d'extension sur Float et Double pour convertir les valeurs en radians. Conversion en fonction privée dans l'implémentation PathParser, seul endroit où elles étaient utilisées. (I25f52)
Version 1.0.0-alpha08
2 décembre 2020
Publication d'androidx.compose.ui:ui-*:1.0.0-alpha08
. Liste des commits de la version 1.0.0-alpha08.
Modifications apportées à l'API
- Ajout d'une action sémantique Dismiss. (I2b706)
- Déplacement des API DrawModifier du package androidx.compose.ui vers le package androidx.compose.ui.draw. Création d'un fichier DrawModifierDeprecated.kt pour inclure des méthodes d'assistance/typealiases afin de faciliter la migration des API obsolètes vers les API actuelles. (Id6044, b/173834241)
- Changement de nom : Modifier.drawLayer devient Modifier.graphicsLayer. Mise à jour des classes associées vers GraphicsLayer conformément aux commentaires concernant l'API. (I0bd29, b/173834241)
- Ajout de méthodes placeable.placeWithLayer() et placeable.placeRelativeWithLayer(), qui permettent aux mises en page personnalisées et aux modificateurs de mise en page de positionner un enfant en introduisant une couche graphique pour son dessin. Cette approche permet d'optimiser les dessins en premier lieu, ce qui évite de devoir redessiner le contenu des enfants devant être déplacés, puis appliquer des transformations de dessin à l'enfant. (Ibd8f6, b/170296989, b/171493718, b/173030831)
- Suppression de
<T>
de la déclaration de SubcomposeLayout. Vous pouvez désormais l'utiliser sans spécifier de type. (Ib60c8) - Ajout des API Modifier.scale/rotate pour plus de commodité avec drawLayer.
- Changement de nom :
Modifier.drawOpacity
devientModifier.alpha
. - Changement de nom :
Modifier.drawShadow
devientModifier.shadow
. (I264ca, b/173208140)
- Changement de nom :
- Mise à jour des champs Uptime et Position de PointerInputData, désormais non nullables. (Id468a)
- Mise à jour de MaterialTheme, qui définit désormais les couleurs appropriées pour les poignées et l'arrière-plan de sélection. Les applications non Material peuvent utiliser manuellement AmbientTextSelectionColors pour personnaliser les couleurs utilisées pour la sélection. (I1e6f4, b/139320372, b/139320907)
- Ajout de WindowManager.isWindowFocused pour vérifier si la fenêtre hôte est active, et de WindowFocusObserver, qui fournit un rappel onWindowFocusChanged. (I53b2a, b/170932874)
- Mise à jour de l'API TransformOrigin pour adopter une syntaxe de déstructuration renvoyant
pivotFractionX
etpivotFractionY
en tant quecomponent1
etcomponent2
. (If43c4, b/173586560) - Ajout d'une vérification lint pour l'attribution d'un nom et d'une position au paramètre lambda composable, afin de confirmer la cohérence avec les consignes Compose.
Nous avons également migré certaines API utilisant
children
comme nom de lambda de fin verscontent
, conformément à la vérification lint et aux consignes. (Iec48e) - Ajout d'une API pour vérifier si les touches de modification (Alt, Ctrl, Meta ou Maj) étaient pressées lorsqu'un événement keyevent a été déclenché. (I50ed9)
- Ajout d'une surcharge
Modifier.drawLayer()
. Elle utilise un bloc lambda sur une nouvelle GraphicsLayerScope où vous définissez les paramètres de couche de manière à éviter la recomposition et la remise en page lorsque le changement d'état se produit. Reclassement de DrawLayerModifier, désormais interne, pour préparer la migration de sa logique vers la méthode placeable.placeWithLayer() de LayoutModifier. (I15e9f, b/173030831) - Abandon des Ambients utilisant le suffixe
Ambient
, remplacés par de nouvelles propriétés utilisant le préfixe Ambient, conformément aux conventions des autres Ambiants et des consignes relatives aux API de Compose. (I33440) - Déplacement de
androidx.compose.ui.text.Typeface
versandroidx.compose.ui.text.font.Typeface
. (Ic2b81) - Changement de nom : l'argument sémantique mergeAllDescendants devient mergeDescendants. (Ib6250)
- Ajout d'un détecteur de gestes glissés qui suspend l'API d'entrée du pointeur, y compris le verrouillage de l'orientation. (Icef25)
- Changement de nom : VectorAsset devient ImageVector ; déplacement de VectorAsset vers Builder en tant que classe interne de ImageVector, conformément aux consignes relatives à l'API. Ajout du typealias de VectorAssetBuilder à ImageVector.Builder pour la compatibilité. (Icfdc8)
- Changement de nom : ImageAsset et les méthodes associées deviennent ImageBitmap. (Ia2d99)
- Ajout d'un paramètre zIndex pour place() de PlacementScope, de sorte que Modifier.zIndex() fonctionne désormais comme un LayoutModifier. Cette option permet à toute mise en page personnalisée de définir des zIndex pour ses enfants, directement dans le bloc de positionnement. (I711f7, b/171493718)
- Déplacement des propriétés sémantiques de Foundation vers UI. (I6f05c)
- Abandon de place(Offset) et placeRelative(Offset). Utilisez des surcharges avec des décalages entiers à la place. (I4c5e7)
- Suppression des API précédemment abandonnées. Modifier.onPositioned a été supprimé. Utilisez Modifier.onGloballyPositioned à la place. Modifier.onDraw a été supprimé. Utilisez Modifier.onDrawBehind à la place. Modifier.plus a été supprimé. Utilisez Modifier.then à la place. Color.Unset a été supprimé. Utilisez Color.Unspecified à la place. La classe PxBounds a été supprimée. Utilisez Rect à la place. (Ie9d02, b/172562222)
- Mise à jour de l'interface Alignment, désormais fonctionnelle. (I46a07, b/172311734)
- Ajout des détecteurs de geste pour l'appui, le double appui, l'appui prolongé et l'indication de pression avec la nouvelle entrée suspensive de pointeur. Nous avons également ajouté quelques utilitaires pour permettre aux développeurs d'écrire plus facilement leurs propres détecteurs de gestes. (I00807)
- Changement de nom : dans
LayoutIdParentData
,id
devientlayoutId
.Measurable.id
devientMeasurable.layoutId
. (Iadbcb, b/172449643) - Ajout d'un détecteur de gestes multipoint, avec fonctions d'assistance pour détecter la rotation, le zoom et le défilement panoramique. (Ic459d)
- Introduction des API SweepGradientShader et SweepGradientBrush. (Ia22c1)
- Reclassement du contrôle du temps dans les tests (TestAnimationClock et ses utilisations), désormais expérimental. (I6ef86, b/171378521)
Ajout d'API de défilement basées sur coroutine :
Ajout de LazyListState.snapToItem et LazyListState.smoothScrollBy, ainsi que des API de niveau inférieur pour le contrôle du défilement. Ces API fournissent une interface suspensive qui contrôle et attend la fin du défilement avant son renvoi. (Ie5642)
Ajout de Modifier.focusable dans Foundation. Utilisez cette option pour ajouter un comportement sélectionnable à un composant, avec une sémantique et une accessibilité correctes. (I41eb9, b/152525426, b/162865824)
Ajout d'implémentations par défaut des méthodes et des propriétés dans AnimationClockTestRule, qui peuvent être déléguées à son
clock
. (I7ea3d, b/173399709)Mise à jour de AndroidComposeTestRule, qui accepte désormais les lanceurs d'activités personnalisés. (Ib8288, b/153623653, b/154135019)
Abandon de TextLayoutResult.getLineVisibleEnd. En remplacement, un paramètre visibleEnd a été ajouté à TextLayoutResult.getLineEnd. (I73282)
Modifications apportées à l'API TextFieldValue :
- TextFieldValue.composition est désormais en lecture seule.
- Suppression de l'exception générée en cas de plage de sélection non valide. (I4a675, b/172239032)
Prise en charge de TtsAnnotation pour le moteur de synthèse vocale. (I54cc6)
Ajout d'API pour l'exécution d'animations dans des coroutines. (Ied662)
Correction de bugs
- Changement de nom : le paramètre d'alignement de Box devient contentAlignment. (I2c957)
- Changement de nom : les modificateurs offsetPx deviennent offset, et acceptent désormais les paramètres lambda au lieu de State. (Ic3021, b/173594846)
- Ajout d'un paramètre resetInput à TextInputService#onStateUpdated. (I3e8f5, b/172239032, b/171860947)
- Ajout d'une vérification lint pour les paramètres de modificateur dans les fonctions modulables. Cette vérification lint permet de contrôler la cohérence du nom, du type renvoyé, de la valeur par défaut et de l'ordre du paramètre avec les consignes Compose. (If493b)
- Ajout d'une option temporaire permettant à TestAnimationClock d'être dirigé par MonotonicFrameClock. (I1403b, b/173402197)
- Ajout d'un wrapper Android Typeface. Vous pouvez charger une police de caractères Android via la fonction
typeface
(par exemple,typeface(Typeface.DEFAULT)
).typefaceFromFontFamily()
a été renommétypeface()
. (I52ab7) - Ajout d'une vérification lint pour contrôler si les fonctions de fabrique de modificateurs sont définies comme des extensions sur modificateur, de sorte qu'elles puissent être enchaînées de façon fluide. (I07981)
- Suppression de l'ancien module ui-test et ses bouchons. (I3a7cb)
- Mise à jour de Recomposer, qui n'accepte plus EmbeddingContext. Les dépendances de planification requises sont obtenues à partir de effectCoroutineContext. Abandon de FrameManager. Les intégrations de plate-forme doivent initialiser leur propre gestion globale des captures instantanées. (I02369)
- Transmission des informations de style au nœud d'accessibilité. (If5e8d)
- Changement de nom : TextUnit.Inherit devient TextUnit.Unspecified pour plus de cohérence avec les autres unités. (Ifce19)
Compose UI version 1.0.0-alpha07
11 novembre 2020
Publication d'androidx.compose.ui:ui-*:1.0.0-alpha07
. Liste des commits de la version 1.0.0-alpha07
Modifications apportées à l'API
- Introduction de la classe inline ScaleFactor pour représenter indépendamment les facteurs de scaling des axes horizontal et vertical, afin de prendre en charge les cas de scaling non uniforme.
- Ajout de la méthode computeScaleFactor à ContentScale.
- Ajout de ContentScale.FillBounds pour effectuer un scaling non uniforme afin d'étirer les limites src et d'occuper entièrement la destination.
- Ajout de méthodes d'opérateur pour calculer les paramètres ScaleFactor avec des paramètres Size.
- (Ic96a6, b/172291582)
- Ajout de fabriques BiasAlignment et BiasAbsoluteAlignment permettant de créer des alignements. (Iac836, b/169406772)
- Ajout d'une option permettant aux développeurs de forcer la désélection. (I90372)
- Correction d'un bug qui empêchait de tracer l'élévation pour les vues dans Compose. (If7782)
- Création d'une API onDrawBehind dans ContentDrawScope, pour correspondre à la convention de noms utilisée dans Modifier.drawBehind. (I4fc3a, b/171955269)
- Prise en charge de la distance de caméra pour compléter les transformations 3D rotationX/rotationY les API Layers. (I40213, b/171492100)
- Ajout de SelectionContainer sans le rappel. (Ibfadb)
- Suppression de l'annotation ExperimentalSubcomposeLayoutApi. SubcomposeLayout peut désormais être utilisé sans ajouter @OptIn. (I708ad)
- Déplacement de FirstBaseline et LastBaseline vers le package androidx.compose.ui.layout. (Ied2e7)
- Suppression de l'opacité du modificateur drawShadow, qui était source de confusion. (I82c62, b/171624638)
- Suppression de MeasureResult dans MeasureScope. (Ibf96d, b/171184002)
- Déplacement de plusieurs symboles liés à la mise en page depuis androidx.compose.ui vers androidx.compose.layout.ui. (I0fa98, b/170475424)
- Suppression de FocusState2, devenu obsolète. (I686cb, b/168686446)
- Reclassement de ZIndexModifier, désormais interne. (I1808b, b/171493718)
- Mise à jour du type renvoyé par la méthode lerp sur les paramètres Size, afin de renvoyer une taille non nulle et d'éviter le boxing inutile. (Ib0044)
- Ajout de TestMonotonicFrameClock pour tester le code s'appuyant sur MonotonicFrameClock de Compose pour les événements de frame de composition en attente à l'aide de kotlinx-coroutines-test's runBlockingTest. (I4402f)
- Suppression de GestureScope.localToGlobal. (I15299, b/171462785)
- Ajout de l'outil de recherche
onAllNodesWithSubstring
. (I81dd7, b/171462889) - Abandon du module androidx.ui.test. Veuillez migrer vers androidx.compose.ui.test et androidx.compose.ui.test.junit4. (I452e8)
Correction de bugs
- Déplacement de captureToBitmap vers captureToImage. (I86385)
- Abandon de foundation.Text, remplacé par material.Text. Pour obtenir une API de texte basique non catégorique, qui ne consomme aucune valeur de thème, reportez-vous à androidx.compose.foundation.BasicText. (If64cb)
- Mise à jour de TextFields, qui accepte désormais KeyboardOptions. (Ida7f3)
- Changement de nom : KeyboardOptions devient ImeOptions. (I82f36)
- Déplacement de KeyboardType et ImeAction vers KeyboardOptions. (I910ce)
- Ajout de provideDefault comme alternative pour fournir des Ambients. Cette option peut être utilisée pour spécifier des valeurs d'Ambient qui ne seront définies que si aucune valeur n'a été fournie précédemment. (Id6635, b/171024925)
- Abandon de BaseTextField. Utilisez plutôt BasicTextField. (I896eb)
- Introduction du module ui-test-junit4. (Ib91f8)
- Changement de nom :
relativePaddingFrom
devientpaddingFrom
. Ajout d'un modificateurpaddingFromBaseline
pour faciliter la spécification des distances entre les limites de la mise en page et la ligne de base d'un texte. (I0440a, b/170633813) - Changement de nom : LaunchedTask devient LaunchedEffect, pour plus de cohérence avec les API SideEffect et DisposableEffect. Afin d'encourager les bonnes pratiques, LaunchedEffect n'est pas autorisé sans paramètre d'objet. (Ifd3d4)
- Introduction de ressources composables qui se recomposent lorsque la configuration est mise à jour. (I6387c, b/167352819)
- Mise à jour du recomposeur, qui nécessite désormais un CoroutineContext pour la construction. (Ic4610)
- Application de la somme des valeurs
zIndex
en présence de plusieursModifier.zIndex()
. Auparavant, seule la première valeur était appliquée. (Ic514c, b/170623936) - Modification de l'implémentation interne de SlotTable. Ces changements ne devraient pas affecter l'API publique. (If9828)
- Ajout de l'option IME de correction automatique de la saisie clavier. (I57b8d)
- Déplacement de androidx.ui.test vers androidx.compose.ui.test. (I9ffdb)
- Suppression de KeyboardOptions.toImeOptions de l'API publique. (Ic2e45)
Contribution externe
- Désactivation de la publication de l'artefact interne androidx.compose.ui:ui-text-android. (Ib93fa)
Version 1.0.0-alpha06
28 octobre 2020
Publication d'androidx.compose.ui:ui-*:1.0.0-alpha06
. Liste des commits de la version 1.0.0-alpha06
Modifications apportées à l'API
- Reclassement de Recomposer, désormais une CompositionReference et un parent de composition valide. Le nombre d'emplacements exigeant un Recomposer explicite a été réduit. (I4036f)
- Abandon de VectorPainter, à remplacer par rememberVectorPainter pour mieux indiquer que l'API composable exploite "remember" en interne pour conserver les données entre les compositions. (Ifda43)
- Mise à jour de l'API Modifier.drawWithCache pour exposer ContentDrawScope en tant que champ d'application receveur (au lieu de DrawScope), afin de permettre aux implémentations de réorganiser les commandes de dessin. Cette option est utile pour combiner ou teinter, lorsque les pixels de contenu doivent être affichés en premier pour que l'algorithme de mode de combinaison correspondant soit appliqué correctement. (Ie7ec8)
- Déplacement de SimpleContainer vers PopupTestUtils.kt. (I78c57)
- Reclassement de ConsumedData, qui n'est plus une classe de données. Pour en savoir plus, consultez la page https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219. (I1737f)
- Correction du positionnement du handle Rtl. (I6e1e0)
- Refactorisation de DrawScope et ContentDrawScope, qui deviennent des interfaces au lieu de classes abstraites.
- Création d'une implémentation CanvasDrawScope de DrawScope.
- Refactorisation des implémentations de DrawScope pour utiliser CanvasScope à la place.
- Création de DrawContext pour encapsuler les dépendances de DrawScope.
- Suppression des méthodes obsolètes sur DrawScope. (I56f5e)
- Modification destructive : la valeur renvoyée a été supprimée de
PointerInputFilter.onPointerEvent(...)
, car les données de consommation sont la seule valeur qui doit pouvoir être modifiée dans les événements de pointeur. Désormais, au lieu de renvoyer les données dePointerInputFilter.onPointerEvent(...)
, vous pouvez simplement modifier les données de consommation des PointerEvents transmis. (I6acd0) - Reclassement des champs MeasureScope et IntrinsicMeasureScope, désormais interfaces. (I1a087, b/170461665)
- Masquage de la fonction de fusion pour AlignmentLine. (I9da1a, b/170612900, b/170611568)
- Prise en charge de la spécification d'informations sur l'outil d'inspection dans le modificateur composé. (Idee08, b/163494569)
- Ajout de l'option SelectAll dans le menu de sélection. (Ief02b)
- Mise à jour de DrawTransform.rotate afin d'accepter un paramètre par défaut de pivot du centre au centre, conformément à la documentation.
- Mise à jour de DrawScope.rotateRad, afin de consommer un Offset décalant le point de pivot, de manière cohérente avec les autres méthodes de transformation.
- Abandon de la surcharge DrawScope.rotateRad qui consommait les Floats pour les coordonnées X et Y du point de pivot.
- (Iffcbb, b/170434992)
Correction de bugs
- Prise en charge de la vérification lint de l'API pour MissingGetterMatchingBuilder sous AndroidX. (I4bbea, b/138602561)
- Ajout d'un test. (I6b8ae)
- Prise en charge des transitions dans ComposeTestRule. L'option permettant d'activer le curseur clignotant dans ComposeTestRule a été supprimée. (If0de3)
- Ajout de l'option IME KeyboardCapitalization. (I8ac38)
- Ajout d'une option de clavier sur une seule ligne à CoreTextField. (I72e6d)
- Déplacement de SimpleContainer vers PopupTestUtils.kt. (I65c3e)
- Changement de nom : l'API Radius devient CornerRadius pour mieux refléter son utilisation dans Compose. La documentation a été mise à jour pour indiquer que les valeurs de rayon négatives sont limitées à zéro. (I130c7, b/168762961)
- Amélioration de l'interopérabilité Android : les MotionEvents continuent d'être envoyés aux vues Android enfants qui renvoient la valeur "false" pour onTouchEvent pour toutes les actions sauf
ACTION_DOWN
. (I94c5a, b/170320973) - Conversion de Box en fonction inline. (Ibce0c, b/155056091)
Contribution externe
- Prise en charge des variantes de paramètres régionaux pour
AnnotatedString.capitalize
etAnnotatedString.decapitalize
. (I4aa7f)
Version 1.0.0-alpha05
14 octobre 2020
Publication d'androidx.compose.ui:ui-*:1.0.0-alpha05
. Liste des commits de la version 1.0.0-alpha05
Modifications apportées à l'API
- Ajout d'une DSL pour spécifier les informations de l'outil d'inspection. (Ic9a22)
- Déplacement de LongPress vers Text. (Iff2bc)
- Ajout d'un modificateur de suspension d'entrée Modifier.pointerInput expérimental. (Ia77d2)
- Ajout d'actions d'accessibilité pour copier, coller et couper. (I6db4f)
- Suppression du constructeur public pour AndroidOwner. (Iacaef)
- Mise à jour des fenêtres pop-up et boîtes de dialogue, qui héritent désormais FLAG_SECURE de la fenêtre parente. Ajout d'une option permettant de configurer cela explicitement. (I64966, b/143778148, b/143778149)
Mise à jour des données de consommation, désormais modifiables. De plus, les appels des fonctions d'extension qui effectuent la consommation ne renvoient plus de nouveau PointerInputChange, mais modifient le PointerInputChange fourni.
Ce changement est la première des deux étapes d'un processus visant à rendre les données PointerEvent modifiables tout en empêchant les autres données de pointeur d'être modifiées par le code utilisateur. La deuxième étape consiste à supprimer le type renvoyé
List<PointerInputChange>
dePointerInputFilter.onPointerEvent(...)
. (Id067e)Désactivation de Selection dans Text, avec une démo. (Ie7e97)
Conversion de onGloballyPositioned en fonction Inline. (I15830)
Changement de nom : OnPositionedModifier devient OnGloballyPositionedModifier et onPositioned() devient onGloballyPositioned(). (I587e8, b/169083903)
Ajout de la propriété hasPendingMeasureOrLayout à Owner, indiquant si des tâches de mise en page sont en attente dans Owner. (I3d9f8, b/169038599)
Ajout d'une API permettant de programmer la désélection. (Ie1dc2, b/161487952)
Suppression de
PointerInputFilter.onPointerInput(...)
. UtilisezPointerInputFilter.onPointerEvent(...)
à la place. (I6f04a)Modifications apportées à Size :
- Suppression de Size.getFlipped.
- Suppression de Size.rem.
- Suppression de Size.truncDiv. (Ief44d, b/169790720)
Changement de nom : Color.Unset devient Color.Unspecified pour normaliser les valeurs sentinelles des classes inline et assurer la cohérence avec les autres classes inline. (I97611, b/169797763)
Introduction de TextOverflow.None. Si le dépassement est défini sur "None", Text ne le gère plus et renvoie sa taille réelle à LayoutNode. (I175c9, b/158830170)
Changement de nom : dans AnnotatedString.Builder.addStringAnnotation, le paramètre "scope" devient "tag" pour assurer la cohérence de l'API. (I7c8cb)
Correction de bugs
- Amélioration des performances de défilement de LazyColumn/Row grâce à une réduction de la charge de sous-composition pour chaque défilement. Ajout d'une nouvelle méthode hasInvalidations() à la classe Composition. La méthode hasPendingChanges() de Recomposer a été renommée hasInvalidations(). (Ib2f32, b/168293643, b/167972292, b/165028371)
- Mise à jour des paramètres Size.Unspecified pour utiliser Float.NaN au lieu de Float.POSITIVE_INFINITY. Mise à jour de l'implémentation de Painter pour vérifier les tailles Size.Unspecified et non finies. (I95a7e)
- Mise à jour des mises à en page personnalisées : l'ordre des appels place() y définit désormais l'ordre de dessin des éléments enfants. (Ibc9f6)
- Prise en charge de la conversion de AnnotatedString en SpannableString pour améliorer l'accessibilité. (Ief907)
- Ajout de bouchons pour les classes Android sur d'anciennes plates-formes afin d'éviter d'utiliser la réflexion lorsque cela est possible. (Ia1790)
- Correction d'un bug qui faussait les coordonnées d'entrée du pointeur lorsque l'affichage du clavier virtuel entraînait la traduction de l'application. (Ic4cec, b/163077821)
Version 1.0.0-alpha04
1er octobre 2020
Publication d'androidx.compose.ui:ui-*:1.0.0-alpha04
. Liste des commits de la version 1.0.0-alpha04.
Modifications apportées à l'API
- Ajout de OwnerScope pour permettre la collecte des champs d'application d'observation de la mise en page et du dessin lorsqu'ils ne sont plus valides. (Ic4cf8)
- Ajout de OnRemeasuredModifier et onSizeChanged() afin de recevoir un rappel lorsque la mise en page du contenu a été re-mesurée et que la taille a changé, respectivement. (I657cf, b/154108792)
- Ajout d'une action sémantique de clic long. (I6281b, b/156468846)
- Reclassement de FocusManager, désormais privé. (I7872f)
Mise à jour de l'implémentation, afin de créer une implémentation DrawCacheModifier dédiée au lieu d'ajouter des propriétés facultatives sur DrawModifier.
Mise à jour de la documentation pour différentes méthodes. (Ibd166)
Conversion de TextRange en inline pour éviter la création d'objets. (Id034b)
Mise à jour de PlacementScope#parentWidth and PlacementScope#parentLayoutDirection, qui ne peuvent plus être lus depuis le bloc de positionnement d'une mise en page personnalisée. (Icc1ae, b/168295623)
Ajout de AccessibilityScrollState aux propriétés sémantiques. (Ifeda9)
Introduction de Modifier.drawWithCache, permettant de créer des objets de dessin qui recréent de manière conditionnelle les dépendances basées sur des informations de taille ou d'état. (I376dc)
Suppression de ParagraphConstraints. La largeur est désormais transmise directement à Paragraph. (Ica712)
Correction de bugs
- Mise à jour de nombreuses API Graphics :
- Mise à jour des API de transformation du scaling et de la rotation, afin de consommer un seul paramètre Offset pour représenter les coordonnées du point de pivot, au lieu de paramètres flottants distincts pour les coordonnées abscisse-ordonnée dans DrawScope et DrawTransform.
- Suppression des méthodes Rect.expandToInclude et Rect.join.
- Mise à jour de la documentation concernant Radius afin de mentionner les ovales en plus des elliptiques.
- Ajout d'une documentation indiquant que le constructeur public de la classe inline Radius ne doit pas être appelé directement. En revanche, les objets Radius doivent être instanciés via leurs constructeurs de fonction.
- Suppression des API RoundRect permettant d'interroger les propriétés topRight, bottomRight, bottomCenter, etc.
- Abandon de Rect.shift, à remplacer par Rect.translate.
- Suppression des API RoundRect.grow et Rect.shrink.
- Changement de nom : RoundRect.outerRect devient Rect.boundingRect.
- Suppression des méthodes RoundRect.middleRect/tallMiddleRect/wideMiddleRect et Rect.isStadium.
- Changement de nom : RoundRect.longestSide devient RoundRect.maxDimension.
- Changement de nom : RoundRect.shortestSide devient RoundRect.minDimension.
- Conversion de la fonction RoundRect.center en propriété.
- Mise à jour du constructeur RoundRect pour consommer les propriétés de Radius plutôt que des paramètres individuels pour les valeurs abscisse-ordonnée du rayon.
- Suppression des API Size qui supposaient une forme rectangle dont l'origine était 0,0.
- Ajout d'une API de destruction à Radius.
- Migration de diverses fonctions d'extension RoundRect, converties en propriétés.
- (I8f5c7, b/168762961)
- Abandon de foundation.Box. Utilisez foundation.layout.Box à la place. (Ie5950, b/167680279)
- Changement de nom : Stack devient Box. L'ancienne version de Box est abandonnée au profit de la nouvelle dans compose.foundation.layout. Le nouveau comportement de Box consiste à empiler les enfants lorsqu'il y en a plusieurs. L'ancien comportement était comparable à celui de Column. (I94893, b/167680279)
- Abandon des paramètres de décoration de Box. Si vous souhaitez ajouter des décorations/marges intérieures à votre Box, utilisez plutôt des modificateurs tels que Modifier.background, Modifier.border et Modifier.padding. (Ibae92, b/167680279)
- Mise à jour de nombreuses API Graphics :
- Mise à jour des API DrawScope avec des méthodes de transformation axées sur les champs d'application pour indiquer que la transformation n'est appliquée qu'au sein du rappel et supprimée ensuite.
- Mise à jour de la documentation concernant clipPath, pour faire référence à Path plutôt qu'au rectangle arrondi.
- Correction des espacements dans la documentation pour le paramètre de droite dans clipPath.
- Changement de nom : DrawScope.drawCanvas devient drawIntoCanvas. Le paramètre "size" a été supprimé.
- Changement de nom : les paramètres dx/dy de la méthode d'encart deviennent "horizontal" et "vertical".
- Ajout d'une surcharge d'encart avec la même valeur d'encart pour les quatre limites.
- Suppression de la documentation concernant la méthode d'encart selon laquelle l'encart serait appliqué aux quatre côtés.
- Mise à jour de la documentation concernant la classe Rect.
- Mise à jour des commentaires sur les paramètres Rect pour correspondre au style kdoc.
- Suppression de Rect.join et Rect.expandToInclude.
- Création d'une surcharge pour Rect.translate(offset). Abandon de Rect.shift.
- (If086a, b/167737376)
- Annotation de rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled et textInputServiceFactory avec @VisibleForTesting, pour les reclasser en API interne et masquer leur kdoc. (I554eb, b/168308412)
- Suppression du SelectionContainer de Top pour désactiver la sélection par défaut et éviter un comportement inattendu. À la place, vous pouvez utiliser un sélecteur SelectionContainer de manière spécifique pour encapsuler le contenu qui doit être sélectionnable. (I8dfe0, b/158459594)
Version 1.0.0-alpha03
16 septembre 2020
Publication d'androidx.compose.ui:ui-*:1.0.0-alpha03
. Liste des commits de la version 1.0.0-alpha03
Modifications apportées à l'API
- Suppression des actions sémantiques de défilement vers l'avant/arrière. Ajout d'étapes dans AccessibilityRangeInfo. (Ia47b0)
- Suppression de
onInvalidate()
deOwner
.OwnedLayer
gère l'invalidation. (Ica72b, b/162061312) Suppression des méthodes d'opérateur dans l'API Size qui consomment des paramètres Offset. Le résultat de ces opérations est incertain et leur type est inattendu. Exemple : la combinaison size-offset devrait-elle renvoyer un décalage ou une taille résultante intégrant la différence ?
Nous avons également supprimé les méthodes obsolètes de la classe Size. (Iec902, b/166514214)
Correction de bugs
- Correction d'un problème d'affichage des éléments de LazyColumn, qui provoquait également des plantages dans certaines conditions. (Ibcf17, b/163066980, b/165921895)
- Abandon de DpConstraints et des APIs qui l'utilisaient. (I90cdb, b/167389835)
- Déplacement de
createAndroidComposeRule
etAndroidInputDispatcher
, deandroidx.ui.test.android
versandroidx.ui.test
. (Idef08, b/164060572) - Changement de nom : les usages de la gravité ont été renommés "align" ou "alignment" dans les API Layout. (I2421a, b/164077038)
- Ajout de onNode et d'autres méthodes globales sur ComposeTestRule, car les méthodes globales actuelles vont être abandonnées. (Ieae36)
Version 1.0.0-alpha02
2 septembre 2020
Publication d'androidx.compose.ui:ui-*:1.0.0-alpha02
. Liste des commits de la version 1.0.0-alpha02.
Modifications apportées à l'API
- Suppression d'un rappel qui notifiait Owner lorsque les limites de layoutnode étaient modifiées. (If654e, b/166106882)
- Prise en charge des paramètres filltype dans les chemins de graphiques vectoriels afin de permettre la découpe de formes conformément aux règles de remplissage des chemins evenOdd ou NonZero. (I43dd2)
- Conversion de Uptime et Velocity en classes inline. (I48f4a)
- Conversion de Duration en classe inline. (I565eb)
- Ajout d'un rappel pour notifier Owner lorsque les limites de layoutnode changent. (Ic40b3)
Résolution d'un problème de séquence de création : le constructeur d'une fonction Rect avec Offset et Radius créait le rectangle dans l'ordre gauche, droite, haut, bas au lieu de l'ordre gauche, haut, droite, bas.
Suppression des méthodes associées à Rect, devenues obsolètes, à remplacer par des constructeurs de fonction.
Ajout de tests pour valider les méthodes dans Rect.kt. (I08460, b/165822356)
Correction de bugs
- Ajout de MutableRect, un rectangle qui peut être modifié. (I71bd2, b/160140398)
- Remplacement de Matrix4 par Matrix. Toutes les autres parties du package vectormath ont été supprimées. (Ibd665, b/160140398)
Mise à jour de la convention d'appel des fonctions modulables. Ce changement constitue une modification destructive de la compatibilité binaire. Toutes les bibliothèques doivent être recompilées pour fonctionner avec cette version du plug-in de compilation de Compose.
Ce changement ne constitue pas une modification destructive de la compatibilité au niveau source, car les seules API qui ont été modifiées sont des API de compilation avec activation explicite. (I7afd2, b/158123185)
Correction d'un plantage qui pouvait survenir lorsque la distribution vers un PointerInputFilter pouvait simultanément entraîner la suppression de ce PointerInputFilter. (I58f25)
Version 1.0.0-alpha01
26 août 2020
Publication d'androidx.compose.ui:ui-*:1.0.0-alpha01
. Liste des commits de la version 1.0.0-alpha01
Version 0.1.0-dev
Version 0.1.0-dev17
19 août 2020
Publication d'androidx.compose.ui:ui-*:0.1.0-dev17
. Liste des commits de la version 0.1.0-dev17
Modifications apportées à l'API
- Abandon de
emitView
. Si possible, utilisez plutôtAndroidView
pour émettre des vues dans Compose. Notez que la composition directe de Views et ViewGroups ne sera pas prise en charge, sauf s'il s'agit de nœuds externes (leaf) dans l'arborescence de composition, lorsque cela est possible en utilisant AndroidView. (I29b1e, b/163871221) - Abandon de
FocusState2
, remplacé parFocusState
. (Ia8b79, b/160822876, b/160923332) - Suppression des surcharges AndroidView, devenues obsolètes. (I946b9, b/163802393)
- Les émissions personnalisées peuvent désormais déclarer qu'un ou plusieurs setters peuvent être ignorés et recomposés indépendamment de l'émission. (Ibbd13)
Reclassement des classes Vector, qui ne sont plus des classes de données, car la même instance d'objet est utilisée pour la composition.
Ajout de l'indicateur mutableStateOf pour VectorPainter, afin de redessiner de façon conditionnelle si le contenu du Vector change.
Refactorisation de l'instance VectorComponent pour l'intégrer à VectorPainter, car elle est réutilisée dans les différentes compositions.
Mise à jour de GroupComponent et PathComponent, dont les champs de nom sont désormais modifiables. (Ieae45, b/151378808)
Suppression de
onChildPositioned
etOnChildPositionedModifier
. Les développeurs doivent utiliseronPositioned
etOnPositionedModifier
à la place de la mise en page enfant. (I4522e, b/162109766)Conversion de Offset en classe inline. (Iaec70)
Ajout d'un paramètre de modificateur à SelectionContainer. (I4aada, b/161487952)
Suppression de FocusModifier, devenu obsolète. (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)
Ajout du lambda
mergePolicy
àSemanticsPropertyKey
. Cela permet de définir une règle personnalisée pour la fusion de la sémantique mergeAllDescendants. La règle par défaut consiste à utiliser la valeur du parent si elle est déjà présente, et la valeur de l'enfant dans le cas contraire. (Iaf6c4, b/161979921)Conversion de Constraints en classe inline. (I88736)
Ajout de FocusManager, qui déplace la logique de sélection commune hors de AndroidComposeView. (I528ef, b/161487952, b/162206799)
Mise à jour des noms de PointerEventPass pour la version alpha. (Ifda6f)
Conversion de IntOffset en classe inline. (Iac0bf)
Conversion de IntSize en classe inline. (I2bf42)
Changements de nom :
PlacementScope.placeAbsolute()
devientPlacementScope.place()
, tandis que le précédentPlacementScope.place()
devientPlacementScope.placeRelative()
. Par conséquent, la méthodePlacementScope.place()
ne met plus automatiquement en miroir la position dans les contextes lus de droite à gauche. Si cette approche est souhaitée, utilisez plutôtPlacementScope.placeRelative()
. (I873ac, b/162916675)Mise à jour de AlertDialog, qui utilise désormais FlowRow pour les boutons. (I00ec1, b/161809319, b/143682374)
Reclassement de certains utilitaires de test rendus non publics, car leur emplacement est incorrect. Ces éléments seront à nouveau rendus publics à l'avenir. (I32ab1)
Refactorisation de l'organisation du code d'entrée du pointeur. (Ie3f45)
Abandon de PxBounds, à remplacer par Rect. Mise à jour de toutes les utilisations de PxBounds avec remplacement par Rect et ajout des abandons/remplacements appropriés avec leurs annotations pour faciliter la migration. (I37038, b/162627058)
Suppression de KeyEvent2, devenu obsolète. Utilisez KeyEvent à la place. (Ied2d0, b/162097587)
KeyEvent comporte une propriété Unicode qui peut être utilisée pour obtenir le caractère Unicode généré par la combinaison des états des touches standard et méta spécifiées. (If3afc)
Conversion de l'événement personnalisé DelayUp et des classes associées en API avec activation, car il est très probable qu'ils soient modifiés. (I56d6f)
Suppression de deux PointerEventPass qui ne sont plus nécessaires. (I3dd9d)
Ajout des paramètres color, shadow et TextDecoration à Paragraph.paint. Cette fonction permet d'éviter une recréation inutile de Paragraph. (I81689)
Correction de bugs
- Suppression des rappels onFocusChanged de TextField. Utilisez Modifier.focusObserver à la place. (I51089, b/161297615)
- Abandon de Modifier.drawBorder. Utilisez Modifier.border à la place. Remplacement de la classe de données Border par BorderStroke. (I4257d, b/158160576)
Suppression des appels FrameManager, devenus obsolètes.
Mise à jour des API Compose internes pour réduire la charge nécessaire pour suivre des objets d'état tels que
mutableStateof()
. (I80ba6)Suppression de VerticalScroller and HorizontalScroller. Utilisez ScrollableColumn/Row à la place. Suppression de Modifier.drawBackground. Utilisez Modifier.background à la place. (I73b0d, b/163019183)
Correction d'un plantage qui survenait lorsqu'un élément qui enregistre l'état était utilisé dans la boucle "for". Il est désormais possible d'utiliser la même clé dans savedInstanceState(). L'API de UiSavedStateRegistry a été ajustée pour répondre à cette nouvelle exigence. (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
Abandon du composable
state { ... }
, à remplacer par des appels explicites àremember { mutableStateOf(...) }
pour plus de clarté. Cette approche réduit la surface globale de l'API et le nombre de concepts liés à la gestion des états, et correspond au modèleby mutableStateOf()
de délégation des propriétés de classe. (Ia5727)Changement de nom : RRect devient RoundRect, pour mieux correspondre aux conventions de nommage de Compose. Des constructeurs de fonctions similaires ont été créés et les constructeurs de fonction RRect ont été supprimés. (I5d325)
Version 0.1.0-dev16
5 août 2020
Publication d'androidx.compose.ui:ui-*:0.1.0-dev16
. Liste des commits de la version 0.1.0-dev16
Modifications apportées à l'API
- Abandon de OnChildPositioned. Utilisez OnPositioned sur l'enfant à la place. (I87f95, b/162109766)
- Abandon de setViewContent, à remplacer par setContent. (I7e497, b/160335130)
- Ajout de l'API AndroidViewBinding pour gonfler et composer des ressources de mise en page (basé sur ViewBinding). (I081c6)
- Remplacement de KeyEvent2 par KeyEvent. (I2d770, b/162097585)
- Prise en charge de la touche matérielle Alt. (I9036b)
- Abandon de FocusManager. Utilisez Modifier.focus(), Modifier.focusObserver() et Modifier.focusRequester() à la place. (I74ae4, b/162211322)
- Prise en charge des attributs trimPath par loadVectorResource. (I808fe)
- Déplacement de Dialog vers UI. (I47fa6)
- Suppression de deux PointerEventPass qui ne sont plus nécessaires. (I33ca7)
- Implémentation de PointerInteropModifier, qui permet de recevoir des MotionEvents et d'interagir avec Compose de manière identique à une vue Android. (Ieb08c)
- Suppression du modificateur tag, devenu obsolète. Utilisez layoutId à la place. (Idaa05, b/162023919)
- Mise à jour des API pour prendre en charge la lecture de droite à gauche. Ajout de LayoutDirectionAmbient, qui permet de lire et modifier la direction de la mise en page. Suppression de Modifier.rtl et Modifier.ltr. (I080b3)
- Prise en charge du raccordement des tracés d'éléments graphiques vectoriels. (Ie16c9, b/158188351)
- Ajout de Modifier.layout(), qui facilite la création de modificateurs de mise en page personnalisés. (I73b69, b/161355194)
- Ajout d'une nouvelle API AndroidView et abandon des anciennes. (I5bcfd)
- Abandon de Modifier.plus. Utilisez Modifier.then à la place. La forme "then" offre un signal d'ordination plus fort et interdit les saisies de type
Modifier.padding().background() + anotherModifier
, qui rompent la chaîne et sont plus difficiles à lire. (Iedd58, b/161529964) - Ajout des sous-classes de vue [Abstract]ComposeView pour accueillir le contenu Compose dans une hiérarchie de vues. (I46357)
- Conversion de
Row
etColumn
en fonctions inline, ce qui réduit considérablement la charge associée à leur utilisation. (I75c10) - Ajout de SubcomposeLayout. Il s'agit d'une primitive de bas niveau, qui permet de composer les enfants pendant la mesure. Cette option est utile si vous souhaitez, pour la composition de la sous-arborescence, utiliser pendant la mesure certaines des valeurs qui ne sont disponibles qu'après. Par exemple, WithConstraints n'est pas implémenté par SubcomposeLayout. (I25cc8)
- Ajout de
SemanticsNode.positionInRoot
, qui permet d'obtenir la position d'un SemanticsNode par rapport à la racine de la hiérarchie Compose. (Icdf26, b/161336532) - Mise à jour des MotionEvents, désormais transmis tout au long du parcours, d'Android, à Compose, puis renvoyés vers Android. (I14be8, b/158034713)
- Suppression de dropdownPopup. (I00430)
- Correction du positionnement de la fenêtre pop-up sur les écrans à découpe. (Idd7dd)
- Ajout d'une action d'accessibilité pour obtenir TextLayoutResult. (I9d6e6)
- Ajout de RemeasurementModifier, qui permet de re-mesurer la mise en page de manière synchrone. Ce n'est généralement pas nécessaire, car la re-mesure ou la remise en page se font automatiquement, mais cette option est utilisée dans LazyColumnItems pendant le défilement. (I5f331, b/160791058)
- Suppression de getLineEllipsisOffset/getLineEllipsisCount. Utilisez getLineVisibleEnd/getLineEnd/isLineEllipsized à la place. (I85aa2)
- Ajout de plusieurs marques et annotations pour adhérer aux bonnes pratiques. (I66b20)
- Augmentation du nombre d'API de ligne exposées dans TextLayoutResult. (I79bd2)
- Mise à disposition de convertisseurs vectoriels intégrés pour convertir les unités intégrées via Foo.VectorConverter (par exemple, Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter, etc.). (I3e273)
Correction de bugs
- Correctifs généraux apportés aux API. (I077bc)
- Suppression de l'interface OffsetBase, qui n'était pas utilisée.
- Alignement des classes Offset et IntOffset pour que la surface de l'API soit cohérente.
- Changement de nom : IntOffset.Origin devient IntOffset.Zero pour assurer la cohérence avec l'API Offset.
- Migration de la méthode nativeCanvas de l'interface de Canvas pour permettre aux consommateurs de créer leurs propres instances de Canvas.
- Création de la classe bouchon EmptyCanvas pour refactoriser DrawScope en un paramètre non nul, au lieu de lateinit, et ainsi garantir la non-nullabilité du champ.
- Application de la casse Pascal dans le nom des énumérations ClipOp.
- Application de la casse Pascal dans le nom des énumérations FilterQuality.
- Application de la casse Pascal dans le nom des énumérations StrokeJoin.
- Application de la casse Pascal dans le nom des énumérations PointMode.
- Application de la casse Pascal dans le nom des énumérations PaintingStyle.
- Application de la casse Pascal dans le nom des énumérations PathFillType.
- Application de la casse Pascal dans le nom des énumérations StrokeCap.
- Mise à jour de l'implémentation de DrawCache pour cesser d'utiliser les paramètres lateinit.
- Mise à jour de DrawScope pour cesser d'utiliser la délégation Lazy pour les paramètres internes fillPaint et strokePaint.
- Mise à jour du composable Image pour éviter l'utilisation de Box et réduire la charge.
- Mise à jour de la classe Outline pour inclure les annotations @Immutable.
- Mise à jour de PathNode pour inclure des annotations @Immutable à chaque instruction du tracé.
- Mise à jour de la sous-composition de Vector pour supprimer les vérifications conditionnelles redondantes d'égalité, car Compose les gère déjà.
- Abandon des méthodes de constructeur associées à Rect, à remplacer par des constructeurs de fonction.
- Mise à jour des classes Brush et des constructeurs de fonctions avec les API @Immutable et @Stable.
- Application de la casse Pascal dans le nom de l'énumération VertexMode.
- Mise à jour de la méthode selectPaint de DrawScope pour écraser de façon conditionnelle les paramètres de trait, si ceux-ci ont été modifiés.
- Mise à jour de Size pour ajouter une API de déstructuration. UnspecifiedSize est renommé Unspecified, et les méthodes inutilisées ont été supprimées.
- Mise à jour de la consommation de l'API BlendMode afin de correctement mapper les modes BlendMode et PorterDuff du framework Android en fonction du niveau de l'API. Introduction de l'API BlendMode#isSupported, pour permettre d'interroger la compatibilité de l'appareil avant d'utiliser le BlendMode. (I0ef42)
- Ajout de LazyItemScope pour le paramètre itemContent des listes Lazy. Il fournit des modificateurs pour remplir la taille maximale du parent, ce qui résout les cas où l'élément doit remplir la fenêtre d'affichage et où la méthode standard Modifier.fillMaxSize() ne fonctionne pas, car l'élément est mesuré avec des contraintes d'infinité. (Ibd3b2, b/162248854)
- Suppression de
SemanticsNodeInteraction.performPartialGesture
. UtilisezSemanticsNodeInteraction.performGesture
à la place. (Id9b62) - Changements de nom :
LazyColumnItems
devientLazyColumnFor
etLazyRowItems
devientLazyRowFor
. (I84f84) - Le package
foundation.shape.corner
a été aplati enfoundation.share
. (I46491, b/161887429) - Changement de nom :
AndroidComposeTestRule
devientcreateAndroidComposeRule
. (I70aaf) - Ajout d'API supplémentaires à
TextLayoutResult
. (Id7e04) - Changements de nom : Dans Material,
FilledTextField
devientTextField
. Dans Foundation,TextField
devientBaseTextField
pour faciliter l'identification et l'utilisation de l'API la plus simple. (Ia6242, b/155482676) - Changement de nom : Modifier.drawBackground devient Modifier.background. (I13677)
Version 0.1.0-dev15
22 juillet 2020
Publication d'androidx.compose.ui:ui-*:0.1.0-dev15
. Liste des commits de la version 0.1.0-dev15
Mise à jour des dépendances
- Pour utiliser la version
0.1.0-dev15
de Compose, vous devez mettre à jour vos dépendances en fonction des nouveaux extraits de code présentés dans la section Déclarer des dépendances ci-dessus.
Modifications apportées à l'API
- Abandon de FocusModifier, à remplacer par Modifier.focus, Modifier.focusRequester et Modifier.focusObserver. Abandon de FocusState et FocusDetailedState, à remplacer par FocusState2. (I46919, b/160822875, b/160922136)
- Ajout d'un modificateur pour observer le changement d'état de la sélection. (I05866, b/160924455, b/160923326)
- Ajout d'un modificateur pour demander des changements de sélection. (I8dd73, b/161182057, b/160924778)
- Ajustement du menu de la barre d'outils pour afficher correctement les options copy (copier), cut (couper) et paste (coller). (Id3955)
- Mise à jour des propriétés sémantiques à valeur unique, qui utilisent désormais un style d'appel.
Par exemple, "semantics { hidden = true }" s'écrit désormais
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412) - Ajout de Modifier.focus, qui remplace FocusModifier. (Ib852a, b/160924778)
- Ajout de FloatingToolbar pour la sélection de TextField. (Ie8b07)
- Ajout d'une annotation "API expérimentale" pour l'API liée à l'entrée de touches. (I53c0a)
- Ajout d'une annotation "API expérimentale" pour toutes les API liées à Focus. (I53b24, b/160903352)
- Ajout de FocusState2, qui remplacera FocusDetailsState. (I0a3ba, b/160822595)
- Ajout de ExperimentalFocus, une annotation @OptIn pour l'API Focus. (I1544b, b/160820961)
- Ajout d'une classe d'unités IntBounds, qui représentent les limites d'un nombre entier de pixels à partir de la mise en page. L'API de PopupPositionProvider a été mise à jour pour l'utiliser. (I0d8d0, b/159596546)
- Applier requiert désormais une méthode clear() pour supprimer les compositions. (Ibe697)
- Abandon de KeyEvent, à remplacer par KeyEvent2. (I68730)
- Ajout d'un indicateur facultatif useUnmergedTree aux outils de recherche des tests. (I2ce48)
- Conversion de LayoutNode en API expérimentale. (I4f2e9)
Ajout de méthodes de copie à divers types de classe inline, dont :
- Offset
- Size
- Radius
- Motion
TransformOrigin
Abandon de la méthode d'objet associée à Size.copy, à remplacer par une instance de méthode de copie. (Ife290, b/159905651)
Mise à jour des éléments Popup, Dialog et Menu, qui héritent désormais du MaterialTheme contextuel. (Ia3665, b/156527485)
Changement de nom : TextDirection devient ResolvedTextDirection. (I3ff38)
Suppression du paramètre de direction de la mise en page dans le bloc de mesure de la fonction Layout(). La direction de la mise en page reste disponible dans le rappel via l'objet de champ d'application de mesure. (Ic7d9d)
Refactorisation des SelectionHandles pour permettre de les réutiliser. (I420e0)
Suppression de Clickable. Utilisez Modifier.clickable à la place. (I84bdf)
Suppression de TestTag et Semantics. Utilisez Modifier.testTag et Modifier.semantics à la place. (I15ff0, b/158841414)
Avant cette modification, le plug-in de compilation de Compose interceptait de manière non triviale les appels de constructeurs dans une fonction @Composable lorsqu'une méthode "emit operator" était détectée dans le composeur résolu. Cette stratégie de résolution de l'appel prêtait à confusion et déviait des règles de résolution standard du Kotlin. Il s'agissait d'un concept vestigial ne faisant plus partie du modèle de réflexion qui structure Compose. (I5205a, b/158123804)
Changement de nom : Modifier.tag devient Modifier.layoutId pour éviter toute confusion avec Modifier.testTag. (I995f0)
Mise à jour des positions Int de la ligne d'alignement renvoyées par Placeable#get(AlignmentLine), désormais non nullables. Si la ligne d'alignement demandée n'est pas spécifiée, AlignmentLine.Unspecified sera renvoyé. (I896c5, b/158134875)
Ajout d'un paramètre de modificateur au composable AndroidView. (I48a88, b/158746303)
Abandon de Semantics(). Utilisez Modifier.semantics() à la place. (I72407, b/158841414)
Ajout d'un composable viewModel(), qui permet de créer ou d'obtenir un ViewModel existant, ce qui reflète son fonctionnement dans Activity ou Fragment. (I5fdd1)
Remplacement de l'utilisation de IntPx par Int. Remplacement de IntPxPosition par IntOffset. Remplacement de IntPxSize par IntSize. (Ib7b44)
Standardisation de l'utilisation de la classe Size (au lieu de PxSize) afin de regrouper les différentes classes utilisées pour représenter les informations de dimensionnement. Cela présente les avantages d'une classe inline permettant d'exploiter un long pour réunir deux valeurs flottantes qui représentent la largeur et la hauteur. (Ic0191)
Standardisation de l'utilisation de la classe Offset (au lieu de PxPosition), afin de regrouper les différentes classes utilisées pour représenter les informations de positionnement. Cela présente les avantages d'une classe inline permettant d'exploiter un long pour réunir deux valeurs flottantes qui représentent les valeurs de décalage abscisse-ordonnée. (I3ad98)
Remplacement des utilisations de la classe Px dans différentes classes de Compose, dans le cadre d'une refactorisation généralisée qui vise à ne plus utiliser que les types Dp et primitifs pour les paramètres de pixel. La classe Px a été complètement supprimée. (I3ff33)
Remplacement des utilisations de la classe Px dans différentes classes de Compose, dans le cadre d'une refactorisation généralisée qui vise à ne plus utiliser que les types Dp et primitifs pour les paramètres de pixel. (I086f4)
Remplacement des utilisations de la classe Px dans différentes classes de Compose, dans le cadre d'une refactorisation généralisée qui vise à ne plus utiliser que les types Dp et primitifs pour les paramètres de pixel. (Id3434)
Remplacement des utilisations de la classe Px dans différentes classes de Compose, dans le cadre d'une refactorisation généralisée qui vise à ne plus utiliser que les types Dp et primitifs pour les paramètres de pixel. (I97a5a)
Abandon de TestTag. Utilisez Modifier.testTag à la place. (If5110, b/157173105)
Suppression de la mise en œuvre no-op par défaut de ParentDataModifier#modifyParentData, qui équivalait à ne pas implémenter l'interface. (I0deaa)
Suppression de ScaleFit, devenu obsolète. Utilisez ContentScale à la place. (Ifbc5b)
Remplacement des utilisations de la classe Px dans différentes classes de Compose, dans le cadre d'une refactorisation généralisée qui vise à ne plus utiliser que les types Dp et primitifs pour les paramètres de pixel. (I19d02)
Ajout du composant DropdownMenu dans ui-material, une implémentation de menu Material Design. (I9bb3d)
Suppression de LayoutTag(), devenu obsolète. Utilisez Modifier.tag() à la place. Suppression de Modifier.matchParent(), devenu obsolète. Utilisez Modifier.matchParentSize() à la place. (If8044)
Remplacement des utilisations de la classe Px dans différentes classes de Compose, dans le cadre d'une refactorisation généralisée qui vise à ne plus utiliser que les types Dp et primitifs pour les paramètres de pixel. (I57bff)
Restauration de Modifier.semantics (précédemment abandonné) pour permettre son utilisation avec des composants de haut niveau. (I4cfdc)
Regroupement des implémentations de CanvasScope, pour ne laisser que DrawScope et ContentDrawScope. CanvasScope est renommé DrawScope. Mise à jour de DrawScope afin d'implémenter l'interface Density et de fournir LayoutDirection. La sous-classe DrawScope de ContentDrawScope a été supprimée. Painter et PainterModifier ont été mis à jour, et ne maintiennent plus par eux-mêmes la propriété RTL, déjà fournie par DrawScope sans intervention manuelle. (I1798e)
Mise à jour de DoubleTapGestureFilter, qui distingue désormais SingleTapGestureFilter dans l'arborescence. (If92b1)
Mise à jour de l'API Alignment et prise en charge de l'alignement absolu (sans mise en miroir automatique dans un contexte de lecture de droite à gauche). (I38cd3)
Mise à jour de l'API de modificateurs DrawLayer : outlineShape renommé en shape, 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)
Modification de l'API de lambda de fin de WithConstraints. Au lieu de deux paramètres, elle possède un champ d'application receveur qui, outre les contraintes et layoutDirection, fournit les propriétés minWidth, maxWidth, minHeight et maxHeight dans Dp. (I91b9a, b/149979702)
Changement de nom : LayoutModifier2 devient LayoutModifier. (Id29f3)
Suppression de l'interface LayoutModifier, devenue obsolète. (I2a9d6)
Mise à jour des fonctions de mesures intrinsèques dans Layout et LayoutModifier2, qui disposent désormais d'un receveur pour IntrinsicMeasureScope, fournissant une direction de mise en page implicite à l'API qui interroge les fonctionnalités intrinsèques. (Id9945)
Mise à jour de Layout et LayoutModifier, dont les enfants peuvent désormais être mesurés avec une direction de mise en page différente. (Ibd731)
Ajout de Modifier.zIndex(), qui permet de contrôler l'ordre d'affichage des éléments enfants dans une même mise en page parente. La propriété "elevation" de DrawLayerModifier est renommée shadowElevation et ne contrôle plus l'ordre d'affichage. Modification des paramètres d'ordre pour DrawShadow : l'élévation est désormais le premier et la forme, le deuxième, avec RectangleShape comme valeur par défaut. (I20150, b/152417501)
Suppression de onSizeChange et onPositionChange dans Owner. (I5c718)
Ajout de Constraints2, une copie de Constraints qui n'est compatible qu'avec les valeurs de contrainte Int (au lieu de IntPx). IntPx sera supprimé et toutes les contraintes d'entier seront considérées comme des pixels, comme sous Android.
- Ajout de IntSize, qui remplacera à terme IntPxSize. (I4b43a)
Mise à jour de Alignment, désormais instanciable avec des valeurs arbitraires. Ajout d'alignements en 1D. (Ia0c05)
Mise à jour de alignToSiblings, qui accepte désormais un élément Measured au lieu de Placeable. (I5788d)
-
- Changement de nom : ScaleFit devient ContentScale.
- Déplacement de ContentScale de ui-graphics vers le module ui-core, pour coexister avec l'API Alignment.
- Changement de nom : FillMaxDimension devient Crop.
- Changement de nom : FillMinDimension devient Fit.
- Changement de nom : Fit devient Inside, pour mieux correspondre
- aux équivalents ImageView.ScaleType.
- Ajout d'une documentation indiquant que la combinaison de Crop et Alignment.Center produit le même résultat que ImageView.ScaleType.CENTER_CROP, que la combinaison de Fit et Alignment.Center produit le même résultat que ImageView.ScaleType.FIT_CENTER, et que la combinaison de Inside et Alignment.Center produit le même résultat que ImageView.ScaleType.CENTER_INSIDE.
Prise en charge de la lecture Rtl pour les modificateurs de dessin. (I0aaf9)
Publication d'une API permettant de gonfler les vues Android à partir d'un fichier XML. Pour en savoir plus, consultez la démo de ViewInCompose. (I42916)
Améliorations apportées à l'API DrawModifier :
- Mise à jour de ContentDrawScope, qui sert de champ d'application receveur pour draw().
- Suppression de tous les paramètres de draw().
- Mise à jour de DrawScope, qui utilise désormais la même interface que l'ancienne forme CanvasScope.
- Ajout de la méthode drawContent() à ContentDrawScope. (Ibaced, b/152919067)
Ajout de positionInParent et boundsInParent pour LayoutCoordinates. (Icacdd, b/152735784)
Mise à jour de DrawLayerModifier et drawLayer(), qui définissent désormais clipToBounds et clipToOutline sur "false" par défaut. (I0eb8b, b/152810850)
Changement de nom : LayoutResult devient MeasureResult. (Id8c68)
Ajout de LayoutModifier2, une nouvelle API permettant de définir des modificateurs de mise en page. Abandon de LayoutModifier. (If32ac)
Remplacement de l'opérateur plus du modificateur par des fonctions d'extension de fabrique. (I225e4)
Ajout de propriétés de translation abscisse-ordonnée pour permettre le décalage de la liste d'affichage des commandes de dessin pour un calque donné. Cette option est utile pour déplacer du contenu en réponse à des animations ou des événements tactiles. (I8641c)
Ajout des paramètres pivotX et pivotY aux API Layer pour permettre la rotation et le scaling autour d'un point particulier du calque. (Icf7c3)
Ajout de OnPositionedModifier et OnChildPositionedModifier pour remplacer les fonctions composables OnPositioned et OnChildPositioned. (I2ec8f)
Ajout de LayerModifier, un modificateur qui permet d'ajouter un RenderNode à une mise en page. Cette option permet de définir le rognage, l'opacité, la rotation, le scaling et les ombres. Cette action remplacera RepaintBoundary. (I7100d, b/150774014)
Propagation de la direction de la mise en page du nœud de mise en page du parent aux enfants. Ajout d'un modificateur de direction de la mise en page. (I3d955)
Prise en charge de l'orientation de lecture de droite à gauche pour le composant Stack. (Ic9e00)
Prise en charge initiale de la lecture de droite à gauche (RTL) dans les mises en page Compose. (Ia5519)
Fusion de Density et DensityScope en une seule interface. Vous pouvez désormais utiliser DensityAmbient.current au lieu d'ambientDensity(), et with(density) au lieu de withDensity(density). (I11cb1)
Mise à jour de LayoutCoordinates, pour définir providedAlignmentLines comme Set au lieu de Map, et faire en sorte que LayoutCoordinates implémente plutôt l'opérateur get() pour récupérer une valeur. Ce changement permet aux modificateurs de modifier plus facilement une ou plusieurs valeurs du Set sans devoir créer une collection pour chaque modificateur. (I0245a)
Suppression de la propriété position de LayoutCoordinates. Cette propriété n'était pas pertinente vis-à-vis de LayoutModifiers, de la rotation ou du scaling. À la place, les développeurs doivent utiliser parentCoordinates et childToLocal() pour calculer la transformation d'une LayoutCoordinate en une autre.
LayoutCoordinates utilise IntPxSize au lieu de PxSize pour la propriété de taille. Les mises en page utilisent un nombre entier de pixels pour définir les tailles. Toutes les tailles doivent être définies en nombres entiers et sans valeurs à virgule flottante. (I9367b)
Améliorations apportées à la surface de l'API Constraints. (I0fd15)
Création d'une API CanvasScope qui encapsule un objet Canvas afin d'exposer une surface d'API de dessin déclarative sans état. Les transformations sont contenues dans leur propre champ d'application receveur, et les informations de dimensionnement sont également limitées aux encarts correspondants. Un consommateur n'a pas besoin de gérer son propre objet d'état Paint pour configurer les opérations de dessin.
- Ajout de CanvasScopeSample et mise à jour de l'application de démonstration pour inclure une démo pour les éléments graphiques déclaratifs. (Ifd86d)
Suppression de l'API MaskFilter, qui n'était pas utilisée, car limitée et non optimisée pour l'accélération matérielle dans la plupart des cas d'utilisation. (I54f76)
Déplacement de RectangleShape de androidx.ui.foundation.shape.* vers androidx.ui.graphics.*. (Ia74d5, b/154507984)
Remplacement de toutes les utilisations nullables de Color dans l'API par des versions non nullables, avec Color.Unset en cas de valeur nulle. (Iabaa7)
Introduction d'un paramètre rect facultatif dans ImagePainter pour permettre le tracé d'une sous-section d'un ImageAsset sous-jacent. (I0ea9e)
Ajout de Unset Color pour représenter une valeur non définie sans boxing de Colors. (If901a)
Ajout des méthodes d'extension Canvas.rotate et Canvas.scale afin de consommer des coordonnées de pivot facultatives pour les transformations. Leur valeur par défaut est celle de l'angle supérieur gauche de la translation actuelle du Canvas.
Conversion de Canvas.rotateRad en méthode d'extension, pour plus de cohérence. (Ibaca6)
Création d'une API PixelMap permettant d'interroger les informations de pixel à partir d'un ImageAsset. (I69ad6)
Changement de nom : toFrameworkRect et toFrameworkRectF deviennent toAndroidRect et toAndroidRectF, pour correspondre à la convention de nommage des conversions d'objet entre Compose et les API du framework Android servant de base. La documentation concernant ces API a été mise à jour. (I86337)
Ajout de l'API VectorPainter pour remplacer l'API de sous-composition existante pour les éléments graphiques vectoriels. Le résultat de la sous-composition est désormais un objet VectorPainter au lieu d'un DrawModifier. Les anciens composables DrawVector sont abandonnés au profit de VectorPainter.
L'API Image(Painter) est renommée PaintBox(Painter), et un composable Vector a été créé (comportement identique au composable Image, avec un VectorAsset au lieu d'un ImageAsset). (I9af9a, b/149030271)
Changement de nom : Image devient ImageAsset, afin de mieux distinguer les données Image et le composable Image à venir, qui servira à la mise en page et à l'affichage du contenu. Création d'une méthode d'extension asImageAsset sur android.graphics.Bitmap, afin de créer une instance d'ImageAsset utile pour combiner le développement d'applications Android traditionnelles avec le framework Compose. (Id5bbd)
Ajout de TextDirection.Content. (I48f36)
Ajout de l'opérateur TextDecoration.plus. (I0ad1a)
Suppression de
Force
des valeurs d'énumération TextDirectionAlgorithm. (Icc944)Changement de nom : TextDirectionAlgorithm devient TextDirection (I75ce8)
Implémentation de LongPressAndDrag pour la sélection de TextField. (I17919)
Ajout de AnnotatedString.getStringAnnotations, qui renvoie toutes les annotations de la plage. (I1fa00)
Changement de nom : le package androidx.ui.text devient androidx.ui.intl pour Locale et LocaleList. (I8132c)
Ajout d'une animation de clignotement au curseur de TextField. (Id10a7)
Changement de nom : l'API AnnotatedString(builder: Builder) devient annotatedString(builder: Builder). (Ia6377)
Changement de nom : l'API AnnotatedString.Item devient AnnotatedString.Range. (I2d44d)
Changement de nom : AnnotatedString.Builder.addAnnotationString devient addStringAnnotation. (I5059e)
Mise à jour de SoftwareKeyboardController, qui permet désormais de masquer/afficher le clavier virtuel (fourni par un rappel onTextInputStarted). (I8dc44, b/151860051)
Ajout d'un opérateur "Plus" pour (Text/Paragraph/Span)Style, qui délègue à la fonction merge(). (Ia1add)
Suppression de l'ancrage dans FontWeight.lerp, qui reste une classe de données. (I521c2)
Mise à jour du constructeur FontWeight, qui est désormais public, mais n'est plus une classe de données. (Id6b1f)
Ajout de getLineStart, getLineEnd, getEllipsisOffset et getEllipsisCount à TextLayoutResult. (Ibc801)
Changement de nom : le module ui-text devient ui-text-core. (I57dec)
Suppression d'une classe Size, qui n'était pas utilisée, car elle existait en double et son équivalent dans le module ui-geometry était consommé. (I1b602)
Ajout de AdapterList, un composant de liste déroulante qui ne fait que composer et mettre en page les éléments visibles. Problèmes connus : ce composant est exclusivement vertical et ne prend pas correctement en charge certains cas de modifications apportées à ses enfants. (Ib351b)
Ajout de paramètres de marge intérieure, bordure, forme et arrière-plan à Box. (I05027, b/148147281)
Correction de bugs
- Changement de nom : le rappel onFocusChange dans les champs de texte devient onFocusChanged. (Ida4a1)
- Abandon de VerticalScroller et HorizontalScroller. Utilisez ScrollableColumn et ScrollableRow pour une expérience intégrée avec le comportement et les paramètres de Column/Row. Utilisez Modifier.verticalScroll et Modifier.horizontalScroll pour contrôler ces aspects dans votre propre élément. ScrollerPosition a également été abandonné, au profit de ScrollState. (I400ce, b/157225838, b/149460415, b/154105299)
- Changement de nom :
runOnIdleCompose
devientrunOnIdle
. (I83607) - Changement de nom de plusieurs API de test pour une identification plus intuitive. Toutes les API findXYZ ont été renommées onNodeXYZ. Toutes les API doXYZ ont été renommées performXYZ. (I7f164)
- Compose UI peut maintenant être composée dans des ViewGroups sans nécessiter de nouvelle composition. Reportez-vous à ViewInteropDemo pour un exemple. (I9ab0b, b/160455080)
- Ajout de sortWith et removeRange à MutableVector. (Icccf7)
- Implémentation de poignées de sélection de déplacement pour modifier la sélection de TextField. (I27032)
- Suppression de la classe inline Shader, qui encapsulait la classe attendue NativeShader. NativeShader a été renommée Shader. La classe Shader encapsulée n'ajoutait rien d'utile à la surface de l'API et était une classe inline. Utilisez la classe NativeShader directement à sa place. (I25e4d)
Refactorisation de PainterModifier, qui ne fournit plus de scaling basé sur les contraintes et le paramètre ContentScale fournis. Les implémentations de Painter devront appliquer leur propre scaling aux éléments affichés, en fonction des dimensions du DrawScope de destination.
Résolution d'un problème de dimensionnement à cause duquel le bitmap du cache de VectorPainter appliquait sa taille par défaut au lieu de la taille indiquée.
Mise à jour de ImagePainter, qui applique désormais son propre scaling de contenu au lieu de laisser PainterModifier le faire à sa place. (I6ba90)
Ajout d'une fonction de premier niveau withFrameNanos pour le minutage des animations. (Ie34c5)
Abandon de l'annotation @Untracked, remplacée par @ComposableContract(tracked=false). (Id211e)
Abandon de androidx.ui.foundation.TextFieldValue et androidx.ui.input.EditorValue, ainsi que des composables TextField, FilledTextField et CoreTextField, qui utilisaient le même type. Utilisez androidx.ui.input.TextFieldValue à la place. (I4066d, b/155211005)
Correction d'un problème de plantage qui survenait lorsque PointerInputFilters était supprimé via la sous-composition pendant la distribution des entrées du pointeur. Ce problème est désormais résolu. (I1f48b, b/157998762)
Correction d'un problème de plantage qui survenait lorsque PointerInputFilters était supprimé via la sous-composition pendant la distribution des entrées du pointeur. Ce problème est désormais résolu. (Iab398, b/157998762)
Refactorisation de la classe Radius en classe inline. Les méthodes de création associées ont été supprimées et sont à remplacer par un constructeur de fonction avec par défaut un paramètre de rayon sur l'axe des ordonnées (y) correspondant au paramètre obligatoire de rayon sur l'axe des abscisses (x).
Mise à jour de DrawScope.drawRoundRect afin de consommer un seul paramètre de rayon au lieu de deux valeurs flottantes distinctes pour le rayon sur les axes x et y. (I46d1b)
Reclassement du composable Recompose, qui n'est plus une abstraction utile. La plupart des recompositions devraient faire suite aux attributions MutableState. Pour les autres cas, nous vous recommandons d'utiliser la fonction
invalidate
pour déclencher une recomposition du champ d'application actuel. (Ifc992)Remplacement des utilisations de la classe Px dans différentes classes de Compose, dans le cadre d'une refactorisation généralisée qui vise à ne plus utiliser que les types Dp et primitifs pour les paramètres de pixel. (Iede0b)
Mise à jour de la stratégie de génération de code du compilateur de Compose. Avant la modification, le compilateur Compose transformait les appels en fonctions modulables. Suite à la modification, la compilation transforme le corps d'une fonction modulable, mais laisse le site d'appel essentiellement inchangé.
Cela signifie que la majeure partie de la logique qui communique avec l'environnement d'exécution de Compose est appliquée au début du corps de la fonction, et non au site d'appel.
Ce changement devrait préserver la compatibilité avec la source pour toutes les utilisations de Compose. La plupart des utilisateurs de Compose ne devraient pas avoir à modifier leur code suite à ce changement.
La signature JVM de toutes les fonctions modulables a été modifiée pour mettre en œuvre ce changement. Les fonctions modulables qui acceptent un seul paramètre sont transformées en fonctions acceptant trois paramètres. Les paramètres supplémentaires sont le Composer, un entier "clé" et un entier de masque de bits servant à propager les métadonnées via des appels.
Désormais, Compose transforme également les arguments par défaut en fonctions modulables, mais sans introduire de surcharge synthétique supplémentaire par défaut pour les fonctions elles-mêmes. Par conséquent, le nombre de fonctions définies sera réduit.
Ce changement introduit des modifications intentionnelles des comportements :
- Certains appels qui ne l'étaient pas auparavant seront désormais ignorés.
- Les expressions modulables dans les expressions d'argument par défaut sont désormais correctement suivies et gérées.
Cette mise à jour introduit également des optimisations : 1. Le résultat des comparaisons de paramètres est propagé dans le graphique d'appel vers d'autres fonctions modulables. Cela permet de réduire le nombre de comparaisons lors de l'exécution, de réduire la taille de la table d'emplacements et d'ignorer davantage des fonctions modulables qui n'étaient auparavant pas ignorées. 2. Les paramètres déterminés comme statiques au moment de la compilation ne sont plus comparés ni stockés dans l'environnement d'exécution. Cela permet de réduire le nombre de comparaisons et la taille des tables d'emplacements. 3. La structure de contrôle du corps des fonctions permet de réduire le nombre de groupes générés. Cela réduit la taille de la table d'emplacements et réduit la charge de travail de l'environnement d'exécution. 4. Les paramètres de distribution et de destinataire qui ne sont pas utilisés dans le corps de la fonction ne sont plus pris en compte pour déterminer si une fonction peut être ignorée.
La plupart des modifications destructives concernent les API que le compilateur cible directement. L'utilisation typique de Compose n'est pas affectée : 1. Composer::startExpr a été supprimé ; 2. Composer::endExpr a été supprimé ; 3. Composer::call a été abandonné ; 4. Les surcharges sans varargs de
key
ont été supprimées. À l'avenir, utilisez la versionvararg
. 5. L'annotation Pivotal a été abandonnée. Utilisezkey
à la place. 6. ScopeUpdateScope::updateScope a été modifié afin d'attendre un Function3 au lieu d'un Function1. 7. restartableFunction et restartableFunctionN ont été mis à jour pour inclure des paramètres de temps de compilation supplémentaires (I60756, b/143464846)Suppression des modificateurs LayoutAlign, devenus obsolètes. (I10877)
Suppression de RepaintBoundary, à remplacer par DrawLayerModifier. (I00aa4)
Ajout d'un paramètre
enabled
distinct à Button, FloatingActionButton et Clickable. Certains paramètres de Button ont été renommés ou réorganisés. (I54b5a)Remplacement de ButtonStyle par des fonctions distinctes et suppression de la surcharge de texte (chaîne). Consultez les exemples mis à jour pour plus d'informations sur la mise en œuvre. (If63ab, b/146478620, b/146482131)
Modifications destructives apportées à l'API Ambients. Pour en savoir plus, consultez le journal et la documentation sur
Ambient<T>
. (I4c7ee, b/143769776)Modification du comportement de TextDirection par défaut, afin qu'il soit déterminé par LayoutDirection. Par exemple, si LayoutDirection est en lecture de droite à gauche (RTL), TextDirection sera RTL par défaut. Auparavant, il était géré par TextDirection.ContentOrLtr/Rtl (I4e803).
Correction d'un bug qui empêchait le texte de s'afficher correctement lorsque l'épaisseur et le style de la police étaient imbriqués sur une AnnotatedString. (I77a9d)
Ajout de paramètres couramment utilisés à Text(). Si vous créez un style de texte local permettant de transmettre un petit nombre de ces paramètres ; par exemple, Text(style = TextStyle(textAlign = TextAlign.Center)), vous pouvez désormais indiquer les paramètres directement : Text(textAlign = TextAlign.Center). (I82768)
Changement de nom : le module ui-android-text devient ui-text-android. (I68cbe)