WindowManager

La bibliothèque Jetpack WindowManager permet aux développeurs d'applications d'exploiter de nouveaux facteurs de forme d'appareil et de nouveaux environnements multifenêtres. La bibliothèque fournit une surface d'API commune pour les versions d'API 14 et ultérieures. La version initiale cible les appareils pliables, mais les versions ultérieures incluront d'autres types d'affichages et fonctionnalités de fenêtre.
Dernière mise à jour Version stable Version finale Version bêta Version alpha
14 mai 2024 1.2.0 1.3.0-rc01 - -

Déclarer des dépendances

Pour ajouter une dépendance à WindowManager, vous devez ajouter le dépôt Maven de Google à votre projet. Pour en savoir plus, consultez la section Dépôt Maven de Google.

Ajoutez les dépendances des artefacts dont vous avez besoin dans le fichier build.gradle de votre application ou module :

Groovy

dependencies {
    implementation "androidx.window:window:1.2.0"

    // For Java-friendly APIs to register and unregister callbacks
    implementation "androidx.window:window-java:1.2.0"

    // For RxJava2 integration
    implementation "androidx.window:window-rxjava2:1.2.0"

    // For RxJava3 integration
    implementation "androidx.window:window-rxjava3:1.2.0"

    // For testing
    implementation "androidx.window:window-testing:1.2.0"
}

Kotlin

dependencies {
    implementation("androidx.window:window:1.2.0")

    // For Java-friendly APIs to register and unregister callbacks
    implementation("androidx.window:window-java:1.2.0")

    // For RxJava2 integration
    implementation("androidx.window:window-rxjava2:1.2.0")

    // For RxJava3 integration
    implementation("androidx.window:window-rxjava3:1.2.0")

    // For testing
    implementation("androidx.window:window-testing:1.2.0")
}

Commentaires

Vos commentaires nous aident à améliorer Jetpack. N'hésitez pas à nous contacter si vous découvrez de nouveaux problèmes ou si vous avez des idées pour améliorer cette bibliothèque. Veuillez consulter les problèmes existants de cette bibliothèque avant d'en signaler un nouveau. Vous pouvez ajouter votre vote à un problème existant en cliquant sur le bouton en forme d'étoile.

Signaler un nouveau problème

Pour en savoir plus, consultez les documents sur l'outil Issue Tracker.

Version 1.3

Version 1.3.0-rc01

14 mai 2024

WindowManager Jetpack 1.3 est compatible avec la multiplateforme Kotlin pour les fonctionnalités WindowSizeClass, ainsi que plusieurs corrections de bugs.

Publication d'androidx.window:window-*:1.3.0-rc01. La version 1.3.0-rc01 contient ces commits.

Version 1.3.0-beta02

1er mai 2024

Publication d'androidx.window:window-*:1.3.0-beta02. La version 1.3.0-beta02 contient ces commits.

Modifications apportées à l'API

  • Suppression de la prise en charge de la création et de l'utilisation de WindowSizeClass personnalisés. (Id1143).

Correction de bugs

  • Correction de KotlinReflectionInternalError causé par ProGuard qui supprime certains fichiers sur certaines implémentations d'appareil. (I01b02).

Version 1.3.0-beta01

3 avril 2024

Publication d'androidx.window:window-*:1.3.0-beta01. La version 1.3.0-beta01 contient ces commits.

Version 1.3.0-alpha03

6 mars 2024

Publication d'androidx.window:window-*:1.3.0-alpha03. La version 1.3.0-alpha03 contient ces commits.

Modifications apportées à l'API

  • Division de WindowSizeClassUtil en méthodes plus ciblées. (Ie9292).
  • Restauration de WindowSizeClass#compute. (I21355, b/324293374)

Correction de bugs

  • Correction du plantage qui entraînait la désencapsulation du contexte fourni correctement. (94d10ce , b/318787482).

Version 1.3.0-alpha02

7 février 2024

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

Nouvelles fonctionnalités

  • Mises à jour apportées à la surface de l'API des API de classe de taille de fenêtre afin d'améliorer la flexibilité pour les développeurs qui souhaitent utiliser leurs propres classes de taille.

Modifications apportées à l'API

  • Ajoutez des contraintes de hauteur au sélecteur de largeur. (I23393).
  • Ajoutez des fonctions utilitaires pour choisir un WindowSizeClass dans un ensemble. Ajoutez des fonctions d'évaluation expérimentales afin que les développeurs puissent écrire leurs propres sélecteurs. Ajoutez une fonction d'extension du sélecteur pour choisir la WindowSizeClass la plus large dans une limite donnée. (I0c944).
  • Ouvrez le constructeur WindowSizeClass pour pouvoir ajouter des points d'arrêt personnalisés. (Ic1ff3).
  • Ajout d'une fonction pratique permettant de créer une classe de taille à partir de la largeur, de la hauteur et de la densité. (If67f4).

Correction de bugs

  • Correction de l'exception survenant lorsque la valeur flottante était tronquée à 0. (272ffac).

Version 1.3.0-alpha01

15 novembre 2023

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

Nouvelles fonctionnalités

  • API de fenêtres expérimentales pour accéder à l'écran arrière.
  • Les API de test pour créer une FoldingFeature sont dorénavant stables.
  • Les API de test pour configurer des valeurs ActivityEmbedding sont dorénavant stables.
  • WindowLayoutInfoPublisherRule signale désormais le forçage lors de l'obtention d'une valeur venant d'un UiContext.
  • WindowInfoTracker rapporte les données des caractéristiques de pliage aux paramètres UiContext.
  • Exposez la version des extensions sur l'appareil.
  • Constantes WindowProperties pour les remplacements par utilisateur et par application :
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE : informe le système que l'application a désactivé le remplacement de compatibilité des formats visibles par l'utilisateur.
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE : informe le système que l'application a désactivé l'option plein écran des paramètres de remplacement de la compatibilité du format de l'utilisateur.

Version 1.2

Version 1.2.0

15 novembre 2023

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

Changements importants depuis la version 1.1.0

  • API de fenêtres expérimentales pour accéder à l'écran arrière.
  • Les API de test pour créer une FoldingFeature sont dorénavant stables.
  • Les API de test pour configurer des valeurs ActivityEmbedding sont dorénavant stables.
  • WindowLayoutInfoPublisherRule signale désormais le forçage lors de l'obtention d'une valeur venant d'un UiContext.
  • WindowInfoTracker rapporte les données des caractéristiques de pliage aux paramètres UiContext.
  • Exposez la version des extensions sur l'appareil.

