Ekran kesimi, bazı cihazlarda ekran yüzeyine kadar uzanan bir alandır. Uçtan uca deneyime olanak tanırken cihazın ön tarafındaki önemli sensörler için alan sağlar.
Android, Android 9 (API düzeyi 28) ve sonraki sürümleri çalıştıran cihazlarda ekran kesimlerini destekler. Ancak cihaz üreticileri, Android 8.1 veya önceki sürümleri çalıştıran cihazlarda ekran kesimlerini de destekleyebilir.
Bu sayfada, Oluşturma'da kesimlere sahip cihazlar için desteğin nasıl uygulanacağı açıklanmaktadır. Buna, kesim alanı (diğer bir deyişle, ekran yüzeyindeki kesimi içeren kenardan kenara dikdörtgen) ile nasıl çalışılacağı da dahildir.
Varsayılan büyük/küçük harf
Varsayılan olarak, ekran kesimleri pencerenin içe aktarma bilgilerine dahil edilir. Bu nedenle, uygulamanızı uçtan uca yapmayla ilgili kılavuzu izlediğinizde uygulamanız, ekran kesimi alanlarını çizmez.
Örneğin, Modifier.windowInsetsPadding(WindowInsets.safeContent)
veya Modifier.windowInsetsPadding(WindowInsets.safeDrawing)
kullandığınızda uygulamanız otomatik olarak kesimin yerleştirildiği alanları çizmez.
WindowInsets.safeContent
ve WindowInsets.safeDrawing
hem ekran kesimi bilgileri içerir hem de cihaz kesiminin bulunduğu yeri çizmez.
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) WindowCompat.setDecorFitsSystemWindows(window, false) setContent { Box(Modifier.windowInsetsPadding(WindowInsets.safeContent)) { // Any composable inside here will avoid drawing behind cutouts } } }
Bu davranışı daha da özelleştirmek için kesim bilgilerini kendiniz halletmeniz gerekir.
Kesme bilgilerini manuel olarak işleme
Kesme işlemlerini aşağıdaki yöntemlerden biriyle yapabilirsiniz:
WindowInsets.displayCutout
kullanılıyorandroid:windowLayoutInDisplayCutoutMode
ile tema manifestinde ayarWindow
öğesindewindow.attributes.layoutInDisplayCutoutMode
ile seçenek programatik olarak ayarlanıyorLocalView.current.rootWindowInsets.displayCutout
ile kesimPath
nesnesine erişiliyor
Compose için genel temanızda windowLayoutInDisplayCutoutMode
değerini default
olarak ayarlamanız ve ardından composable'larınızdaki ek öğeleri işlemek için WindowInsets.displayCutout
değerini kullanmanız önerilir:
Canvas(modifier = Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.displayCutout)) { drawRect(Color.Red, style = Stroke(2.dp.toPx())) }
Bu yaklaşım, gerektiğinde displayCutout
dolgusunu dikkate almanıza veya gerek olmadığı durumlarda göz ardı etmenize olanak tanır.
Alternatif olarak, android:windowLayoutInDisplayCutoutMode
etkinlik temasını başka bir seçeneğe ayarlayarak veya window.attributes.layoutInDisplayCutoutMode =
LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
kullanarak pencere özelliğini ayarlayarak Görünümler Kesme belgelerinde açıklanan ayarları uygulayabilirsiniz. Bununla birlikte, kesim modu daha sonra tüm etkinliğe uygulanır ve tek tek composable bazında kontrol edilemez.
Belirli composable'larda ekran kesimine saygı göstermek (diğerlerinde değil) için WindowInset.displayCutout
değerini kullanın. Bu API, gerektiğinde kesim bilgilerine erişmenizi sağlar.
En iyi uygulamalar
Ekran kesimleriyle çalışırken aşağıdakileri göz önünde bulundurun:
- Kullanıcı arayüzündeki önemli öğelerin yerleşimine dikkat edin. Kesme alanının önemli metinleri, kontrolleri veya diğer bilgileri gizlemesine izin vermeyin.
- Hassas dokunuş tanıma gerektiren etkileşimli öğeleri kesim alanına yerleştirmeyin veya genişletmeyin. Kesme alanında dokunma hassasiyeti daha düşük olabilir.
- Uçtan uca rehberlik izlenirken kesim bilgileri
safeDrawing
/safeContent
eklerine dahil edilir. - Mümkün olduğunda, içeriğinize uygulanacak uygun dolguyu belirlemek için
Modifier.windowInsetsPadding(WindowInsets.safeDrawing)
kullanın. İçeriğin çakışmasına veya kesilmesine neden olabileceğinden, durum çubuğu yüksekliğine kod yazmaktan kaçının.
Kesitlerle içeriğinizin nasıl oluşturulduğunu test edin
Uygulamanızın tüm ekranlarını ve deneyimlerini test ettiğinizden emin olun. Mümkünse farklı kesim türlerine sahip cihazlarda test edin. Kesilen bir cihazınız yoksa aşağıdakileri yaparak Android 9 veya sonraki sürümleri çalıştıran herhangi bir cihaz ya da emülatörde yaygın kesim yapılandırmalarını simüle edebilirsiniz:
- Geliştirici seçeneklerini etkinleştirin.
- Geliştirici seçenekleri ekranında Çizim bölümüne gidin ve Kesme içeren bir ekranı simüle et'i seçin.
- Kesme türünü seçin.
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Compose'da pencere içleri
- Grafik Değiştiriciler
- Stil paragrafı