Supporto della modalità multi-finestra

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_freeformWindowManagement in config.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

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:
  • 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.isLowRam deve restituire false, 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.

Versione di 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 e versioni successive /platform/cts/tests/framework/base/windowmanager/src/android/server/wm