Version 1.2.0-rc01

1er novembre 2023

Publication d'androidx.window:window-*:1.2.0-rc01. Liste des commits de la version 1.2.0-rc01.

Nouvelles fonctionnalités

  • API de fenêtres expérimentales pour accéder à l'écran arrière.
  • Les API de test pour créer une FoldingFeature sont dorénavant stables.
  • Les API de test pour configurer des valeurs ActivityEmbedding sont dorénavant stables.
  • WindowLayoutInfoPublisherRule signale désormais le forçage lors de l'obtention d'une valeur venant d'un UiContext.
  • WindowInfoTracker rapporte les données des caractéristiques de pliage aux paramètres UiContext.
  • Exposez la version des extensions sur l'appareil.

Version 1.2.0-beta04

18 octobre 2023

Publication d'androidx.window:window-*:1.2.0-beta04. Liste des commits de la version 1.2.0-beta04

Modifications apportées à l'API

Version 1.2.0-beta03

20 septembre 2023

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

Nouvelles fonctionnalités

  • Ajout de vérifications RequiresApi pour les API qui nécessitent une version spécifique des extensions pour fonctionner correctement.
  • Ajoutez une API pour exposer la version des extensions sur l'appareil.

Modifications apportées à l'API

  • Annotez la version de l'extension SDK de fenêtre requise dans les API publiques.
    • Supprimez isXXXSupported du composant d'intégration d'activités. (Ie3dae).
  • Introduction de WindowSdkExtensions pour signaler la version de l'extension sur l'appareil.
    • Introduisez RequiresWindowSdkExtension pour annoter la version minimale de l'extension requise. (I05fd4).
  • Rend WindowAreaInfo#getCapability non nullable. (I17048).

Version 1.2.0-beta01

26 juillet 2023

Publication d'androidx.window:window-*:1.2.0-beta01. Liste des commits de la version 1.2.0-beta01

Nouvelles fonctionnalités

  • API de fenêtres expérimentales pour accéder à l'écran arrière.
  • Les API de test pour créer une FoldingFeature sont dorénavant stables.
  • Les API de test pour configurer des valeurs ActivityEmbedding sont dorénavant stables.
  • WindowLayoutInfoPublisherRule signale désormais le forçage lors de l'obtention d'une valeur venant d'un UiContext.
  • WindowInfoTracker rapporte les données des caractéristiques de pliage aux paramètres UiContext.

Modifications apportées à l'API

  • Marque la WindowArea de l'API comme expérimentale pour permettre la poursuite des modifications de l'API en vue d'une version 1.3 stable. (I857f5)
  • Mise à jour des fichiers API pour annoter la suppression de la compatibilité. (I8e87a, b/287516207)

Version 1.2.0-alpha03

21 juin 2023

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

Nouvelles fonctionnalités

  • Suppression des API obsolètes de la surface de l'API.
  • Ajout d'API pour prendre en charge des affichages simultanés.
  • Ajout d'une propriété permettant de refuser le redimensionnement forcé.
  • Ajout d'une propriété permettant de refuser le forçage du format minimal.
  • Stabilisation d'ActivityEmbeddingRule afin d'effectuer des tests unitaires sur l'intégration d'activités.

Modifications apportées à l'API

  • Suppression des API obsolètes. (I18d39)
  • Prise en charge des affichages simultanés. (Ifcbb0)

Corrections de bugs

  • Ajout d'une propriété de refus de compatibilité afin de forcer le redimensionnement. (Ie7ab1)
  • Suppression de SESSION_STATE_CONTENT_INVISIBLE de l'interface des extensions. (I6ed19)
  • Stabilisation d'ActivityEmbeddingRule afin d'effectuer des tests unitaires sur l'intégration d'activités. (I8d6b6)
  • Ajout d'une propriété de refus de compatibilité pour le forçage du format minimal. (I66390)
  • Suppression des API WindowArea obsolètes (Ieb67c)
  • Nom de la propriété des boucles de requêtes d'orientation remplacé par PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED. (Ie2fbd)
  • Mise à jour des noms des constantes des sessions des tailles de fenêtres. (I83675)
  • Ajout d'une propriété de refus de compatibilité afin d'ignorer les boucles de requêtes d'orientation détectées. (I0a7a2)
  • Ajout de WindowAreaComponent#STATUS_ACTIVE afin de signifier que la fonctionnalité est déjà active. (I62bc3)
  • Ajout des API RearDisplayPresentationMode (I0401c)
  • Suppression de l'API de couleur de fond pour une API stable. (I34c3e)
  • Masquage des API Window Area. (I39de0)
  • Ajout de méthodes pour forcer le SplitInfo dans SplitController. Ajout de méthodes de test pour créer un double de SplitInfo et ActivityStack. (Icd69f)
  • Rend les balises optionnelles pour ActivityRule.Builder. (Ib0b44)
  • Suppression de RatioSplitType, ExpandContainersSplit et HingeSplitType, devenus SplitType.
    • Remplacement de #splitEqually(), #expandContainers() et #splitByHinge par les constantes SplitType SPLIT_TYPE_EQUAL, SPLIT_TYPE_EXPAND et SPLIT_TYPE_HINGE.
    • Suppression de la fonctionnalité permettant de définir le type de repli du type de fractionnement à charnière. Si le type de fractionnement à charnière ne peut pas être appliqué en raison de l'état actuel de l'appareil ou de la fenêtre, il se rabat sur un fractionnement égal du conteneur de tâches parent. Utilisation de SplitController#setSplitAttributesCalculator pour personnaliser le type de fractionnement de remplacement. (Ifcc59)
  • Abandon de add/removeSplitCallback
    • Déplacement de add/removeSplitCallback vers SplitControllerCallbackAdapter.
    • Ajout de la prise en charge de Flow pour obtenir la liste SplitInfo. (I7f1b6)
  • Ajout d'une règle de test pour ActivityEmbeddingController. (I42e9b)
  • Remplacement du nom de ActivityOptionsCompat par ActivityEmbeddingOptions. (I89301)
  • Ajout de splitSupportStatus pour indiquer si l'intégration d'activités est disponible. (I10024)
  • Introduction de SplitAttributes.BackgroundColor pour une meilleure représentation de la valeur DEFAULT. Notez que la couleur d'arrière-plan de l'animation non opaque n'est pas prise en charge, de sorte que toute couleur non opaque sera traitée comme la couleur par défaut, ce qui signifie qu'il faut utiliser la couleur d'arrière-plan de la fenêtre du thème actuel. (Ic6b95)
  • Remplacement de alwaysAllow() et alwaysDisallow() par ALWAYS_ALLOW et ALWAYS_DISALLOW. (I3057b)
  • Ajout d'API pour SplitRule, SplitAttributes et SplitAttributesCalculator. (I92d23)
  • Ajout de TestActivityStack afin de créer ActivityStack pour des tests.
    • Ajout de TestSplitInfo afin de créer SplitInfo pour des tests. (I8e779)
  • Ajout d'un moyen de créer de faux SplitAttributesCalculatorParams afin que les développeurs puissent vérifier leur SplitAttributesCalculator personnalisé. (Id4a6e)
  • Ajout de WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context) et WindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context). (I66c7f)

