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 illustre l'organisation de l'écran avec le fenêtrage sur le bureau. est activé. 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 au niveau en haut de l'écran et faites glisser la poignée dans l'interface utilisateur, comme illustré dans la figure 2.

Lorsqu'une application est ouverte dans le fenêtrage du bureau, les autres applications s'ouvrent dans des fenêtres du bureau bien.

Figure 2 : Appuyez de manière prolongée sur la poignée de la fenêtre de l'application, puis faites-la glisser pour activer le fenêtrage sur ordinateur.

Les utilisateurs peuvent également appeler le fenêtrage de bureau à partir du menu qui s'affiche sous le poignée de fenêtre lorsque vous appuyez ou cliquez dessus, ou utilisez le raccourci clavier Touche Méta (Windows, Commande ou Recherche)+Ctrl+Bas.

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

Pour revenir au fenêtrage du bureau, appuyez ou cliquez sur la vignette Espace du bureau dans Écran "Récents".

Redimensionnement et mode de compatibilité

Dans la fenêtre de bureau, les applications dont l'orientation est verrouillée sont librement redimensionnables. 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'UI des applications déclarées comme non redimensionnables (resizableActivity = false, par exemple) est redimensionnée tout en conservant les mêmes proportions.

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 leur viseur 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 Les hypothèses entraînant des erreurs de calcul de l'aperçu ou de l'image capturée ou d'un format générant des images étirées, latérales 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é pour les applications d'appareil photo, consultez Mode de compatibilité de l'appareil :

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 dans le fenêtrage de bureau ont une barre d'en-tête, même dans 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 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 est transparente pour permettre aux applications d'y dessiner du contenu personnalisé. la barre d’en-tête.

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

Les applications peuvent modifier l'apparence des éléments système dans la légende pour les thèmes clair et sombre avec APPEARANCE_LIGHT_CAPTION_BARS, de la même manière que la barre d'état et la barre de navigation sont activées.

Android 15 a également introduit WindowInsets#getBoundingRects() qui permet aux applications d'introduire plus en détail les encarts de la barre de sous-titres. Les applications peuvent différencier les zones où le système dessine des éléments système et zones inutilisées dans lesquelles les applications peuvent placer du contenu personnalisé sans que les éléments système ne se chevauchent.

Liste de Rect renvoyés par l'API indiquent les régions système qui à é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 permet à plusieurs de votre application peut augmenter considérablement la productivité des utilisateurs.

Android 15 introduit PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI, les applications pouvant spécifier que l'UI du système doit être affichée pour que l'application pour qu'il puisse être lancé en tant qu'instances multiples.

Gérer les instances d'application avec des gestes de déplacement

En mode multifenêtre, les utilisateurs peuvent démarrer une nouvelle instance d'application en faisant glisser une vue. en dehors 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 glisser-déposer non géré doit être délégué au système pour être démarré si aucune fenêtre visible ne gère le dépôt. Lors de l'utilisation de cet indicateur, l'appelant doit fournir ClipData par un élément Item contenant un des IntentSender immuables à un activité à lancer (voir ClipData.Item.Builder#setIntentSender()). Le système peut lancer l'intent ou non en fonction de facteurs tels que l'écran actuel ou le mode de fenêtrage. Si le système ne lance pas l'intent, celui-ci est annulé par le flux de glisser-déposer normal.

  • DRAG_FLAG_GLOBAL_SAME_APPLICATION: Indique qu'une opération de déplacement peut dépasser les limites de la 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

Autres optimisations

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 de la valeur à l'utilisateur. Vous pouvez utiliser le ActivityOptions#setLaunchBounds() pour spécifier une taille et une position par défaut lorsqu'une activité est lancée.

Activer le mode plein écran depuis un ordinateur

Les applications peuvent passer en mode plein écran par programmation en appelant Activity#requestFullScreenMode() La méthode met l'application en mode plein écran directement depuis la fenêtre du bureau.