Gestionnaire de fenêtres Jetpack pour les appareils pliables

Important

Les fonctionnalités et l’aide décrites dans cet article sont en préversion publique et peuvent faire l’objet de modifications importantes avant leur lancement en disponibilité générale. Microsoft ne donne aucune garantie, expresse ou implicite, concernant les informations fournies ici.

Le Gestionnaire de fenêtres Jetpack (actuellement en bêta) fournit une API standard à utiliser avec tous les appareils pliables. Il contient deux classes importantes :

  • DisplayFeature : identifie les perturbations de la surface continue de l’écran plat, comme des charnières ou des plis. Le gestionnaire de fenêtres retourne une collection de fonctionnalités d’affichage à partir d’un rappel de modification de disposition.
  • FoldingFeature : fournit des informations sur une fonctionnalité spécifique de l’appareil (Surface Duo n’a qu’une seule fonctionnalité de pliage, mais d’autres appareils peuvent en avoir plus). La classe FoldingFeature fournit des informations sur l’état de cette partie de l’appareil, avec des propriétés pour bounds, occlusionType, orientation, state et isSeparating.

Vous trouverez un guide similaire sur Codelab. Découvrez plus en détail le développement pour les appareils pliables dans la documentation Android. Des exemples de l’équipe Android sont également disponibles sur GitHub. Les notes de publication Jetpack enregistrent les modifications dans le Gestionnaire de fenêtres à mesure de la mise à jour.

Conseil

Les contrôles et les classes d’assistance de la bibliothèque double écran Surface Duo fonctionnent avec le Gestionnaire de fenêtres. Suivez les instructions permettant d’ajouter les packages appropriés à votre projet d’application.

Pour utiliser le Gestionnaire de fenêtres directement dans votre code, suivez les instructions ci-dessous :

Ajout de dépendances

Pour ajouter la bibliothèque Jetpack Windows Manager, mettez à jour votre fichier build.gradle.

  1. Vérifiez que le projet est actuellement compilé avec l’API niveau 31 :

    compileSdk 31
    
  2. Ajoutez ces dépendances pour pouvoir accéder aux API nécessaires :

    dependencies {
        implementation "androidx.window:window:1.0.0-beta04"
        implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.0-alpha03'
    }
    

Notes

Le nom de la bibliothèque comprend « bêta » : les API du Gestionnaire de fenêtres sont actuellement toujours en préversion et peuvent changer avant de devenir stables.

Utiliser le Gestionnaire de fenêtres dans votre code Kotlin

  1. Dans la classe MainActivity, assurez-vous que est ajouté en haut du fichier.

  2. Initialisez le Gestionnaire de fenêtres dans la méthode onCreate de votre activité. L’activité doit avoir un TextView appelé layout_change_text pour que cette méthode puisse mettre à jour le texte affiché :

        lifecycleScope.launch(Dispatchers.Main) {
            lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) {
                WindowInfoTracker.getOrCreate(this@MainActivity)
                    .windowLayoutInfo(this@MainActivity)
                    .collect { newLayoutInfo ->
                       layout_change_text.text = "No display features detected"
                        for (displayFeature : DisplayFeature in newLayoutInfo.displayFeatures) {
                            if (displayFeature is FoldingFeature && displayFeature.occlusionType == FoldingFeature.OcclusionType.NONE) {
                                layout_change_text.text = "App is spanned across a fold"
                            }
                            if (displayFeature is FoldingFeature && displayFeature.occlusionType == FoldingFeature.OcclusionType.FULL) {
                                layout_change_text.text = "App is spanned across a hinge"
                            }
                        }
                    }
            }
        }
    
    

    Vérifiez que ces autres importations sont aussi ajoutées en haut du fichier :

    import androidx.lifecycle.Lifecycle
    import androidx.lifecycle.lifecycleScope
    import androidx.lifecycle.repeatOnLifecycle
    import androidx.window.layout.DisplayFeature
    import androidx.window.layout.FoldingFeature
    import kotlinx.coroutines.Dispatchers
    import kotlinx.coroutines.flow.collect
    import kotlinx.coroutines.launch
    

    Notes

    Dans la collection d’éléments DisplayFeature de la classe WindowLayoutInfo, un ou plusieurs de ces éléments peuvent être des instances de FoldingFeature. Les instances de la fonctionnalité de pliage ont des propriétés pour bounds, occlusionType, orientation, state et isSeparating que vous pouvez interroger afin de prendre des décisions sur la façon d’ajuster la disposition pour le nouvel état.

  3. Quand ce code est exécuté, l’activité est mise à jour avec la position de l’appareil et les fonctionnalités d’affichage actuelles (si l’affichage est réparti de part et d’autre du pli ou de la charnière). Ajoutez du code supplémentaire pour rechercher plus d’informations dans l’objet FoldingFeature.

Exemples

Le dépôt GitHub surface-duo-jetpack-window-manager-samples contient un nombre d’exemples Kotlin illustrant différents modèles d’expérience utilisateur du double écran créés avec le Gestionnaire de fenêtres Jetpack.

API Java

Reportez-vous au billet de blog sur la mise à jour alpha10 du Gestionnaire de fenêtres Jetpack et à cet exemple Java pour voir comment accéder à la classe via .

Ressources