Version 1.2.0-alpha02

7 juin 2023

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

Nouvelles fonctionnalités

  • Mise à jour de l'API de test afin de disposer d'une constante pour les caractéristiques de pliage non spécifiées.
  • Un forçage avec WindowLayoutInfoPublishRule forcera toutes les valeurs de windowLayoutInfo, y compris l'API basée sur le contexte.

Modifications apportées à l'API

  • Ajout d'une constante pour un appareil pliable en deux non spécifié. (I7530c)

Corrections de bugs

  • Mise à jour de WindowLayoutInfoPublishRule pour prendre en charge les forçages de Context sur WindowLayoutInfo. (I2037a)

Version 1.2.0-alpha01

24 mai 2023

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

Nouvelles fonctionnalités

Stabilisation des API de test autour de l'intégration d'activités et du WindowLayoutInfoTracker. ActivityEmbeddingRule est défini comme stable. WindowMetricsCalculatorRule est défini comme stable. Les fonctions utilitaires permettant de créer un FoldingFeature à des fins de test ont été définies comme stables.

Modifications apportées à l'API

  • Stabilisation d'ActivityEmbeddingRule afin d'effectuer des tests unitaires sur l'intégration d'activités. (I8d6b6)
  • WindowMetrisCalculatorTestRule est stable et permet d'utiliser les métriques des bouchons pour les tests JVM. Nous recommandons d'utiliser un émulateur pour obtenir des résultats précis.
  • Stabilisation des API de test pour WindowLayoutInfo afin de prendre en charge les tests JVM. (Ie036e)
  • Ajout d'IntRange pour les valeurs des caractéristiques de pliage de test. (I69f7d)

Version 1.1

Version 1.1.0

7 juin 2023

Publication d'androidx.window:window-*:1.1.0. Liste des commits de la version 1.1.0

Modifications importantes depuis la version 1.0.0

Intégration d'activités

  • Ajout de PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED en tant que propriété booléenne de la balise <application> dans le fichier manifeste d'application.
  • isSplitSupported est obsolète et remplacé par splitSupportStatus pour fournir des informations plus détaillées sur la raison pour laquelle la fonctionnalité de fractionnement est indisponible.
  • Ajout de la classe imbriquée SplitController.SplitSupportStatus afin de fournir des constantes d'état pour la propriété splitSupportStatus.
  • Refactorisation de SplitController pour plusieurs modules :
    • Module ActivityEmbeddingController pour les API associées Activity ou ActivityStack.
    • Déplacement de isActivityEmbedded de SplitController vers ActivityEmbeddingController.
    • Module RuleController pour les opérations associées EmbeddingRule.
    • Suppression des API SplitController :
    • clearRegisteredRules()
    • getSplitRules()
    • initialize()
    • registerRule()
    • unregisterRule()
    • Ajout des API RuleController :
    • addRule() : ajoute une règle ou met à jour la règle qui possède la même balise.
    • removeRule() : supprime une règle de la collection des règles enregistrées.
    • setRules() : établit un ensemble de règles.
    • clearRules() : supprime toutes les règles enregistrées.
    • parseRules() : analyse les règles à partir des définitions de règles XML.
  • Tous les modules requièrent un contexte à initialiser avec la méthode #getInstance(), y compris :
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Ajout de la classe EmbeddingAspectRatio pour définir des constantes de comportement de type énumération liées au format d'affichage.
  • Ajout de la classe SplitAttributes pour définir la mise en page du fractionnement.
  • Ajout des fonctions de calcul SplitAttributes à SplitController afin de personnaliser les dispositions divisées :
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() pour vérifier si les API SplitAttributesCalculator sont prises en charge sur l'appareil
  • Ajout du champ EmbeddingRule#tag.
  • Mise à jour de l'API dans SplitRule :
    • Ajout de defaultSplitAttributes : définit la mise en page du fractionnement par défaut, remplace splitRatio et layoutDirection.
    • Ajout du transfert des propriétés XML splitRatio et splitLayoutDirection vers defaultSplitAttributes.
    • Modification des définitions des dimensions minimales pour utiliser les pixels indépendants de la densité (dp) au lieu des pixels.
    • Ajout de minHeightDp dont la valeur par défaut est 600dp.
    • Remplacement de minWidth par minWidthDp, dont la valeur par défaut est 600dp.
    • Remplacement de minSmallestWidth par minSmallestWidthDp, dont la valeur par défaut est 600dp.
    • Ajout de maxAspectRatioInHorizontal dont la valeur par défaut est ALWAYS_ALLOW.
    • Ajout de maxAspectRatioInPortrait dont la valeur par défaut est 1.4.
    • Définition de la classe imbriquée FinishBehavior afin de remplacer les constantes du comportement final.
    • Application des changements de propriétés à la classe imbriquée "Builder" de SplitPairRule et SplitPlaceholderRule.
  • Remplacement de SplitInfo#getSplitRatio() par SplitInfo#getSplitAttributes() pour fournir des informations supplémentaires sur le fractionnement.

WindowLayout

  • Ajout d'une prise en charge des contextes expérimentaux d'interface utilisateur sans activité à WindowInfoTracker.
  • Ajout des contextes expérimentaux d'interface utilisateur sans activité à WindowMetricsCalculator.

