La piattaforma Android è responsabile del disegno della UI di sistema, come la barra di stato e la barra di navigazione. Questa UI di sistema viene visualizzata indipendentemente dall'app utilizzata dall'utente.
WindowInsets fornisce informazioni sulla UI di sistema per garantire che l'app venga disegnata nell'area corretta e che la UI non venga oscurata dalla UI di sistema.
Su Android 14 (livello API 34) e versioni precedenti, per impostazione predefinita la UI della tua app non viene disegnata sotto le barre di sistema e i ritagli display.
Su Android 15 (livello API 35) e versioni successive, l'app viene visualizzata sotto le barre di sistema e i ritagli display quando l'app ha come target l'SDK 35. In questo modo, l'esperienza utente è più fluida e la tua app può sfruttare appieno lo spazio della finestra a sua disposizione.
La visualizzazione dei contenuti dietro la UI di sistema è chiamata edge-to-edge. In questa pagina scoprirai i diversi tipi di inset, come passare alla modalità edge-to-edge e come utilizzare le API inset per animare la UI e assicurarti che i contenuti dell'app non siano oscurati dagli elementi UI di sistema.
Nozioni di base sugli inserti
Quando un'app viene visualizzata edge-to-edge, devi assicurarti che i contenuti e le interazioni importanti non siano oscurati dalla UI di sistema. Ad esempio, se un pulsante è posizionato dietro la barra di navigazione, l'utente potrebbe non essere in grado di fare clic.
Le dimensioni della UI di sistema e le informazioni sulla sua posizione vengono specificate utilizzando gli inset.
Ogni parte della UI di sistema ha un tipo di inset corrispondente che ne descrive le dimensioni e la posizione. Ad esempio, gli inset della barra di stato forniscono le dimensioni e la posizione della barra di stato, mentre gli inset della barra di navigazione forniscono le dimensioni e la posizione della barra di navigazione. Ogni tipo di riquadro è costituito da quattro dimensioni in pixel: superiore, sinistra, destra e inferiore. Queste dimensioni specificano l'estensione dell'UI di sistema dai lati corrispondenti della finestra dell'app. Per evitare sovrapposizioni con questo tipo di UI di sistema, l'UI dell'app deve essere inserita di questa quantità.
Questi tipi di inset Android integrati sono disponibili tramite WindowInsets:
Gli inset che descrivono le barre di stato. Si tratta delle barre della UI di sistema in alto contenenti le icone di notifica e altri indicatori. |
|
Gli inserti della barra di stato quando sono visibili. Se le barre di stato sono nascoste (perché è stata attivata la modalità a schermo intero immersiva), gli inserti della barra di stato principale saranno vuoti, ma questi inserti non saranno vuoti. |
|
Gli inserti che descrivono le barre di navigazione. Si tratta delle barre della UI di sistema sul lato sinistro, destro o inferiore del dispositivo, che descrivono la barra delle app o le icone di navigazione. Questi possono cambiare in fase di runtime in base al metodo di navigazione preferito dell'utente e all'interazione con la barra delle app. |
|
Gli inserti della barra di navigazione quando sono visibili. Se le barre di navigazione sono nascoste (perché è stata attivata la modalità a schermo intero immersiva), gli inserti della barra di navigazione principale saranno vuoti, ma questi inserti non saranno vuoti. |
|
L'inset che descrive la decorazione della finestra della UI di sistema se si trova in una finestra in formato libero, come la barra del titolo in alto. |
|
Gli inserti della barra dei sottotitoli codificati quando sono visibili. Se le barre dei sottotitoli sono nascoste, gli inserti della barra dei sottotitoli principale saranno vuoti, ma questi inserti non saranno vuoti. |
|
L'unione degli inset della barra di sistema, che includono le barre di stato, le barre di navigazione e la barra del titolo. |
|
Gli inset della barra di sistema quando sono visibili. Se le barre di sistema sono nascoste (perché è stata attivata la modalità immersiva a schermo intero), gli inset della barra di sistema principale saranno vuoti, ma questi inset non saranno vuoti. |
|
Gli inserti che descrivono la quantità di spazio nella parte inferiore occupata dalla tastiera su schermo. |
|
Gli inset che descrivono la quantità di spazio occupata dalla tastiera su schermo prima dell'animazione della tastiera corrente. |
|
Gli inset che descrivono la quantità di spazio che la tastiera su schermo occuperà dopo l'animazione della tastiera corrente. |
|
Un tipo di inset che descrive informazioni più dettagliate sulla UI di navigazione, fornendo la quantità di spazio in cui i "tocchi" verranno gestiti dal sistema e non dall'app. Per le barre di navigazione trasparenti con la navigazione tramite gesti, alcuni elementi dell'app possono essere toccabili tramite la UI di navigazione del sistema. |
|
Gli inserti degli elementi toccabili quando sono visibili. Se gli elementi toccabili sono nascosti (perché è stata attivata la modalità a schermo intero immersiva), gli inserti degli elementi toccabili principali saranno vuoti, ma questi inserti non saranno vuoti. |
|
Gli inserti che rappresentano la quantità di inserti in cui il sistema intercetterà i gesti per la navigazione. Le app possono specificare manualmente la gestione di una quantità limitata di questi gesti utilizzando |
|
Un sottoinsieme dei gesti di sistema che verranno sempre gestiti dal sistema e che non possono essere disattivati utilizzando |
|
Gli inserti che rappresentano la quantità di spazio necessaria per evitare la sovrapposizione con un ritaglio display (notch o foro). |
|
Gli inset che rappresentano le aree curve di un display a cascata. Un display a cascata ha aree curve lungo i bordi dello schermo, dove lo schermo inizia ad avvolgersi lungo i lati del dispositivo. |
Questi tipi sono riassunti da tre tipi di inset "sicuri" che garantiscono che i contenuti non vengano oscurati:
Questi tipi di inset "sicuri" proteggono i contenuti in modi diversi, in base agli inset della piattaforma sottostante:
- Utilizza
WindowInsets.safeDrawingper proteggere i contenuti che non devono essere visualizzati sotto l'interfaccia utente di sistema. Questo è l'utilizzo più comune degli inset: impedire il disegno di contenuti oscurati dalla UI di sistema (parzialmente o completamente). - Utilizza
WindowInsets.safeGesturesper proteggere i contenuti con i gesti. In questo modo, i gesti di sistema non entrano in conflitto con i gesti dell'app (ad esempio quelli per i riquadri inferiori, i caroselli o i giochi). - Utilizza
WindowInsets.safeContentcome combinazione diWindowInsets.safeDrawingeWindowInsets.safeGesturesper assicurarti che i contenuti non abbiano sovrapposizioni visive e di gesti.
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Componenti e layout di Material
- Esegui la migrazione di
CoordinatorLayouta Compose - Altre considerazioni