Prendre en charge le fenêtrage de bureau

La gestion des fenêtres de bureau permet aux utilisateurs d'exécuter plusieurs applications simultanément dans des fenêtres d'application redimensionnables pour une expérience polyvalente semblable à celle d'un ordinateur de bureau.

La figure 1 montre l'organisation de l'écran lorsque la gestion des fenêtres du bureau est activée. Points à noter :

  • Les utilisateurs peuvent exécuter plusieurs applications côte à côte simultanément.
  • La barre des tâches est fixe en bas de l'écran et affiche les applications en cours d'exécution. Les utilisateurs peuvent épingler des applications pour y accéder rapidement.
  • Une nouvelle barre d'en-tête personnalisable s'affiche en haut de chaque fenêtre avec des commandes telles que "Réduire" et "Agrandir".
Figure 1 : Fenêtrage de bureau sur une tablette.

Par défaut, les applications s'ouvrent en plein écran sur les tablettes Android. Pour lancer une application en mode fenêtrage sur ordinateur, appuyez de manière prolongée sur la poignée de la fenêtre en haut de l'écran, puis faites-la glisser dans l'interface utilisateur, comme illustré dans la figure 2.

Lorsqu'une application est ouverte dans une fenêtre d'ordinateur, les autres applications s'ouvrent également dans des fenêtres d'ordinateur.

Figure 2 : Appuyez de manière prolongée sur la poignée de la fenêtre de l'application, puis faites-la glisser pour passer en mode fenêtrage du bureau.

Les utilisateurs peuvent également utiliser le menu qui s'affiche sous la poignée de la fenêtre lorsque vous appuyez dessus ou cliquez dessus, ou utiliser le raccourci clavier Touche Meta (Windows, Commande ou Recherche) + Ctrl + Bas.

Les utilisateurs quittent le fenêtrage sur ordinateur en fermant toutes les fenêtres actives, ou en saisissant la poignée de la fenêtre en haut d'une fenêtre d'ordinateur de bureau et en faisant glisser l'application vers le haut de l'écran. Le raccourci clavier Méta+H permet également de quitter le fenêtrage sur le bureau et d'exécuter à nouveau les applications en plein écran.

Pour revenir au fenêtrage sur le bureau, appuyez ou cliquez sur la vignette Espace sur le bureau dans l'écran "Recents" (Éléments récents).

Redimensionnement et mode de compatibilité

Avec le fenêtrage pour ordinateur, les applications dont l'orientation est verrouillée peuvent être redimensionnées librement. Cela signifie que même si une activité est verrouillée en mode portrait, les utilisateurs peuvent toujours redimensionner l'application en mode paysage.

Figure 3 : Redimensionnement de la fenêtre d'une application limitée au mode portrait en mode paysage.

L'interface utilisateur des applications déclarées comme non redimensionnables (c'est-à-dire resizeableActivity = false) est mise à l'échelle tout en conservant le même format.

Figure 4 : L'UI d'une application non redimensionnable s'ajuste à mesure que la fenêtre est redimensionnée.

Les applications d'appareil photo qui verrouillent l'orientation ou qui sont déclarées comme non redimensionnables bénéficient d'un traitement spécial pour leurs viseurs d'appareil photo: la fenêtre est entièrement redimensionnable, mais le viseur conserve le même format. En supposant que les applications s'exécutent toujours en mode portrait ou paysage, les applications codent en dur ou font des suppositions qui entraînent des erreurs de calcul de l'orientation ou du format de l'aperçu ou de l'image capturée, ce qui entraîne des images étirées, de côté ou à l'envers.

Tant que les applications ne sont pas prêtes à implémenter des viseurs d'appareil photo entièrement responsifs, le traitement spécial offre une expérience utilisateur plus basique qui atténue les effets des mauvaises hypothèses.

Pour en savoir plus sur le mode de compatibilité des applications d'appareil photo, consultez la section Mode de compatibilité avec les appareils.

Figure 5 Le viseur de l'appareil photo conserve son format lorsque la fenêtre est redimensionnée.

En-têtes intégrés personnalisables

Toutes les applications exécutées en mode fenêtrage classique disposent d'une barre d'en-tête, même en mode immersif.
Assurez-vous que le contenu de votre application n'est pas masqué par la barre d'en-tête. La barre d'en-tête est un type de barre de légende en retrait : androidx.compose.foundation.layout.WindowInsets.Companion.captionBar(). Dans les vues, WindowInsets.Type.captionBar(), qui fait partie des barres système.