Procédure de migration

  • Pour permettre à l'intégration d'activités d'afficher des activités fractionnées, les applications doivent ajouter la propriété PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED à la balise <application> du fichier manifeste : xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> Cela permet au système d'optimiser les comportements de fractionnement en amont pour une application.
  • Ratio de SplitInfo
    • Vérifier si le fractionnement actuel est empilé : kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • Vérifier le ratio actuel : kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • Migrations SplitController :
    • SplitController.getInstance() est devenu SplitController.getInstance(Context).
    • SplitController.initialize(Context, @ResId int) est devenu RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).
    • SplitController.getInstance().isActivityEmbedded(Activity) est devenu ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).
    • SplitController.getInstance().registerRule(rule) est devenu RuleController.getInstance(Context).addRule(rule).
    • SplitController.getInstance().unregisterRule(rule) est devenu RuleController.getInstance(Context).removeRule(rule).
    • SplitController.getInstance().clearRegisteredRules() est devenu RuleController.getInstance(Context).clearRules().
    • SplitController.getInstance().getSplitRules() est devenu RuleController.getInstance(Context).getRules().
  • Migrations des propriétés SplitRule :
    • minWidth et minSmallestWidth utilisent désormais des unités dp au lieu des pixels. Les applications peuvent utiliser l'appel suivant : kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) ou simplement diviser minWith en pixels par displayMetrics#density.
  • Les constantes de comportement final doivent être migrées vers les constantes de classe de type énumération FinishBehavior :
    • FINISH_NEVER est devenu FinishBehavior.NEVER.
    • FINISH_ALWAYS est devenu FinishBehavior.ALWAYS.
    • FINISH_ADJACENT est devenu FinishBehavior.ADJACENT.
  • L'orientation de la mise en page doit être migrée vers SplitAttributes.LayoutDirection :
    • ltr est devenu SplitAttributes.LayoutDirection.LEFT_TO_RIGHT.
    • rtl est devenu SplitAttributes.LayoutDirection.RIGHT_TO_LEFT.
    • locale est devenu SplitAttributes.LayoutDirection.LOCALE.
    • splitRatio doit être migré vers SplitAttributes.SplitType.ratio(splitRatio).
  • Migrations SplitPairRule.Builder :
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) est devenu kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600..
    • setLayoutDirection(layoutDirection) et setSplitRatio(ratio) sont remplacés par kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() ).
    • setFinishPrimaryWithSecondary et setFinishSecondaryWithPrimary prennent les constantes de type énumération de FinishBehavior. Pour plus d'informations, reportez-vous aux "Migrations SplitRule".
    • Utiliser setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) pour afficher le fractionnement sur les appareils au format Portrait.
  • Migrations SplitPlaceholder.Builder :
    • Ne possèdent que des paramètres filters et placeholderIntent. Les autres propriétés sont transférées aux setters. Pour plus d'informations, reportez-vous aux "Migrations SplitPairRule.Builder".
    • setFinishPrimaryWithPlaceholder prend les constantes de type énumération de FinishBehavior. Pour plus d'informations, reportez-vous aux "Migrations SplitRule".
    • setLayoutDirection(layoutDirection) et setSplitRatio(ratio) remplacés par kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() ).
    • Utiliser setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) pour afficher le fractionnement sur les appareils au format Portrait.

Version 1.1.0-rc01

10 mai 2023

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

Nouvelles fonctionnalités

  • ActivityEmbedding est considéré comme une API stable.
  • Résolution de plusieurs bugs.

Version 1.1.0-beta02

5 avril 2023

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

Nouvelles fonctionnalités

  • Corrections internes et nettoyage.

Version 1.1.0-beta01

22 mars 2023

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

