Un ritaglio display è un'area su alcuni dispositivi che si estende nella superficie del display. Consente un'esperienza edge-to-edge, lasciando spazio per i sensori importanti sulla parte anteriore del dispositivo.
Android supporta i ritagli display sui dispositivi con Android 9 (livello API 28) e versioni successive. Tuttavia, i produttori di dispositivi possono supportare i ritagli display anche sui dispositivi con Android 8.1 o versioni precedenti.
Questa pagina descrive come implementare il supporto per i dispositivi con ritagli in Compose, incluso come utilizzare l'area del ritaglio, ovvero il rettangolo edge-to-edge sulla superficie del display che contiene il ritaglio.
Caso predefinito
Le app che hanno come target il livello API 34 o versioni precedenti o le attività che non chiamano
enableEdgeToEdge non verranno visualizzate nella regione del ritaglio per impostazione predefinita, a meno che l'app non venga visualizzata in una barra di sistema contenente il ritaglio display.
Le app che hanno come target il livello API 35 o versioni successive su dispositivi con Android 15 o versioni successive, o le attività che chiamano enableEdgeToEdge, disegnano nella regione del ritaglio.
In altre parole, LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT,
LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES e
LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER vengono interpretati come
LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS per le finestre non mobili nelle app
che hanno come target il livello API 35 o versioni successive sui dispositivi con Android 15 o
versioni successive.
Gestisci manualmente le informazioni sul ritaglio
Devi gestire le informazioni sul ritaglio per evitare che l'area del ritaglio oscuri testo, controlli o elementi interattivi importanti che richiedono un riconoscimento del tocco preciso (la sensibilità al tocco potrebbe essere inferiore nell'area del ritaglio). Quando gestisci i ritagli, non impostare come hardcoded l'altezza della barra di stato, poiché ciò può causare la sovrapposizione o il taglio dei contenuti. Gestisci invece i ritagli in uno dei seguenti modi:
Utilizzo di
WindowInsets.displayCutout,WindowInsets.safeContentoWindowInsets.safeDrawingAccesso all'oggetto ritagliato
PathconLocalView.current.rootWindowInsets.displayCutout
Per Compose, ti consigliamo di utilizzare displayCutout, safeContent o safeDrawing per gestire gli inset dei ritagli nei composabili. Questo approccio ti consente di rispettare il padding del ritaglio display dove richiesto o di ignorarlo dove non è richiesto.
Canvas(modifier = Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.displayCutout)) { drawRect(Color.Red, style = Stroke(2.dp.toPx())) }
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Inset delle finestre in Compose
- Modificatori di grafica
- Formatta i paragrafi