Tentang potongan

Potongan layar adalah area di beberapa perangkat yang meluas ke permukaan layar. Hal ini memungkinkan pengalaman tampilan layar penuh sekaligus menyediakan ruang untuk sensor penting di bagian depan perangkat.

Contoh potongan dalam mode potret
Gambar 1. Contoh potongan gambar dalam Mode potret
Contoh potongan dalam mode lanskap
Gambar 2. Contoh potongan dalam mode lanskap

Android mendukung potongan layar pada perangkat yang menjalankan Android 9 (level API 28) dan yang lebih tinggi. Namun, produsen perangkat juga dapat mendukung potongan layar di perangkat yang menjalankan Android 8.1 atau yang lebih rendah.

Halaman ini menjelaskan cara menerapkan dukungan untuk perangkat dengan potongan di Compose, termasuk cara menggunakan area potongan—yaitu, persegi panjang tampilan layar penuh pada permukaan layar yang berisi potongan.

Kasus default

Aplikasi yang menargetkan level API target 34 atau yang lebih rendah, atau Aktivitas yang tidak memanggil enableEdgeToEdge, tidak akan digambar ke dalam area potongan secara default, kecuali jika aplikasi digambar ke dalam kolom sistem yang berisi potongan layar.

Aplikasi yang menargetkan API level 35 atau yang lebih tinggi di perangkat yang menjalankan Android 15 atau yang lebih tinggi, atau Aktivitas yang memanggil enableEdgeToEdge, akan digambar ke dalam area potongan.

Dengan kata lain, LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT, LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES, dan LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER ditafsirkan sebagai LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS untuk jendela tidak mengambang di aplikasi yang menargetkan API level 35 atau yang lebih tinggi di perangkat yang menjalankan Android 15 atau yang lebih tinggi.

Menangani informasi potongan secara manual

Anda harus menangani informasi potongan untuk mencegah area potongan mengaburkan teks, kontrol, atau elemen interaktif penting yang memerlukan pengenalan sentuhan halus (sensitivitas sentuhan mungkin lebih rendah di area potongan). Saat menangani potongan, jangan melakukan hardcode pada tinggi status bar, karena hal ini dapat menyebabkan konten tumpang-tindih atau terpotong. Sebagai gantinya, tangani potongan dengan salah satu cara berikut:

Untuk Compose, sebaiknya gunakan displayCutout, safeContent, atau safeDrawing untuk menangani inset potongan di composable Anda. Pendekatan ini memungkinkan Anda mengikuti padding potongan layar jika diperlukan, atau mengabaikannya jika tidak diperlukan.

Canvas(modifier = Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.displayCutout)) {
    drawRect(Color.Red, style = Stroke(2.dp.toPx()))
}