Multi-Window est un ensemble de modes multitâche dans Android qui permet d'exécuter plusieurs applications sur l'écran simultanément. Le système comprend trois modes : Split Screen pour diviser l'écran en deux parties, Picture-in-Picture pour la vidéo dans une mini-fenêtre et Freeform pour des fenêtres de taille arbitraire sur les grands écrans. Selon Android Developers (2025), la prise en charge de Multi-Window est obligatoire pour les appareils avec une largeur d'écran de 600 dp ou plus, et chaque développeur doit adapter son application aux éventuels changements de taille de fenêtre.
Points clés
Multi-Window est une fonctionnalité d'Android introduite dans la version 7.0 Nougat (API 24) qui permet d'exécuter deux applications ou plus sur l'écran simultanément. Ce mode était la réponse de Google à la popularité croissante des tablettes et des appareils à grand écran, où le mode mon tâche limite la productivité.
Avant Android 7.0, chaque application occupait tout l'écran — lors du changement d'application, la précédente était réduite. Multi-Window a changé ce modèle : désormais une application peut occuper une partie de l'écran tout en conservant son état actif. Pour les développeurs, cela signifie que onConfigurationChanged et la gestion des changements de taille deviennent obligatoires.
Sur Android 12L (2022), Google a fait de Multi-Window le mode par défaut pour les appareils à grand écran — toutes les applications sur les tablettes s'exécutent dans un mode qui autorise le multi-fenêtres. Les seules exceptions sont les applications avec une interdiction explicite dans le manifeste.
Split Screen — le mode le plus courant. L'écran est divisé en deux parties horizontalement ou verticalement, l'utilisateur fait glisser le séparateur. Disponible sur les téléphones et tablettes. Activé via Overview (Recents) — en faisant glisser l'icône de l'application vers le bord supérieur ou inférieur.
Picture-in-Picture (PiP) — un mode pour les applications vidéo et de navigation. Le contenu s'affiche dans une mini-fenêtre flottante (environ 15 à 25 % de l'écran) qui peut être déplacée. Disponible sur Android 8.0+. Pour l'activer, utilisez enterPictureInPictureMode() dans l'Activity.
Freeform — un mode pour les fenêtres de taille arbitraire, similaire aux gestionnaires de fenêtres de bureau. Disponible sur Android TV et certains appareils à grand écran de fabricants (Samsung DeX). Les applications s'exécutent dans des fenêtres avec une barre de titre et des boutons de contrôle.
Lorsqu'un utilisateur active Multi-Window, Android crée une nouvelle instance d'Activity pour chaque application et distribue l'espace d'écran disponible. Les Activities sont placées dans des Tasks séparées mais utilisent le même StackView avec un séparateur entre elles.
Le système notifie chaque Activity du changement de taille via onConfigurationChanged(). Si l'Activity ne gère pas cet événement, elle est recréée. Pour Split Screen, la largeur de la fenêtre peut diminuer jusqu'à 220 dp — la largeur minimale prise en charge par la plateforme.
Android permet à une application de déclarer une largeur minimale via android:minWidth et android:minHeight dans le manifeste. Si l'espace disponible est inférieur à ces valeurs, l'Activity se met en pause.
Pour prendre en charge Multi-Window, vous devez définir l'indicateur android:resizeableActivity="true" dans le manifeste. Cela signifie que l'application peut se redimensionner lorsque la fenêtre change. Par défaut sur Android 12L+, toutes les applications sont considérées comme redimensionnables — l'indicateur est ignoré.
Lorsque la taille de la fenêtre change, l'Activity peut être recréée (par défaut) ou gérer l'événement dans onConfigurationChanged si configChanges="screenSize|smallestScreenSize" est spécifié dans le manifeste. Il est recommandé de spécifier configChanges pour les Activities clés afin d'éviter la perte d'état.
<activity
android:name=".MainActivity"
android:resizeableActivity="true"
android:configChanges="screenSize|smallestScreenSize|orientation" />
Pour les applications qui ne prennent pas en charge le redimensionnement, Android affiche une boîte de dialogue d'avertissement. Dans ce cas, lors du passage en mode multi-fenêtres, le système peut terminer l'Activity et afficher un snackbar avec une proposition de redémarrage.
Multi-Window modifie le cycle de vie standard de l'Activity. Lorsqu'une autre application devient active dans la fenêtre adjacente, l'Activity actuelle reçoit un appel à onPause() mais pas à onStop() — elle reste visible, bien que non focalisée. C'est important : un lecteur vidéo doit continuer la lecture sur onPause, pas sur onStop.
Les développeurs doivent distinguer les états : onPause + isInMultiWindowMode() = true signifie seulement une perte de focus, pas une sortie de l'écran. Pour la vidéo et les animations, c'est un signal pour ne pas arrêter la lecture mais seulement désélectionner les éléments de contrôle.
En quittant Multi-Window, onMultiWindowModeChanged() est appelé avant onResume(). Cela donne l'opportunité de reconstruire l'interface pour le mode plein écran avant que l'utilisateur ne commence à interagir.
La première règle est de sauvegarder l'état. En mode multi-fenêtres, l'Activity peut être recréée à tout moment. Utilisez SavedStateHandle dans ViewModel ou onSaveInstanceState pour toutes les données qui doivent persister entre les changements de configuration.
La deuxième règle est de tester à une largeur minimale de 220 dp. Cette valeur est considérée comme la fenêtre la plus étroite en Split Screen. L'interface doit rester lisible et fonctionnelle. Si certains éléments dépassent les limites, utilisez Window Size Class pour basculer entre les mises en page.
La troisième règle est de désactiver les fonctionnalités qui ne fonctionnent pas en Multi-Window. Par exemple, Camera peut ne pas être disponible si l'écran est trop petit. Vérifiez isInMultiWindowMode() avant de lancer la caméra ou d'autres fonctions plein écran.
Questions fréquentes
Définissez android:resizeableActivity="false" dans le manifeste. Sur Android 12L+, l'indicateur est ignoré pour les appareils à grand écran, donc pour une interdiction complète utilisez android:maxAspectRatio.
Appelez isInMultiWindowMode() depuis l'Activity. La méthode renvoie true si l'application s'exécute en Split Screen, PiP ou Freeform. Vous pouvez également vous abonner à onMultiWindowModeChanged().
Sur Android TV, seul le mode Picture-in-Picture est disponible. Split Screen et Freeform ne sont pas pris en charge — les téléviseurs utilisent un écran principal avec une fenêtre PiP dans le coin.
Un service au premier plan continue de fonctionner quel que soit le mode. Cependant, si l'application passe en PiP, le système peut suspendre temporairement l'exécution pour économiser les ressources.
Android prend en charge le glisser-déposer entre les fenêtres en Multi-Window via ClipData et View.OnDragListener. Les données sont transférées via ContentProvider ou Intent avec FLAG_GRANT_READ_URI_PERMISSION.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi