Ekran kesiği, bazı cihazlarda ekran yüzeyine doğru uzanan bir alandır. Cihazın ön tarafındaki önemli sensörler için yer sağlarken uçtan uca bir deneyim sunar.
Android, Android 9 (API düzeyi 28) ve sonraki sürümleri çalıştıran cihazlarda ekran kesiklerini destekler. Ancak cihaz üreticileri, Android 8.1 veya daha eski sürümlerin yüklü olduğu cihazlarda da ekran kesintilerini destekleyebilir.
Bu sayfada, Compose'da ekran kesimli cihazlar için desteğin nasıl uygulanacağı açıklanmaktadır. Buna, kesim alanı (ekran yüzeyinde kesimi içeren uçtan uca dikdörtgen) ile nasıl çalışılacağı da dahildir.
Varsayılan durum
API düzeyi 34 veya daha eski sürümleri hedefleyen uygulamalar ya da enableEdgeToEdge yöntemini çağırmayan etkinlikler, uygulama ekran kesintisini içeren bir sistem çubuğuna çizim yapmadığı sürece varsayılan olarak kesinti bölgesine çizim yapmaz.
Android 15 veya sonraki sürümlerin yüklü olduğu cihazlarda API düzeyi 35 veya sonraki sürümleri hedefleyen uygulamalar ya da enableEdgeToEdge yöntemini çağıran etkinlikler, kamera deliği bölgesine çizim yapar.
Diğer bir deyişle, Android 15 veya sonraki sürümleri çalıştıran cihazlarda API düzeyi 35 veya sonraki sürümleri hedefleyen uygulamalardaki kayan olmayan pencereler için LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT, LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES ve LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER, LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS olarak yorumlanır.
Kesim bilgilerini manuel olarak işleme
Kesim alanının önemli metinleri, kontrolleri veya hassas dokunma tanıma gerektiren etkileşimli öğeleri engellemesini önlemek için kesim bilgilerini işlemeniz gerekir (kesim alanında dokunma hassasiyeti daha düşük olabilir). Kesintileri işlerken durum çubuğu yüksekliğini sabit kodlamayın. Aksi takdirde içerikler üst üste binebilir veya kesilebilir. Bunun yerine, kesikleri aşağıdaki yöntemlerden biriyle işleyin:
WindowInsets.displayCutout,WindowInsets.safeContentveyaWindowInsets.safeDrawingkullanmaLocalView.current.rootWindowInsets.displayCutoutile kesitPathnesnesine erişme
Compose için, composable'larınızda kesik iç kısımlarını işlemek üzere displayCutout, safeContent veya safeDrawing kullanmanızı öneririz. Bu yaklaşım, gerektiğinde ekran kesintisi dolgusuna uymanıza veya gerekmediğinde bunu yok saymanıza olanak tanır.
Canvas(modifier = Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.displayCutout)) { drawRect(Color.Red, style = Stroke(2.dp.toPx())) }
Sizin için önerilenler
- Not: JavaScript devre dışı bırakıldığında bağlantı metni gösterilir.
- Compose'da pencere iç boşlukları
- Grafik Değiştiriciler
- Style paragraph