Ekran kesimi, bazı cihazlarda ekran yüzeyine uzanan bir alandır. Cihazın ön tarafında önemli sensörler için yer sağlarken kenardan kenara 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 kesiklerini destekleyebilir.
Bu sayfada, kesme alanı (yani ekran yüzeyinde kesmeyi içeren uçtan uca dikdörtgen) ile çalışmanın yanı sıra Oluştur'da kesime sahip cihazlar için desteğin nasıl uygulanacağı açıklanmaktadır.
Varsayılan büyük/küçük harf
Ekran kesimleri, varsayılan olarak pencere içlerine eklenir. Bu nedenle, uygulamanızı kenarlara kadar doldurma kılavuzunu uyguladığınızda uygulamanız ekrandaki kesik alanlarda çizilmez.
Örneğin, Modifier.windowInsetsPadding(WindowInsets.safeContent)
veya Modifier.windowInsetsPadding(WindowInsets.safeDrawing)
kullandığınızda uygulamanız otomatik olarak kesimin yerleştirildiği alanları çizmez.
Hem WindowInsets.safeContent
hem de WindowInsets.safeDrawing
, ekrandaki kesik bilgileri içerir ve cihazdaki kesiklerin bulunduğu yerde çizim yapmaz.
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 kesme kenarı bilgilerini kendiniz işlemeniz gerekir.
Kesme bilgilerini manuel olarak işleme
Kesitleri aşağıdaki yöntemlerden birini kullanarak işleyebilirsiniz:
WindowInsets.displayCutout
kullanılıyorandroid:windowLayoutInDisplayCutoutMode
ile tema manifestinde ayarwindow.attributes.layoutInDisplayCutoutMode
ileWindow
'te seçeneği programatik olarak ayarlamaLocalView.current.rootWindowInsets.displayCutout
ile kesikPath
nesnesine erişim
Oluşturma için genel temanızda windowLayoutInDisplayCutoutMode
değerini default
olarak ayarlamanız ve ardından, derlenebilir öğelerinizdeki iç içe yerleştirilen öğeleri işlemek için WindowInsets.displayCutout
öğesinden yararlanmanı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 gerekmediğinde yoksaymanıza 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. Ancak, kesit modu daha sonra tüm etkinliğe uygulanır ve tek bir kompozisyon için 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 kesit bilgilerine erişmenize olanak tanır.
En iyi uygulamalar
Ekran kesikleriyle çalışırken aşağıdakileri göz önünde bulundurun:
- Kullanıcı arayüzünün kritik öğelerinin yerleşimine dikkat edin. Kesilen alanın önemli metinleri, kontrolleri veya diğer bilgileri gizlemesine izin vermeyin.
- İnce dokunma tanıma gerektiren etkileşimli öğeleri, kesik alana yerleştirmeyin veya bu alana uzatmayın. Kesme alanında dokunma hassasiyeti daha düşük olabilir.
- Kenardan kenara yönlendirme uygulanırken,
safeDrawing
/safeContent
iç içe yerleştirilmiş resimlerine kesik bilgileri eklenir. - Mümkün olduğunda içeriğinize uygulanacak uygun dolguyu belirlemek için
Modifier.windowInsetsPadding(WindowInsets.safeDrawing)
kullanın. İçeriklerin örtüşmesine veya kesilmesine neden olabileceğinden durum çubuğu yüksekliğini sabit kodlamaktan kaçının.
İçeriğinizin, kesiklerle nasıl oluşturulduğunu test etme
Uygulamanızın tüm ekranlarını ve deneyimlerini test ettiğinizden emin olun. Mümkünse farklı türde kesiklere 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çenekleri'ni 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.
- Çıkarma türünü seçin.
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Oluştur'daki pencere iç içe eklemeleri
- Grafik Değiştiricileri
- Stil paragrafı