Supporta il windowing del desktop

Il windowing del desktop consente agli utenti di eseguire contemporaneamente più app ridimensionabili delle app per un'esperienza versatile, simile a quella di un computer.

Nella figura 1 puoi vedere l'organizzazione della schermata con la funzionalità di gestione delle finestre del desktop attivata. Aspetti importanti:

  • Gli utenti possono eseguire più app affiancate contemporaneamente.
  • La barra delle app è in posizione fissa nella parte inferiore del display e mostra le app in esecuzione. Gli utenti possono bloccare le app per accedervi rapidamente.
  • La nuova barra di intestazione personalizzabile decora la parte superiore di ogni finestra con controlli come Riduci a icona e Alza a schermo intero.
Figura 1. Windowing di computer su un tablet.

Per impostazione predefinita, le app si aprono a schermo intero sui tablet Android. Per avviare un'app in modalità finestra del desktop, tieni premuto il cursore della finestra nella parte superiore dello schermo e trascinalo all'interno dell'interfaccia utente, come mostrato nella figura 2.

Quando un'app è aperta in modalità finestra del computer, anche altre app si aprono in finestre del computer.

Figura 2. Tieni premuto e trascina il punto di manipolazione della finestra dell'app per attivare il windowing del desktop.

Gli utenti possono anche richiamare il windowing del desktop dal menu visualizzato sotto punto di manipolazione della finestra quando tocchi o fai clic sul punto di manipolazione o usi la scorciatoia da tastiera Tasto Meta (Windows, Comando o Ricerca) + Ctrl + Giù.

Gli utenti escono dalla finestra del desktop chiudendo tutte le finestre attive o afferrando la maniglia della finestra nella parte superiore di una finestra del desktop e trascinando l'app nella parte superiore dello schermo. La scorciatoia da tastiera Meta + H consente inoltre di uscire dalla modalità finestra del desktop e di eseguire di nuovo le app a schermo intero.

Per tornare alla visualizzazione delle finestre del computer, tocca o fai clic sul riquadro Spazio desktop nella schermata Recenti.

Modalità ridimensionabilità e compatibilità

Nel windowing del computer, le app con orientamento bloccato possono essere ridimensionate liberamente. Ciò significa che anche se un'attività è bloccata in modalità Ritratto, gli utenti possono comunque ridimensionare l'app in una finestra con orientamento orizzontale.

Figura 3. Ridimensionamento della finestra di un'app limitata dall'orientamento verticale a Orizzontale.

L'interfaccia utente delle app dichiarate come non ridimensionabili (ovvero resizableActivity = false) viene ridimensionata mantenendo le stesse proporzioni.

Figura 4. L'UI di un'app non ridimensionabile viene ridimensionata man mano che la finestra viene ridimensionata.

Le app di fotocamera che bloccano l'orientamento o sono dichiarate non ridimensionabili hanno un trattamento speciale per i mirini della fotocamera: la finestra è completamente ridimensionabile, ma il mirino mantiene le stesse proporzioni. Presupponendo app vengono sempre eseguite in verticale o orizzontale, le app vengono configurate come hardcoded o ipotesi che portano a calcoli errati dell'anteprima o dell'immagine acquisita l'orientamento o le proporzioni, generando immagini allungate, ruotate o capovolte.

Fino a quando le app non saranno pronte a implementare i mirini della fotocamera completamente responsivi, il trattamento speciale offre un'esperienza utente più di base che riduce gli effetti causati da presupposti errati.

Per scoprire di più sulla modalità di compatibilità per le app della fotocamera, consulta Modalità di compatibilità del dispositivo.

Figura 5. Il mirino della fotocamera mantiene le proporzioni quando la finestra si ridimensiona.

Intestazioni personalizzabili

Tutte le app in esecuzione in una finestra del desktop hanno una barra delle intestazioni, anche in modalità immersiva.
Assicurati che i contenuti dell'app non siano oscurati dalla barra della barra. La barra delle intestazioni è di tipo inserito nella barra dei sottotitoli: androidx.compose.foundation.layout.WindowInsets.Companion.captionBar(); di visualizzazioni, WindowInsets.Type.captionBar(), che fa parte delle barre di sistema.

Per scoprire di più sulla gestione degli inserti, consulta l'articolo Visualizzare i contenuti a schermo intero nell'app e gestire gli inserti della finestra in Scrivi.

