Prise en charge du mode multifenêtre

Sous Android 7.0 et versions ultérieures, les appareils peuvent afficher plusieurs applications simultanément à l'aide du mode multifenêtre. Android est compatible avec trois configurations multifenêtre :

  • Forme libre: permet aux utilisateurs de redimensionner dynamiquement les volets d'activité et d'afficher plus de deux applications à l'écran. Pour le fenêtrage du bureau, les utilisateurs peuvent créer des fenêtres de forme libre sur un bureau qui offre des interactions de type bureau.
  • Écran partagé: implémentation du mode multifenêtre par défaut, qui fournit deux volets d'activité dans lesquels les utilisateurs peuvent placer des applications.
  • Picture-in-picture (PIP): permet aux appareils exécutant Android de lire du contenu vidéo dans une petite fenêtre pendant que l'utilisateur interagit avec d'autres applications.

Conditions requises pour les appareils en mode multifenêtre

La prise en charge du mode multifenêtre est activée par défaut dans Android 7.0 et versions ultérieures. Pour la désactiver, définissez l'indicateur config_supportsMultiWindow sur false dans le fichier config.xml de votre appareil.

Le mode multifenêtre est désactivé par défaut sur tous les appareils à faible RAM (appareils qui déclarent ActivityManager.isLowRam). Les appareils à faible RAM ignorent la valeur de l'indicateur config_supportsMultiWindow.

Forme libre

Le fenêtrage de forme libre permet à l'utilisateur de créer des fenêtres redimensionnables. Il s'agit d'une condition préalable au fenêtrage du bureau. Voici les conditions requises pour activer le fenêtrage de forme libre sur un appareil :

  • Activez l'indicateur config_supportsMultiWindow.
  • Activez la gestion des fenêtres de forme libre de l'une des manières suivantes :
    • Activez l'indicateur config_freeformWindowManagement dans config.xml :
      <feature name="android.software.freeform_window_management" />
    • Incluez les éléments suivants dans le fichier makefile de l'appareil :
      PRODUCT_COPY_FILES += \
      frameworks/native/data/etc/android.software.freeform_window_management.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/android.software.freeform_window_management.xml

Dans Android 16, les OEM peuvent prendre en charge le fenêtrage du bureau sur leur appareil pour une configuration en mode multifenêtre de forme libre à l'aide de l'option Activer le fenêtrage du bureau.

Fenêtrage du bureau

Le fenêtrage du bureau fournit un espace de travail pour le multitâche sur les grands écrans, basé sur des fenêtres de forme libre. L'espace de travail existe en plein écran, avec des fonctionnalités et des comportements d'UI supplémentaires qui offrent à l'utilisateur une expérience multitâche plus flexible :

  • Interaction avec le clavier ou la souris : prend en charge les interactions tactiles et celles avec le clavier ou la souris.
  • Fenêtres de forme libre : exécute les applications dans des fenêtres redimensionnables et déplaçables avec des barres de titre et des commandes.
  • Barre des tâches améliorée : permet d'accéder facilement aux applications en cours d'exécution et épinglées.
  • Optimisation des écrans externes : transforme les moniteurs connectés en environnements de bureau pour les appareils compatibles.
  • Bureaux virtuels : permet aux utilisateurs d'organiser les applications sur plusieurs espaces de travail.

Pour configurer un appareil pour le fenêtrage du bureau , respectez les conditions préalables suivantes :

  • Activez les indicateurs suivants :
    • Toutes les conditions préalables au fenêtrage de forme libre
    • L'indicateur global de fenêtrage du bureau config_isDesktopModeSupported
  • L'UI du système nécessite un écran d'au moins 600 dp de large. Le fenêtrage du bureau peut ne pas fonctionner comme prévu sur les petits écrans.
  • L'appareil ne doit pas être un appareil à faible RAM. ActivityManager.isLowRam doit renvoyer false, car les appareils à faible RAM ne sont éligibles à aucune fonctionnalité multifenêtre.

Le tableau suivant répertorie les configurations dans lesquelles un appareil peut être configuré pour le fenêtrage du bureau, en fonction de la taille de l'écran et de l'utilisation prévue de l'appareil :

Mode Appareil portable en plein écran uniquement Appareil portable en plein écran d'abord, puis projection sur un écran connecté Grand écran en plein écran d'abord, puis extension sur un écran connecté Grand écran en mode fenêtrage du bureau d'abord
Exemple de facteur de forme Téléphone portable Téléphone portable compatible avec la connexion HDMI à un écran externe Tablette compatible avec la connexion HDMI à un écran externe Tablette avec clavier compatible avec la connexion HDMI à un écran externe
Expérience d'affichage interne Plein écran, écran partagé, PIP, forme libre non bureau pris en charge Plein écran, écran partagé, PIP pris en charge Plein écran, écran partagé, PIP pris en charge avec le fenêtrage du bureau via des bureaux distincts Le fenêtrage du bureau est le mode de fenêtrage par défaut (bureaux distincts pris en charge) ; les utilisateurs peuvent passer en plein écran ou en mode tactile via des bureaux distincts
Expérience d'affichage connecté Mise en miroir de l'écran interne uniquement Fenêtrage du bureau uniquement sur les écrans connectés Le fenêtrage du bureau étend les bureaux ; disponible sur les écrans internes Le fenêtrage du bureau étend les bureaux ; disponible sur les écrans internes
Paramètres de configuration
config_supportsMultiWindow true true true true
config_freeformWindowManagement true true true true
config_isDesktopModeSupported false true true true
config_canInternalDisplayHostDesktops Ignoré false true true
config_enterDesktopByDefaultOnFreeformDisplay Ignoré false false true

