Multi-Window — este un set de moduri de multitasking în Android care permite rularea mai multor aplicații simultan pe ecran. Sistemul include trei moduri: Split Screen pentru împărțirea ecranului în două părți, Picture-in-Picture pentru video într-o fereastră miniaturală și Freeform pentru ferestre de dimensiuni arbitrare pe ecrane mari. Conform Android Developers (2025), suportul Multi-Window este obligatoriu pentru dispozitivele cu lățimea ecranului de 600 dp și mai mult, iar fiecare dezvoltator trebuie să adapteze aplicația la posibilele modificări ale dimensiunii ferestrei.
Principalele puncte
Multi-Window — este o funcție Android introdusă în versiunea 7.0 Nougat (API 24), care permite rularea a două sau mai multe aplicații simultan pe ecran. Modul a devenit răspunsul Google la popularitatea în creștere a tabletelor și dispozitivelor cu ecran mare, unde modul monotask limitează productivitatea.
Înainte de Android 7.0 fiecare aplicație ocupa tot ecranul — la comutarea între aplicații, cea anterioară se minimiza. Multi-Window a schimbat acest model: acum aplicația poate ocupa o parte din ecran, rămânând activă. Pentru dezvoltator, aceasta înseamnă că onConfigurationChanged și gestionarea modificărilor de dimensiune devin obligatorii.
În Android 12L (2022) Google a făcut Multi-Window modul implicit pentru dispozitivele cu ecran mare — toate aplicațiile pe tablete se lansează în modul care permite multi-fereastră. Excepție sunt doar aplicațiile cu interdicție explicită în manifest.
Split Screen — cel mai răspândit mod. Ecranul se împarte în două părți orizontal sau vertical, utilizatorul trage separatorul. Disponibil pe telefoane și tablete. Se lansează prin Overview (Recents) — trăgând pictograma aplicației spre marginea de sus sau de jos.
Picture-in-Picture (PiP) — mod pentru aplicații video și de navigație. Conținutul se afișează într-o fereastră miniaturală plutitoare (aproximativ 15–25% din ecran), care poate fi mutată. Disponibil pe Android 8.0+. Pentru activare se folosește enterPictureInPictureMode() în Activity.
Freeform — mod de ferestre de dimensiuni arbitrare, similar managerilor de ferestre desktop. Disponibil pe Android TV și pe unele dispozitive cu ecran mare ale producătorilor (Samsung DeX). Aplicațiile se lansează în ferestre cu titlu și butoane de control.
Când utilizatorul activează Multi-Window, Android creează o nouă instanță Activity pentru fiecare aplicație și distribuie spațiul disponibil pe ecran. Activitățile sunt plasate în Task-uri separate, dar folosesc același StackView cu un separator între ele.
Sistemul notifică fiecare Activity despre modificarea dimensiunii prin onConfigurationChanged(). Dacă Activity nu gestionează acest eveniment — este recreată (recreate). Pentru Split Screen lățimea ferestrei poate scădea până la 220 dp — lățimea minimă suportată de platformă.
Android permite aplicației să declare lățimea minimă prin android:minWidth și android:minHeight în manifest. Dacă spațiul disponibil este mai mic decât valorile specificate — Activity intră în pauză.
Pentru suportul Multi-Window este necesar să setați flag-ul android:resizeableActivity="true" în manifest. Aceasta înseamnă că aplicația poate schimba dimensiunea la modificarea ferestrei. În mod implicit pe Android 12L+ toate aplicațiile sunt considerate resizeable — flag-ul este ignorat.
La modificarea dimensiunii ferestrei, Activity poate fi recreată (implicit) sau poate gestiona evenimentul în onConfigurationChanged, dacă în manifest sunt specificate configChanges="screenSize|smallestScreenSize". Se recomandă specificarea configChanges pentru Activity-urile cheie, pentru a evita pierderea stării.
<activity
android:name=".MainActivity"
android:resizeableActivity="true"
android:configChanges="screenSize|smallestScreenSize|orientation" />
Pentru aplicațiile care nu suportă modificarea dimensiunii, Android afișează o fereastră de dialog cu avertisment. În acest caz, la comutarea în modul multi-fereastră, sistemul poate termina Activity și poate afișa un snackbar cu propunerea de repornire.
Multi-Window modifică ciclul de viață standard al Activity. Când o altă aplicație devine activă în fereastra vecină, Activity curentă primește apelul onPause(), dar nu onStop() — rămâne vizibilă, deși nu este în focalizare. Este important: playerul video trebuie să continue redarea la onPause, nu la onStop.
Dezvoltatorul trebuie să distingă stările: onPause + isInMultiWindowMode() = true înseamnă doar pierderea focalizării, nu ieșirea de pe ecran. Pentru video și animații, acesta este un semnal de a nu opri redarea, ci doar de a elimina evidențierea elementelor de control.
La ieșirea din Multi-Window onMultiWindowModeChanged() este apelat înainte de onResume(). Aceasta oferă posibilitatea de a reconstrui interfața pentru modul ecran complet înainte ca utilizatorul să înceapă interacțiunea.
Prima regulă — păstrarea stării. În modul multi-fereastră Activity poate fi recreată în orice moment. Folosiți SavedStateHandle în ViewModel sau onSaveInstanceState pentru toate datele care trebuie păstrate între modificările de configurare.
A doua — testarea la lățimea minimă de 220 dp. Această valoare este considerată cea mai îngustă fereastră în Split Screen. Interfața trebuie să rămână lizibilă și funcțională. Dacă unele elemente ies din limite — utilizați Window Size Class pentru comutarea între layout-uri.
A treia — dezactivarea funcționalității care nu funcționează în Multi-Window. De exemplu, Camera poate fi indisponibilă dacă ecranul este prea mic. Verificați isInMultiWindowMode() înainte de a porni camera sau alte funcții pe ecran complet.
Întrebări frecvente
Setați android:resizeableActivity="false" în manifest. Pe Android 12L+ flag-ul este ignorat pentru dispozitivele cu ecran mare, așadar pentru interzicerea completă utilizați android:maxAspectRatio.
Apelați isInMultiWindowMode() din Activity. Metoda returnează true dacă aplicația rulează în Split Screen, PiP sau Freeform. De asemenea, vă puteți abona la onMultiWindowModeChanged().
Pe Android TV este disponibil doar modul Picture-in-Picture. Split Screen și Freeform nu sunt suportate — televizoarele folosesc un ecran principal cu o fereastră PiP în colț.
Foreground-service își continuă activitatea indiferent de mod. Dar dacă aplicația trece în PiP, sistemul poate întrerupe temporar execuția pentru economisirea resurselor.
Android suportă Drag and Drop între ferestre în Multi-Window prin ClipData și View.OnDragListener. Datele sunt transmise prin ContentProvider sau Intent cu FLAG_GRANT_READ_URI_PERMISSION.
Concluzii
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și