WindowManager
androidx.window
androidx.window.core
androidx.window.embedding
androidx.window.layout
androidx.window.testing.layout
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.
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 modeRearDisplay
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
etSplitAttributesCalculator
. (I92d23) - Amélioration des API liées à
maxAspectRatio
:- Remplacement de
alwaysAllow()
etalwaysDisallow()
parALWAYS_ALLOW
etALWAYS_DISALLOW
. - Mise à jour de la documentation de l'API de @see avec la documentation autonome. (I3057b)
- Remplacement de
- Suppression des constructeurs suivants des API publiques, qui ne sont normalement pas appelés par les applications.
- Constructeur
SplitInfo
- Constructeur
ActivityStack
(Ide534)
- Constructeur
SplitRule
utilise désormaismaxAspectRatioInPortrait/Landscape
. Ne permet de diviser les activités que lorsque le format des limites parent est inférieur ou égal aumaxAspectRatio
demandé. (Ia5990)- Modification de
RuleController#parseRules
pour qu'il soit statique. (I785df) - Amélioration des API liées à ActivityEmbedding.
- Alignement du nom des API – Utilisation du terme "add" ou "remove" pour plusieurs instances :
registerRule
est devenuaddRule
.unregisterRule
est devenuremoveRule
.- Remplacement de
getSplitRules
pargetRules
, carActivityRule
n'est pas une règle de fractionnement. - Ajout de
RuleController#setRules
pour définir plusieurs règles. - Extraction des API liées aux règles de
SplitController
vers singletonRuleController
. API concernées : addRule
removeRule
getRules
setRules
clearRules
parseRules
- Extraction de
#isActivityEmbedded
deSplitController
vers singletonActivityEmbeddingController
. API concernées : isActivityEmbedded
- Suppression de
SplitController#initialize
. Pour définir des règles à partir d'un fichier XML, veuillez utiliserRuleController#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)
- 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 deSplitController#clearRegisteredRules
, veuillez appelerRuleController#parseRules
avec l'ID de ressource XML, puisRuleController#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 :
- Utilisation des dimensions minimales en DP plutôt qu'en pixels pour
SplitRule
. - Refactorisation du compilateur
SplitRule
pour qu'il puisse accepter les dimensions minimales comme alternative. (I95f17)
- Utilisation des dimensions minimales en DP plutôt qu'en pixels pour
- Transmission d'un contexte pour initialiser
SplitController
. (I42549) - Remplacement du nom
SplitRule#layoutDir
par#layoutDirection
et du nomSplitRule Builder#setLayoutDir
parBuilder#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 pourActivityEmbedding
. - Suppression des balises d'API expérimentales dans les API
ActivityEmbedding
. - Masquage du constructeur
ActivityRule
, car il est préférable d'utiliserBuilder
. - Ajout d'une méthode expérimentale pour obtenir l'élément
WindowInsets
surWindowMetrics
. - 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é paractivitiesInProcess
. (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
etWindowMetricsCalculatorCompat
. (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
etSplitPlaceholderRule.finishPrimaryWithPlaceholder
pour remplacer l'APISplitPlaceholderRule.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 modeRearDisplay
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
etFoldingFeature
. 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
- Correction d'une fuite de mémoire (I3fc79, b/202989046).
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 version1.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
parocclusionType
.
- Remplacement d'
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
etwindow-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. UtilisezFoldingFeature
à 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.).