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
22 février 2023 1.0.0 - - 1.1.0-alpha06

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.0.0"

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

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

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

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

Kotlin

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

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

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

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

    // For testing
    implementation("androidx.window:window-testing:1.0.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 la documentation sur l'outil Issue Tracker.

Version 1.1

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)

Corrections 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).

Corrections 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).

Corrections 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).

Corrections 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.

Corrections 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).

Corrections 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.

Corrections 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.

Corrections 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).

Corrections 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.).