In Android 7.0 e versioni successive, i dispositivi possono visualizzare più app contemporaneamente utilizzando la funzionalità Multi-finestra. Android supporta tre configurazioni Multi-finestra:
- In formato libero: consente agli utenti di ridimensionare dinamicamente i riquadri delle attività sullo schermo e di visualizzare più di due app. Per le finestre delle app, gli utenti possono creare finestre in formato libero su un computer che offre interazioni in stile desktop.
- Schermo diviso: l'implementazione Multi-finestra predefinita, che fornisce due riquadri delle attività in cui gli utenti possono inserire le app.
- Picture in picture (PIP): consente ai dispositivi che eseguono Android di riprodurre contenuti video in una piccola finestra mentre l'utente interagisce con altre app.
Requisiti dei dispositivi per la funzionalità Multi-finestra
Il supporto della funzionalità Multi-finestra è attivo per impostazione predefinita in Android 7.0 e versioni successive.
Per disattivarlo, imposta il flag config_supportsMultiWindow su
false nel file
config.xml del dispositivo.
La funzionalità Multi-finestra è disattivata per impostazione predefinita su tutti i dispositivi con poca RAM (dispositivi che
dichiarano ActivityManager.isLowRam). I dispositivi con poca RAM
ignorano il valore del flag config_supportsMultiWindow.
In formato libero
Le finestre in formato libero consentono all'utente di creare finestre ridimensionabili liberamente. Le finestre in formato libero sono un prerequisito per le finestre delle app. I requisiti del dispositivo per attivare le finestre in formato libero sono i seguenti:
-
Attiva il flag
config_supportsMultiWindow. -
Attiva la gestione delle finestre in formato libero in uno dei seguenti modi:
-
Attiva il flag
config_freeformWindowManagementinconfig.xml:<feature name="android.software.freeform_window_management" /> -
Includi quanto segue nel makefile del dispositivo:
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
-
Attiva il flag
In Android 16, gli OEM possono supportare le finestre delle app sul proprio dispositivo per una configurazione Multi-finestra in formato libero utilizzando Attiva finestre delle app.
Finestre delle app
Le finestre delle app forniscono uno spazio di lavoro per il multitasking su schermi di grandi dimensioni, basato su finestre in formato libero. Lo spazio di lavoro esiste insieme alla modalità a schermo intero, con ulteriori funzionalità e comportamenti dell'interfaccia utente che offrono all'utente un'esperienza di multitasking più flessibile:
- Interazione con tastiera o mouse: supporta sia le interazioni touch-first sia quelle con tastiera o mouse-first.
- Finestre in formato libero: esegue le app in finestre ridimensionabili e mobili con barre e controlli della didascalia della finestra.
- Barra delle app migliorata: fornisce un facile accesso alle app in esecuzione e a quelle aggiunte alla barra.
- Ottimizzazione dei display esterni: trasforma i monitor collegati in ambienti desktop per i dispositivi supportati.
- Scrivanie virtuali: consente agli utenti di organizzare le app in più spazi di lavoro.
Per configurare un dispositivo per le finestre delle app, soddisfa i seguenti prerequisiti:
-
Attiva i seguenti flag:
- Tutti i prerequisiti per le finestre in formato libero
- Il flag globale delle finestre delle app
config_isDesktopModeSupported
- L'UI di sistema richiede un display di almeno 600 dp di larghezza. Le finestre delle app potrebbero non funzionare come previsto su schermi più piccoli.
-
Il dispositivo non deve essere un dispositivo con poca RAM.
ActivityManager.isLowRamdeve restituirefalse, poiché i dispositivi con poca RAM non sono idonei per le funzionalità Multi-finestra.
La tabella seguente elenca le configurazioni in cui un dispositivo può essere configurato per le finestre delle app, a seconda delle dimensioni dello schermo e dell'uso previsto del dispositivo:
| Modalità | Dispositivo portatile solo a schermo intero | Dispositivo portatile principalmente a schermo intero che proietta su un display collegato | Schermo di grandi dimensioni principalmente a schermo intero che si estende al display collegato | Schermo di grandi dimensioni principalmente con finestre delle app |
|---|---|---|---|---|
| Fattore di forma di esempio | Smartphone portatile | Smartphone portatile che supporta HDMI su display esterno | Tablet che supporta HDMI su display esterno | Tablet con tastiera che supporta HDMI su display esterno |
| Esperienza del display interno | Schermo intero, schermo diviso, PIP, formato libero non desktop supportato | Schermo intero, schermo diviso, PIP supportato | Schermo intero, schermo diviso, PIP supportato con finestre delle app tramite scrivanie separate | Le finestre delle app sono la modalità di visualizzazione predefinita (scrivanie separate supportate); gli utenti possono accedere alle finestre delle app in modalità a schermo intero o touch tramite scrivanie separate |
| Esperienza del display collegato | Solo mirroring del display interno | Finestre delle app solo su display collegati | Le finestre delle app estendono le scrivanie; disponibili sui display interni | Le finestre delle app estendono le scrivanie; disponibili sui display interni |
| Impostazioni di configurazione | ||||
config_supportsMultiWindow |
true |
true |
true |
true |
config_freeformWindowManagement |
true |
true |
true |
true |
config_isDesktopModeSupported |
false |
true |
true |
true |
config_canInternalDisplayHostDesktops |
Ignorato | false |
true |
true |
config_enterDesktopByDefaultOnFreeformDisplay |
Ignorato | false |
false |
true |
config_isDesktopModeSupported
Il flag di overlay di configurazione config_isDesktopModeSupported è il flag di primo livello per
l'attivazione delle finestre delle app. Se non è attivato, tutte le altre impostazioni di configurazione vengono ignorate.
Impostalo su true in config.xml:
<!-- Globally enable Desktop windowing logic -->
<bool name="config_isDesktopModeSupported">true</bool>
Quando config_isDesktopModeSupported è true, il sistema tratta automaticamente i display esterni idonei (ad esempio quelli collegati tramite DisplayPort o HDMI) come candidati per le finestre delle app.
Il display deve essere considerato idoneo da Window Manager (almeno pubblico e attendibile,
vedi Finestre delle app).
Per impostazione predefinita, il sistema tenta di avviare le attività in modalità in formato libero su questi display.
config_canInternalDisplayHostDesktops
Il flag di overlay di configurazione config_canInternalDisplayHostDesktops attiva le finestre delle app sul display interno del dispositivo. Impostalo su true in
config.xml:
<!-- Allow the primary internal display to host desktop sessions -->
<bool name="config_canInternalDisplayHostDesktops">true</bool>Le finestre delle app funzionano meglio su un dispositivo con schermo di grandi dimensioni come un tablet, rispetto a uno smartphone portatile più piccolo. Se non è attivato, le finestre delle app sono supportate solo su un display esterno (supponendo che il dispositivo supporti HDMI).
config_enterDesktopByDefaultOnFreeformDisplay
Il flag di overlay di configurazione config_enterDesktopByDefaultOnFreeformDisplay imposta
le finestre delle app come modalità di visualizzazione predefinita sul display interno del
dispositivo. Se non è attivato, la modalità di visualizzazione predefinita è a schermo intero, con le scrivanie
coesistenti. Impostalo su true in config.xml:
<!-- Enable Desktop windowing as the default windowing mode on the internal display -->
<bool name="config_enterDesktopByDefaultOnFreeformDisplay">true</bool>Attiva i limiti delle attività
Per configurare il numero massimo di attività supportate nelle finestre delle app, imposta il
flag di overlay di configurazione config_maxDesktopWindowingActiveTasks in config.xml
sul numero massimo di attività supportate. Per supportare un numero illimitato di attività, imposta il
valore del flag su 0:
<!-- Maximum number of tasks supported in desktop windowing -->
<integer name="config_maxDesktopWindowingActiveTasks">4</integer>Attiva i limiti delle scrivanie
Per configurare il numero massimo di scrivanie virtuali supportate nelle finestre delle app, imposta il
flag di overlay di configurazione config_maxDesktopWindowingDesks in config.xml
sul numero massimo di scrivanie supportate. Per supportare un numero illimitato di scrivanie, imposta il
valore del flag su 0:
<!-- Maximum number of virtual desks supported in desktop windowing -->
<integer name="config_maxDesktopWindowingDesks">4</integer>Schermo diviso
L'esperienza predefinita della funzionalità Multi-finestra è la modalità schermo diviso, in cui l'interfaccia utente di sistema è divisa a metà del dispositivo in verticale o in orizzontale. Gli utenti possono ridimensionare la finestra trascinando la linea di divisione da un lato all'altro o dall'alto verso il basso, a seconda dell'orientamento del dispositivo.
Dopo aver attivato lo schermo diviso, i produttori di dispositivi possono scegliere di attivare il formato libero o il PIP.
Android 8.0 e versioni successive migliorano lo schermo diviso comprimendo il launcher quando l'utente tocca Home. Per i dettagli dell'implementazione, vedi Interazioni con lo schermo diviso.
Picture in picture
Dopo aver attivato la modalità Multi-finestra con il
config_supportsMultiWindow flag, i produttori di dispositivi possono
supportare
la modalità Picture in picture, che consente agli utenti di guardare
video mentre sfogliano altre attività. Sebbene questa funzionalità sia destinata ai dispositivi Android TV, altri tipi di dispositivi potrebbero supportarla.
Per supportare la modalità PIP, attiva la
PackageManager#FEATURE_PICTURE_IN_PICTURE funzionalità di sistema in
/android/frameworks/base/core/java/android/content/pm/PackageManager.java.
Per ulteriori dettagli sull'implementazione della modalità PIP per i dispositivi che eseguono Android 8.0 e versioni successive, vedi Picture in picture.
UI di sistema
Supporta tutte le UI di sistema standard in base a verifica della modalità Multi-finestra.
App
Per supportare la modalità Multi-finestra per le app precaricate, vedi Supportare la modalità Multi-finestra.
Convalida
Per convalidare l'implementazione della funzionalità Multi-finestra, esegui i test CTS correlati e segui la verifica della modalità Multi-finestra.