config_isDesktopModeSupported

L'indicateur de superposition de configuration config_isDesktopModeSupported est l'indicateur de niveau supérieur permettant d'activer le fenêtrage du bureau. S'il n'est pas activé, tous les autres paramètres de configuration sont ignorés. Définissez-le sur true dans config.xml :

<!-- Globally enable Desktop windowing logic -->
    <bool name="config_isDesktopModeSupported">true</bool>

Lorsque config_isDesktopModeSupported est true, le système traite automatiquement les écrans externes éligibles (tels que ceux connectés par DisplayPort ou HDMI) comme candidats au fenêtrage du bureau. L'écran doit être considéré comme éligible par le gestionnaire de fenêtres (au moins public et approuvé, voir Fenêtrage du bureau). Par défaut, le système tente de lancer des tâches en mode de forme libre sur ces écrans.

config_canInternalDisplayHostDesktops

L'indicateur de superposition de configuration config_canInternalDisplayHostDesktops active le fenêtrage du bureau sur l'écran interne de l'appareil. Définissez-le sur true dans config.xml :

<!-- Allow the primary internal display to host desktop sessions -->
    <bool name="config_canInternalDisplayHostDesktops">true</bool>

Le fenêtrage du bureau fonctionne mieux sur un appareil à grand écran comme une tablette que sur un téléphone portable plus petit. S'il n'est pas activé, le fenêtrage du bureau n'est compatible que sur un écran externe (en supposant que l'appareil est compatible avec la connexion HDMI).

config_enterDesktopByDefaultOnFreeformDisplay

L'indicateur de superposition de configuration config_enterDesktopByDefaultOnFreeformDisplay définit le fenêtrage du bureau comme mode de fenêtrage par défaut sur l'écran interne de l' appareil. S'il n'est pas activé, le mode de fenêtrage par défaut est le plein écran, avec les bureaux coexistent. Définissez-le sur true dans config.xml :

<!-- Enable Desktop windowing as the default windowing mode on the internal display -->
    <bool name="config_enterDesktopByDefaultOnFreeformDisplay">true</bool>

Activer les limites de tâches

Pour configurer le nombre maximal de tâches compatibles avec le fenêtrage du bureau, définissez l'indicateur de superposition de configuration config_maxDesktopWindowingActiveTasks dans config.xml sur le nombre maximal de tâches compatibles. Pour prendre en charge un nombre illimité de tâches, définissez la valeur de l'indicateur sur 0 :

<!-- Maximum number of tasks supported in desktop windowing -->
      <integer name="config_maxDesktopWindowingActiveTasks">4</integer>

Activer les limites de bureaux

Pour configurer le nombre maximal de bureaux virtuels compatibles avec le fenêtrage du bureau, définissez l'indicateur de superposition de configuration config_maxDesktopWindowingDesks dans config.xml sur le nombre maximal de bureaux compatibles. Pour prendre en charge un nombre illimité de bureaux, définissez la valeur de l'indicateur sur 0 :

<!-- Maximum number of virtual desks supported in desktop windowing -->
      <integer name="config_maxDesktopWindowingDesks">4</integer>

Écran partagé

L'expérience par défaut du mode multifenêtre est le mode Écran partagé, dans lequel l'UI du système est divisée au milieu de l'appareil en mode Portrait ou Paysage. Les utilisateurs peuvent redimensionner la fenêtre en faisant glisser la ligne de séparation d'un côté à l'autre ou de haut en bas, selon l'orientation de l'appareil.

Après avoir activé l'écran partagé, les fabricants d'appareils peuvent choisir d'activer la forme libre ou le PIP.

Android 8.0 et versions ultérieures améliorent l'écran partagé en compressant le lanceur lorsque l'utilisateur appuie sur Accueil. Pour en savoir plus sur l'implémentation, consultez Interactions avec l'écran partagé.

Picture-in-picture

Après avoir activé le mode multifenêtre avec l' config_supportsMultiWindow indicateur, les fabricants d'appareils peuvent prendre en charge le mode Picture-in-picture, qui permet aux utilisateurs de regarder des vidéos tout en effectuant d'autres activités. Bien que cette fonctionnalité soit destinée aux appareils Android TV, d'autres types d'appareils peuvent la prendre en charge.

Pour prendre en charge le PIP, activez la PackageManager#FEATURE_PICTURE_IN_PICTURE fonctionnalité système dans /android/frameworks/base/core/java/android/content/pm/PackageManager.java.

Pour en savoir plus sur l'implémentation du PIP pour les appareils exécutant Android 8.0 et versions ultérieures, consultez Picture-in-picture.

UI du système

Prenez en charge toutes les UI système standards conformément à la section Validation du mode multifenêtre.

Applications

Pour prendre en charge le mode multifenêtre pour les applications préchargées, consultez Prise en charge du mode multifenêtre.

Validation

Pour valider votre implémentation du mode multifenêtre, exécutez les tests CTS associés et suivez la section Validation du mode multifenêtre.

Version d'Android Test CTS
7.0 /platform/cts/hostsidetests/services/activitymanager/src/android/server/cts
8.0 /platform/cts/hostsidetests/services/activityandwindowmanager/activitymanager/src/android/server/cts
9.0 /platform/cts/tests/framework/base/activitymanager/src/android/server/am
Android 10 et versions ultérieures /platform/cts/tests/framework/base/windowmanager/src/android/server/wm