Anche la barra delle intestazioni è personalizzabile. Android 15 ha introdotto il tipo di aspetto APPEARANCE_TRANSPARENT_CAPTION_BAR_BACKGROUND per rendere la barra delle intestazioni trasparente e consentire alle app di disegnare contenuti personalizzati al suo interno.

Le app sono quindi responsabili dello stile della parte superiore dei contenuti in modo che assomigli alla barra dei sottotitoli codificati (sfondo, contenuti personalizzati e così via), ad eccezione degli elementi dei sottotitoli codificati di sistema (pulsanti di chiusura e di visualizzazione a schermo intero), che vengono disegnati dal sistema nella barra dei sottotitoli codificati trasparente nella parte superiore dell'app.

Le app possono attivare/disattivare l'aspetto degli elementi di sistema all'interno della didascalia per i temi chiaro e scuro utilizzando APPEARANCE_LIGHT_CAPTION_BARS, in modo simile all'attivazione/disattivazione della barra di stato e della barra di navigazione.

Android 15 ha anche introdotto il metodo WindowInsets#getBoundingRects() che consente alle app di eseguire l'introspezione degli inserti della barra dei sottotitoli codificati in modo più dettagliato. Le app sono in grado di distinguere le aree in cui il sistema disegna elementi di sistema aree inutilizzate in cui le app possono inserire contenuti personalizzati senza sovrapporre elementi di sistema.

L'elenco di oggetti Rect restituito dall'API indica le regioni di sistema che devono essere evitate. Lo spazio rimanente (calcolato sottraendo i rettangoli dai riquadri della barra dei sottotitoli codificati) è la posizione in cui l'app può disegnare senza che si sovrappongono a elementi di sistema e che possono ricevere input.

Chrome prima e dopo l'implementazione delle intestazioni personalizzate.
Figura 6. Chrome prima e dopo l'implementazione delle intestazioni personalizzate.

Supporto di multitasking e istanze multiple

Il multitasking è alla base del windowing del desktop e consente delle tue app può aumentare notevolmente la produttività degli utenti.

Android 15 introduce PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI, che le app possono impostare per specificare che l'interfaccia utente di sistema deve essere mostrata per consentire all'app di essere avviata come più istanze.

Gestisci le istanze delle app con i gesti di trascinamento

In modalità multi-finestra, gli utenti possono avviare una nuova istanza di app trascinando una vista fuori dalla finestra dell'app. Gli utenti possono anche spostare elementi tra istanze della stessa app.

Figura 7. Avvia una nuova istanza di Chrome trascinando una scheda fuori dalla finestra del desktop.

Android 15 introduce due flag per personalizzare il comportamento del trascinamento:

  • DRAG_FLAG_START_INTENT_SENDER_ON_UNHANDLED_DRAG: Indica che per avviare un trascinamento non gestito deve essere delegata al sistema se non ci sono finestre visibili. Quando utilizza questo flag, l'autore della chiamata deve fornire a ClipData un Item contenente un IntentSender immutabile per un'attività da avviare (vedi ClipData.Item.Builder#setIntentSender()). Il sistema può avviare o meno l'intent in base a fattori come le dimensioni dello schermo o la modalità di visualizzazione corrente. Se il sistema non avvia l'intent, l'intent viene annullato tramite il normale flusso di trascinamento.

  • DRAG_FLAG_GLOBAL_SAME_APPLICATION: Indica che un'operazione di trascinamento può oltrepassare i limiti della finestra (per più istanze della stessa applicazione).

    Quando startDragAndDrop() viene chiamato con questo flag impostato, solo le finestre visibili appartenenti allo stesso possono partecipare all'operazione di trascinamento e ricevere i contenuti trascinati.

Figura 8. Spostare una scheda tra due istanze dell'app Chrome.

Ottimizzazioni aggiuntive

Personalizza l'avvio delle app e la transizione delle app dalla modalità finestra a schermo intero.

Specifica le dimensioni e la posizione predefinite

Non tutte le app, anche se ridimensionabili, richiedono una finestra grande per offrire valore all'utente. Puoi utilizzare il metodo ActivityOptions#setLaunchBounds() per specificare le dimensioni e la posizione predefinite quando viene avviata un'attività.

Attivare la modalità a schermo intero dallo spazio di lavoro

Le app possono attivare la modalità a schermo intero a livello di programmazione chiamando Activity#requestFullScreenMode() Il metodo imposta l'app in modalità a schermo intero direttamente dal windowing del desktop.