Intégration d'activités

  • Ajout de PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED en tant que propriété booléenne de la balise <application> dans le fichier manifeste d'application.
  • isSplitSupported est obsolète et remplacé par splitSupportStatus pour fournir des informations plus détaillées sur la raison pour laquelle la fonctionnalité de fractionnement est indisponible.
  • Ajout de la classe imbriquée SplitController.SplitSupportStatus afin de fournir des constantes d'état pour la propriété splitSupportStatus.
  • Refactorisation de SplitController pour plusieurs modules :
    • Module ActivityEmbeddingController pour les API associées Activity ou ActivityStack.
    • Déplacement de isActivityEmbedded de SplitController vers ActivityEmbeddingController.
    • Module RuleController pour les opérations associées EmbeddingRule.
    • Suppression des API SplitController :
      • clearRegisteredRules()
      • getSplitRules()
      • initialize()
      • registerRule()
      • unregisterRule()
    • Ajout des API RuleController :
      • addRule() : ajoute une règle ou met à jour la règle qui possède la même balise.
      • removeRule() : supprime une règle de la collection des règles enregistrées.
      • setRules() : établit un ensemble de règles.
      • clearRules() : supprime toutes les règles enregistrées.
      • `parseRules() : analyse les règles à partir des définitions de règles XML.
  • Tous les modules requièrent un contexte à initialiser avec la méthode #getInstance(), y compris :
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Ajout de la classe EmbeddingAspectRatio pour définir des constantes de comportement de type énumération liées au format d'affichage.
  • Ajout de la classe SplitAttributes pour définir la mise en page du fractionnement.
  • Ajout des fonctions de calcul SplitAttributes à SplitController afin de personnaliser les dispositions divisées :
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() pour vérifier si les API SplitAttributesCalculator sont prises en charge sur l'appareil
  • Ajout du champ EmbeddingRule#tag.
  • Mise à jour de l'API dans SplitRule :
    • Ajout de defaultSplitAttributes : définit la mise en page du fractionnement par défaut, remplace splitRatio et layoutDirection.
    • Ajout du transfert des propriétés XML splitRatio et splitLayoutDirection vers defaultSplitAttributes.
    • Modification des définitions des dimensions minimales pour utiliser les pixels indépendants de la densité (dp) au lieu des pixels.
    • Ajout de minHeightDp dont la valeur par défaut est 600dp.
    • Remplacement de minWidth par minWidthDp, dont la valeur par défaut est 600dp.
    • Remplacement de minSmallestWidth par minSmallestWidthDp, dont la valeur par défaut est 600dp.
    • Ajout de maxAspectRatioInHorizontal dont la valeur par défaut est ALWAYS_ALLOW.
    • Ajout de maxAspectRatioInPortrait dont la valeur par défaut est 1.4.
    • Définition de la classe imbriquée FinishBehavior afin de remplacer les constantes du comportement final.
    • Application des changements de propriétés à la classe imbriquée Builder de SplitPairRule et SplitPlaceholderRule.
  • Remplacement de SplitInfo#getSplitRatio() par SplitInfo#getSplitAttributes() pour fournir des informations supplémentaires sur le fractionnement.

WindowLayout

  • Ajout d'une prise en charge des contextes d'interface utilisateur sans activité à WindowInfoTracker.
  • Ajout des contextes d'interface utilisateur sans activité à WindowMetricsCalculator.

Procédure de migration

  • Pour permettre à l'intégration d'activités d'afficher des activités fractionnées, les applications doivent ajouter la propriété PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED à la balise <application> du fichier manifeste : xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> Cela permet au système d'optimiser les comportements de fractionnement en amont pour une application.
  • Ratio de SplitInfo
    • Vérifier si le fractionnement actuel est empilé : kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • Vérifier le ratio actuel : kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • Migrations SplitController :
    • SplitController.getInstance() est devenu SplitController.getInstance(Context).
    • SplitController.initialize(Context, @ResId int) est devenu RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).
    • SplitController.getInstance().isActivityEmbedded(Activity) est devenu ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).
    • SplitController.getInstance().registerRule(rule) est devenu RuleController.getInstance(Context).addRule(rule).
    • SplitController.getInstance().unregisterRule(rule) est devenu RuleController.getInstance(Context).removeRule(rule).
    • SplitController.getInstance().clearRegisteredRules() est devenu RuleController.getInstance(Context).clearRules().
    • SplitController.getInstance().getSplitRules() est devenu RuleController.getInstance(Context).getRules().
  • Migrations des propriétés SplitRule :
    • minWidth et minSmallestWidth utilisent désormais des unités dp au lieu des pixels. Les applications peuvent utiliser l'appel suivant : kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) ou simplement diviser minWith en pixels par displayMetrics#density.
  • Les constantes de comportement final doivent être migrées vers les constantes de classe de type énumération FinishBehavior :
    • FINISH_NEVER est devenu FinishBehavior.NEVER.
    • FINISH_ALWAYS est devenu FinishBehavior.ALWAYS.
    • FINISH_ADJACENT est devenu FinishBehavior.ADJACENT.
  • L'orientation de la mise en page doit être migrée vers SplitAttributes.LayoutDirection :
    • ltr est devenu SplitAttributes.LayoutDirection.LEFT_TO_RIGHT.
    • rtl est devenu SplitAttributes.LayoutDirection.RIGHT_TO_LEFT.
    • locale est devenu SplitAttributes.LayoutDirection.LOCALE.
    • splitRatio doit être migré vers SplitAttributes.SplitType.ratio(splitRatio).
  • Migrations SplitPairRule.Builder :
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) est devenu kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600..
    • setLayoutDirection(layoutDirection) et setSplitRatio(ratio) remplacés par kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() ).
    • setFinishPrimaryWithSecondary et setFinishSecondaryWithPrimary prennent les constantes de type énumération de FinishBehavior. Pour plus d'informations, reportez-vous aux "Migrations SplitRule".
    • Utiliser setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) pour afficher le fractionnement sur les appareils au format Portrait.
  • Migrations SplitPlaceholder.Builder :
    • Ne possèdent que des paramètres filters et placeholderIntent. Les autres propriétés sont transférées aux setters. Pour plus d'informations, reportez-vous aux "Migrations SplitPairRule.Builder".
    • setFinishPrimaryWithPlaceholder prend les constantes de type énumération de FinishBehavior. Pour plus d'informations, reportez-vous aux "Migrations SplitRule".
    • setLayoutDirection(layoutDirection) et setSplitRatio(ratio) remplacés par kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() ).
    • Utiliser setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) pour afficher le fractionnement sur les appareils au format Portrait.

Version 1.1.0-alpha06

22 février 2023

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

Nouvelles fonctionnalités

  • Exposition de la version expérimentale permettant l'obtention de WindowLayoutInfo à partir d'un contexte d'interface utilisateur.

Modifications apportées à l'API

  • Ajout de splitSupportStatus pour indiquer si l'intégration d'activités est disponible. (I10024)
  • Désignation de l'API de contexte d'interface utilisateur WindowLayoutInfo comme version expérimentale. (I58ee0)
  • Ajout de WindowAreaController et d'API pour pouvoir activer le mode RearDisplay et déplacer la fenêtre actuelle vers l'écran aligné avec l'appareil photo arrière. (Iffcbf)
  • Mise à jour la couleur d'arrière-plan par défaut. (I1ac1b)
  • Ajout des paramètres SplitAttributes. (I18bdd)
  • Ajout d'API pour SplitRule, SplitAttributes et SplitAttributesCalculator. (I92d23)
  • Amélioration des API liées à maxAspectRatio :
    1. Remplacement de alwaysAllow() et alwaysDisallow() par ALWAYS_ALLOW et ALWAYS_DISALLOW.
    2. Mise à jour de la documentation de l'API de @see avec la documentation autonome. (I3057b)
  • Suppression des constructeurs suivants des API publiques, qui ne sont normalement pas appelés par les applications.
    • Constructeur SplitInfo
    • Constructeur ActivityStack (Ide534)
  • SplitRule utilise désormais maxAspectRatioInPortrait/Landscape. Ne permet de diviser les activités que lorsque le format des limites parent est inférieur ou égal au maxAspectRatio demandé. (Ia5990)
  • Modification de RuleController#parseRules pour qu'il soit statique. (I785df)
  • Amélioration des API liées à ActivityEmbedding.
    1. Alignement du nom des API – Utilisation du terme "add" ou "remove" pour plusieurs instances :
    2. registerRule est devenu addRule.
    3. unregisterRule est devenu removeRule.
    4. Remplacement de getSplitRules par getRules, car ActivityRule n'est pas une règle de fractionnement.
    5. Ajout de RuleController#setRules pour définir plusieurs règles.
    6. Extraction des API liées aux règles de SplitController vers singleton RuleController. API concernées :
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. Extraction de #isActivityEmbedded de SplitController vers singleton ActivityEmbeddingController. API concernées :
    14. isActivityEmbedded
    15. Suppression de SplitController#initialize. Pour définir des règles à partir d'un fichier XML, veuillez utiliser RuleController#parseRules et #setRules. Avant ce changement : SplitController.initialize(context, R.xml.static_rules) Après ce changement : val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
    16. Nous ne faisons plus la distinction entre les règles statiques et les règles d'exécution. Cela dit, appeler #clearRules efface toutes les règles, qu'elles soient enregistrées avec des définitions de règles XML statiques ou au moment de l'exécution. Pour récupérer l'ancien comportement de SplitController#clearRegisteredRules, veuillez appeler RuleController#parseRules avec l'ID de ressource XML, puis RuleController#setRules pour rétablir les règles. Avant ce changement : SplitController.getInstance(context).clearRegisteredRules() Après ce changement : val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules) (Ib3967)
  • Amélioration des API SplitRule :
    1. Utilisation des dimensions minimales en DP plutôt qu'en pixels pour SplitRule.
    2. Refactorisation du compilateur SplitRule pour qu'il puisse accepter les dimensions minimales comme alternative. (I95f17)
  • Transmission d'un contexte pour initialiser SplitController. (I42549)
  • Remplacement du nom SplitRule#layoutDir par #layoutDirection et du nom SplitRule Builder#setLayoutDir par Builder#setLayoutDirection. (I3f6d1)

Version 1.1.0-alpha04

9 novembre 2022

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

Nouvelles fonctionnalités

  • Exposition d'une méthode pour déterminer si un élément ActivityStack est vide pour ActivityEmbedding.
  • Suppression des balises d'API expérimentales dans les API ActivityEmbedding.
  • Masquage du constructeur ActivityRule, car il est préférable d'utiliser Builder.
  • Ajout d'une méthode expérimentale pour obtenir l'élément WindowInsets sur WindowMetrics.
  • Mise à jour de SplitPlaceholderFinishBehavior pour empêcher l'arrêt de l'espace réservé. L'arrêt de l'espace réservé peut entraîner un comportement déroutant.

Modifications apportées à l'API

  • La valeur isEmpty a été rendue publique pour remplacer "fun" isEmpty.
  • Nom des activités du paramètre ActivityStack remplacé par activitiesInProcess. (Ia5055)
  • Suppression d'ActivityFilter#matchesClassName et d'ActivityFilter#matchesClassNameOrWildCard pour éviter toute confusion.
  • Ajout d'ActivityFilter#componentName et d'ActivityFilter#intentAction pour permettre à l'appelant de distinguer les différents filtres. (I41f22)
  • Suppression des API @Deprecated de l'API expérimentale. (I216b3)
  • Suppression de @ExperimentalWindowApi pour les API d'intégration d'activités. (I69ebe)
  • Masquage du constructeur ActivityRule. Utilisez plutôt Builder. (If4eb6)
  • Ajout d'API permettant de vérifier si une activité fait partie d'ActivityFilter. (Ia43cf)
  • Mise à jour des fichiers d'API pour refléter les modifications apportées aux classes WindowMetrics et WindowMetricsCalculatorCompat. (I667fe)
  • Mise à jour du Javadoc de la propriété ActivityEmbedding et du nom de la classe. (Ia1386)
  • Ajout des noms de balises de propriété ActivityEmbedding à utiliser dans le fichier AndroidManifest.xml. (Id1ad4)
  • Ajout des API SplitPlaceholderFinishBehavior et SplitPlaceholderRule.finishPrimaryWithPlaceholder pour remplacer l'API SplitPlaceholderRule.finishPrimaryWithSecondary existante qui définit la date de fin des activités d'espace réservé et le comportement des activités associées dans les rapports d'intégration d'activités. (I64647)

Correction de bugs

  • Ajout de WindowAreaController et d'API pour pouvoir activer le mode RearDisplay et déplacer la fenêtre actuelle vers l'écran aligné avec l'appareil photo arrière. (I388ab)

Version 1.1.0-alpha03

27 juillet 2022

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

Nouvelles fonctionnalités

  • Mise à jour des valeurs par défaut des règles d'intégration.

Modifications apportées à l'API

  • Mise à jour des valeurs par défaut pour les propriétés des règles d'intégration (Ic4d35).

Version 1.1.0-alpha02

11 mai 2022

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

Nouvelles fonctionnalités

  • Publication de bibliothèques d'adaptation pour prendre en charge Java et RxJava.

Version 1.1.0-alpha01

11 mai 2022

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

Nouvelles fonctionnalités

  • Publication d'adaptateurs pour prendre en charge Java et RxJava.

Version 1.1.0-alpha01

20 avril 2022

Publication d'androidx.window:window:1.1.0-alpha01. Liste des commits de la version 1.1.0-alpha01

Nouvelles fonctionnalités

  • Correction d'un bug qui provoquait l'abandon des fonctionnalités de pliage lors du passage en arrière-plan de l'application.
  • Développement de l'API expérimentale ActivityEmbedding.

Modifications apportées à l'API

  • API publique pour vérifier l'intégration d'une activité (I39eb7).

Correction de bugs

  • Ajout d'API qui personnalisent le comportement de fin des conteneurs dans les fractionnements d'activités (I1a1e4).
  • Ajout d'une option de configuration pour les règles de fractionnement d'activités (Iec6af).

Version 1.0

Version 1.0.0

26 janvier 2022

Publication d'androidx.window:window-*:1.0.0. Liste des commits de la version 1.0.0

Principales fonctionnalités de la version 1.0.0

  • Compatibilité avec les téléphones pliables grâce à WindowInfoTracker et FoldingFeature. Simplification du calcul de la valeur actuelle de WindowMetrics grâce à WindowMetricsCalculator.

Version 1.0.0-rc01

15 décembre 2021

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

Nouvelles fonctionnalités

  • Compatibilité avec les téléphones pliables grâce à WindowInfoTracker.
  • Ajout de méthodes pour calculer la valeur actuelle et maximale de WindowMetrics.
  • Ajout d'API de test compatibles.

Version 1.0.0-beta04

17 novembre 2021

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

Nouvelles fonctionnalités

  • Remplacement du nom WindowInfoRepository par WindowInfoTracker.
  • Possibilité de transformer une activité en dépendance de méthode explicite pour WindowInfoTracker.
  • Ajout d'une règle TestRule simple pour WindowMetricsCalculator pour aider les développeurs utilisant Robolectric.

Modifications apportées à l'API

  • Extraction des extensions (I25a5f).
  • Ajout d'isEmpty dans ActivityStack (I5a4e6).
  • Remplacement du nom WindowInfoRepository par WindowInfoTracker.
    • Mise à jour des dépendances java/rxjava/testing pour assurer la correspondance (I0da63).
  • Ajout d'une règle de test pour un WindowMetricsCalculator simple (Ibacdb).

Version 1.0.0-beta03

27 octobre 2021

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

Nouvelles fonctionnalités

  • Ajout d'API expérimentales d'intégration d'activités. Cette version de mise en page initiale permet d'afficher deux activités côte à côte.

Modifications apportées à l'API

  • Suppression de l'API currentWindowMetrics pour son manque de précision. Veuillez utiliser WindowMetricsCalculator à la place (Icda5f).
  • Mise à jour de l'API Extensions (Ica92b).
  • Ajout d'une interface pour une nouvelle fonctionnalité permettant d'intégrer des activités et de les afficher côte à côte dans la fenêtre des tâches parentes (I5711d).
  • Masquage des constructeurs de WindowMetrics et de WindowLayoutInfo. Veuillez utiliser les API de test à la place (I5a1b5).
  • Ajout d'une API pour créer des objets WindowLayoutInfo fictifs (I4a2fd).

Corrections de bugs

Version 1.0.0-beta02

1er septembre 2021

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

Nouvelles fonctionnalités

  • Ajout d'une annotation expérimentale permettant d'annoter les API expérimentales (I9f1b6).
  • Ajout d'une méthode de test pour créer un élément FoldingFeature de test compatible avec Rect. Elle permet d'effectuer plus facilement des tests lorsque vous utilisez Robolectric, contrairement à un objet Activity réel (Id1cca).

Version 1.0.0-beta01

18 août 2021

Publication d'androidx.window:window-*:1.0.0-beta01. Liste des commits de la version 1.0.0-beta01

Nouvelles fonctionnalités

  • Suppression des anciennes constantes et transformation de FoldingFeature en interface.

Modifications apportées à l'API

  • Suppression des anciennes constantes et transformation de FoldFeature en interface (I9a2d5).

Correction de bugs

  • Les bibliothèques qui dépendent de la bibliothèque Test Core ont été mises à niveau vers la version 1.4.0 et fonctionnent désormais avec la version S de la plate-forme Android (I88b72, b/189353863).

Version 1.0.0-alpha10

4 août 2021

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

Nouvelles fonctionnalités

  • Remplacement du nom WindowInfoRepo par WindowInfoRepository et ajustement des classes et des fichiers correspondants.
  • Conversion des métriques de fenêtre actuelles en flux dans WindowInfoRepository, car la valeur change au fil du temps.
  • Remplacement du nom WindowInfoRepoJavaAdapter par WindowInfoRepoCallbackAdapter.
  • Ajout d'une méthode d'assistance pour créer des objets FoldingFeature de test.
  • Modification des packages pour regrouper les classes en fonction de la fonctionnalité qu'elles prennent en charge.

Modifications apportées à l'API

  • Remplacement du nom ActivityExt par ActivityExtensions, et de Repo par Repository (I61a16).
  • Mise à jour les packages pour les classes (I23ae2).
  • Suppression de WindowMetrics de WindowInfoRepo (I24663).
  • Suppression de WindowManager et utilisation de WindowInfoRepo
      .
    • WindowBackend est désormais interne (I06d9a).
  • Conversion des métriques de fenêtre en flux.
    • Remplacement du nom de l'adaptateur Java par WindowInfoRepoCallbackAdapter.
    • Suppression de callbackFlow pour ne plus utiliser d'API expérimentales (Ia4d15).
  • Ajout d'une méthode d'assistance pour créer des fonctionnalités d'affichage de test.
    • Remplacement d'occlusionMode par occlusionType (If4cff).

Correction de bugs

  • Correction de l'erreur liée à ProGuard lors de la suppression de la bibliothèque principale.
  • Correction d'une erreur où WindowLayoutInfo n'était pas distribué aux abonnés supplémentaires.
  • Correction d'une erreur qui empêchait les modifications de configuration de déclencher les mises à jour de la fonctionnalité de pliage.

Version 1.0.0-alpha09

30 juin 2021

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

Nouvelles fonctionnalités

  • Remplacement des constantes entières par des énumérations illimitées.
  • Ajout d'un utilitaire de test pour créer des caractéristiques de pliage de test.

Modifications apportées à l'API

  • Ajout d'une méthode d'assistance pour créer des fonctionnalités d'affichage de test. (I3cf54)
    • Remplacement d'occlusionMode par occlusionType.

Correction de bugs

  • Émission d'une valeur initiale lors de l'ajout de plusieurs utilisateurs de flux de données.

Version 1.0.0-alpha08

16 juin 2021

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

Nouvelles fonctionnalités

  • Publication d'un artefact de test pour faciliter les tests lors de l'utilisation de WindowInfoRepository. Utilisez WindowInfoRepository pour obtenir des informations sur DisplayFeatures et WindowMetrics (I57f66, Ida620).

Version 1.0.0-alpha07

2 juin 2021

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

Nouvelles fonctionnalités

  • Migration de la bibliothèque de fenêtres principale vers Kotlin. À l'avenir, elle utilisera des coroutines et des fonctions de suspension pour exposer les données asynchrones.
  • Ajout de WindowInfoRepo comme principal point d'interaction pour obtenir WindowMetrics et le flux de WindowLayoutInfo.
  • Ajout de l'artefact window-java pour exposer des API compatibles avec Java afin d'enregistrer et d'annuler l'enregistrement des rappels.
  • Ajout des artefacts window-rxjava2 et window-rxjava3 pour exposer des API adaptées à RxJava.

Modifications apportées à l'API

  • Ajout de WindowServices pour fournir des dépendances de manière uniforme.
    • Ajout d'une API basée sur une coroutine pour utiliser les informations de mise en page des fenêtres (Iab70f).
  • Migration de la bibliothèque principale du gestionnaire de fenêtres vers Kotlin (Icca34).

Correction de bugs

  • Ajout d'une classe de données pour représenter les limites des fonctionnalités (I6dcd1).

Version 1.0.0-alpha06

5 mai 2021

Publication d'androidx.window:window:1.0.0-alpha06. Liste des commits de la version 1.0.0-alpha06

Nouvelles fonctionnalités

  • Début de la migration vers Kotlin, qui sera terminée dans la prochaine version.
  • Suppression de DeviceState de l'API publique. Veuillez utiliser FoldingFeature à la place.
  • Suppression de STATE_FLIPPED des états FoldingFeature, car il n'est compatible avec aucun cas d'utilisation pour le moment.
  • Suppression d'autres API obsolètes.

Modifications apportées à l'API

  • Ajout de Kotlin en tant que dépendance.
    • Migration de la bibliothèque principale vers Kotlin (Idd995).
  • Suppression du compilateur DisplayFeature (I61fa4).
  • Suppression de DeviceState de l'API publique. Utilisez FoldingFeature à la place (Id6079).
  • Suppression du rappel d'état de l'appareil des extensions (I5ea83).
  • Suppression de STATE_FLIPPED de FoldingFeature (I9c4e1).
  • Abandon des méthodes d'enregistrement obsolètes (Ib381b).

Version 1.0.0-alpha05

24 mars 2021

Publication d'androidx.window:window:1.0.0-alpha05. Liste des commits de la version 1.0.0-alpha05.

Nouvelles fonctionnalités

Ajout de méthodes pratiques à FoldingFeature afin que les applications puissent déterminer si la fonctionnalité s'ouvre ou se ferme, ainsi que l'orientation de la charnière. Le type de charnière a également été masqué.

Suppression des méthodes de lecture synchrones de WindowManager. Les méthodes de lecture synchrones sont sujettes aux erreurs, car il existe une condition de concurrence implicite. Enregistrez des écouteurs et des rappels pour recevoir des mises à jour sur WindowLayoutInfo.

Modifications apportées à l'API

  • Ajout de méthodes pratiques pour utiliser FoldingFeatures (Ie733f).
  • Suppression des méthodes de lecture synchrones de WindowManager (I96fd4).

Version 1.0.0-alpha04

10 mars 2021

Publication d'androidx.window:window:1.0.0-alpha04. Liste des commits de la version 1.0.0-alpha04

Nouvelles fonctionnalités

  • Correction d'un bug qui empêche l'émission de WindowLayoutInfo en l'absence d'une intégration de l'OEM. Désormais, une classe WindowLayoutInfo vide est émise.
  • Correction d'un bug où l'état de la charnière n'était pas correctement mis à jour s'il changeait lorsque l'application était en arrière-plan. L'état doit désormais être cohérent.
  • Mise à jour de nos fichiers ProGuard pour ignorer les avertissements des dépendances d'exécution.

Correction de bugs

  • Émission d'une valeur vide lorsque la bibliothèque de l'OEM est manquante (Ide935).

Version 1.0.0-alpha03

18 février 2021

Publication d'androidx.window:window:1.0.0-alpha03. Liste des commits de la version 1.0.0-alpha03

Nouvelles fonctionnalités

  • Émission d'une valeur vide pour WindowLayoutInfo lorsque l'intégration de l'OEM est vide. Cela devrait faciliter l'utilisation de la bibliothèque sur d'autres appareils. Étant donné que les API sont asynchrones, il est toujours recommandé d'utiliser du code défensif et une valeur par défaut après un certain délai d'inactivité dans les applications. Nous n'offrons aucune garantie concernant les intégrations de l'OEM. La valeur initiale peut également être retardée.

Correction de bugs

  • Émission d'une valeur vide lorsque la bibliothèque de l'OEM est manquante (Ide935).

Version 1.0.0-alpha02

27 janvier 2021

Publication d'androidx.window:window:1.0.0-alpha02. Liste des commits de la version 1.0.0-alpha02

Nouvelles fonctionnalités

  • Abandon de certaines API pour simplifier l'API et provoquer moins d'erreurs. La suppression des opérations de lecture synchrones de WindowManager et de DeviceState en sont deux exemples notables. Les opérations de lecture synchrones peuvent entraîner des conditions de concurrence et présenter une UI incorrecte.

  • Remplacement de DisplayFeature par une interface que d'autres fonctionnalités implémenteront par la suite. La première fonctionnalité est FoldingFeature, qui représente désormais le pliage d'un écran ou d'une charnière. Elle contient également l'état de la charnière remplaçant DeviceState.

  • Ajout de WindowMetrics à Android 11 afin de permettre aux développeurs d'interroger facilement des métriques sur une fenêtre, par exemple sa position et sa taille à l'écran et les encarts système. Rétroportage de l'API pour permettre aux développeurs d'exploiter WindowMetrics et de continuer la prise en charge des anciennes versions d'Android. Vous pouvez obtenir des WindowMetrics via les API WindowManager#getCurrentWindowMetrics() et WindowManager#getMaximumWindowMetrics().

Modifications apportées à l'API

  • Abandon des API qui seront supprimées dans la prochaine version alpha (Ib7cc4).
  • Mise à jour d'ExtensionInterface pour accepter les références d'activité explicites (I07ded).
  • Introduction de l'API WindowMetrics (I3ccee).
  • Suppression des méthodes de lecture synchrones de WindowManager (I69983).
  • Protection du package ExtensionWindowBackend (Ied208).

Correction de bugs

  • Mise à jour des API ExtensionInterface pour la prise en charge des contextes visuels (I8e827).

Contribution externe

  • Fusion de DeviceState et de WindowLayoutInfo pour faciliter l'accès aux données (Id34f4).

Version 1.0.0-alpha01

27 février 2020

Publication d'androidx.window:window:1.0.0-alpha01 et d'androidx.window:window-extensions:1.0.0-alpha01. Liste des commits de la version 1.0.0-alpha01 Il s'agit de la première version de la bibliothèque Window Manager.

Nouvelles fonctionnalités

  • DisplayFeature : cette nouvelle API identifie les perturbations sur les surfaces planes continues telles que les charnières ou les plis.
  • DeviceState : cette nouvelle API indique la position actuelle du téléphone à partir d'une liste de positions définies (par exemple, CLOSED, OPENED, HALF_OPENED, etc.).