Pour en savoir plus sur la gestion des encarts, consultez Afficher le contenu bord à bord dans votre application et gérer les encarts de fenêtre dans Compose.

La barre d'en-tête est également personnalisable. Android 15 a introduit le type d'apparence APPEARANCE_TRANSPARENT_CAPTION_BAR_BACKGROUND pour rendre la barre d'en-tête transparente et permettre aux applications de dessiner du contenu personnalisé dans la barre d'en-tête.

Les applications doivent ensuite styliser la partie supérieure de leur contenu pour qu'elle ressemble à la barre de sous-titres (arrière-plan, contenu personnalisé, etc.), à l'exception des éléments de sous-titres du système (boutons "Fermer" et "Agrandir"), qui sont dessinés par le système sur la barre de sous-titres transparente au-dessus de l'application.

Les applications peuvent basculer l'apparence des éléments système dans la légende pour les thèmes clair et sombre à l'aide de APPEARANCE_LIGHT_CAPTION_BARS, comme pour la barre d'état et la barre de navigation.

Android 15 a également introduit la méthode WindowInsets#getBoundingRects(), qui permet aux applications d'inspecter plus en détail les marges intérieures de la barre de sous-titres. Les applications peuvent faire la différence entre les zones où le système dessine des éléments système et les zones inutilisées où les applications peuvent placer du contenu personnalisé sans que les éléments système ne se chevauchent.

La liste des objets Rect renvoyés par l'API indique les régions système à éviter. Tout espace restant (calculé en soustrayant les rectangles des marges intérieures de la barre de titre) est l'espace où l'application peut dessiner sans chevaucher les éléments système et avec la possibilité de recevoir des entrées.

Chrome avant et après l'implémentation d'en-têtes personnalisés.
Figure 6. Chrome avant et après l'implémentation d'en-têtes personnalisés.

Compatibilité avec le multitâche et les instances multiples

Le multitâche est au cœur du fenêtrage de bureau, et autoriser plusieurs instances de votre application peut augmenter considérablement la productivité des utilisateurs.

Android 15 introduit PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI, que les applications peuvent définir pour spécifier que l'UI système doit être affichée pour que l'application puisse être lancée en plusieurs instances.

Gérer les instances d'application à l'aide de gestes de glissement

En mode multifenêtre, les utilisateurs peuvent démarrer une nouvelle instance d'application en faisant glisser un élément de vue hors de la fenêtre de l'application. Les utilisateurs peuvent également déplacer des éléments entre les instances de la même application.

Figure 7 : Démarrez une nouvelle instance de Chrome en faisant glisser un onglet en dehors de la fenêtre du bureau.

Android 15 introduit deux options pour personnaliser le comportement de glisser-déposer:

  • DRAG_FLAG_START_INTENT_SENDER_ON_UNHANDLED_DRAG : indique qu'un déplacement non géré doit être délégué au système pour être lancé si aucune fenêtre visible ne gère le déplacement. Lorsque vous utilisez cet indicateur, l'appelant doit fournir à ClipData un Item contenant un IntentSender immuable vers une activité à lancer (voir ClipData.Item.Builder#setIntentSender()). Le système peut lancer l'intent ou non en fonction de facteurs tels que la taille de l'écran actuelle ou le mode de fenêtrage. Si le système ne lance pas l'intent, celui-ci est annulé à l'aide du flux normal de glisser-déposer.

  • DRAG_FLAG_GLOBAL_SAME_APPLICATION : indique qu'une opération de déplacement peut dépasser les limites d'une fenêtre (pour plusieurs instances de la même application).

    Lorsque startDragAndDrop() est appelé avec cet indicateur défini, seules les fenêtres visibles appartenant à la même application peuvent participer à l'opération de glisser-déposer et recevoir le contenu glissé.

Figure 8 Déplacer un onglet entre deux instances de l'application Chrome

Optimisations supplémentaires

Personnalisez le lancement des applications et la transition des applications de la fenêtre de bureau au plein écran.

Spécifier la taille et la position par défaut

Même si elles sont redimensionnables, toutes les applications n'ont pas besoin d'une grande fenêtre pour offrir une valeur ajoutée aux utilisateurs. Vous pouvez utiliser la méthode ActivityOptions#setLaunchBounds() pour spécifier une taille et une position par défaut lorsqu'une activité est lancée.

Passer en mode plein écran depuis l'espace de bureau

Les applications peuvent passer en plein écran en appelant Activity#requestFullScreenMode(). Cette méthode affiche l'application en plein écran directement à partir du fenêtrage sur ordinateur.