Un ritaglio display è un'area su alcuni dispositivi che si estende nella superficie del display. Consente un'esperienza edge-to-edge fornendo al contempo spazio per 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 anche supportare i ritagli display 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 di ritaglio, ovvero il rettangolo edge-to-edge sulla superficie del display che contiene il ritaglio.
Caso predefinito
Per impostazione predefinita, le app che hanno come target il livello API 34 o inferiore o le attività che non chiamano enableEdgeToEdge non vengono disegnate nella regione di ritaglio, a meno che l'app non venga disegnata in una barra di sistema contenente il ritaglio display.
Le app che hanno come target il livello API 35 o superiore sui dispositivi con Android 15 o versioni successive o le attività che chiamano enableEdgeToEdge vengono disegnate nella regione di 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 superiore sui dispositivi con Android 15 o versioni successive.
Gestire manualmente le informazioni sul ritaglio
Devi gestire le informazioni sul ritaglio per evitare che l'area di ritaglio oscuri testo, controlli o elementi interattivi importanti che richiedono il riconoscimento del tocco preciso (la sensibilità al tocco potrebbe essere inferiore nell'area di ritaglio). Quando gestisci i ritagli, non codificare l'altezza della barra di stato, in quanto ciò può causare la sovrapposizione o il taglio dei contenuti. Gestisci invece i ritagli in uno dei seguenti modi:
Utilizzando
WindowInsets.displayCutout,WindowInsets.safeContentoWindowInsets.safeDrawingAccedendo all'oggetto
Pathdi ritaglio conLocalView.current.rootWindowInsets.displayCutout
Per Compose, ti consigliamo di utilizzare displayCutout, safeContent o safeDrawing per gestire gli inset di ritaglio nei tuoi elementi componibili. Questo approccio ti consente di rispettare il padding del ritaglio display, se necessario, o di ignorarlo se non è necessario.
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 della finestra in Compose
- Modificatori grafici
- Formatta i paragrafi