Ekran kesimi, bazı cihazlarda ekran yüzeyine uzanan bir alandır. Bu sayede cihazın ön tarafında önemli sensörler için yer açılırken kenardan kenara bir deneyim sunulur.
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 kullanımı
Ekran kesikleri varsayılan olarak pencere içe eklemelerine dahil edilir. 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)
kullanırken uygulamanız, kesitin yerleştirildiği alanları otomatik olarak ç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 kenarı bilgilerini manuel olarak işleme
Kesitleri aşağıdaki yöntemlerden birini kullanarak işleyebilirsiniz:
WindowInsets.displayCutout
kullanılıyorandroid:windowLayoutInDisplayCutoutMode
ile tema manifestinde ayarlamawindow.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, etkinlik temasını android:windowLayoutInDisplayCutoutMode
başka bir seçeneğe ayarlayarak veya window.attributes.layoutInDisplayCutoutMode =
LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
'ı kullanarak pencere özelliğini ayarlayarak Görüntü Kesintisi dokümanlarında açıklanan ayarları da uygulayabilirsiniz. Ancak, kesit modu daha sonra tüm etkinliğe uygulanır ve tek bir kompozisyon için kontrol edilemez.
Belirli kompozisyonlarda ekrandaki kesiklerin dikkate alınmasını, diğerlerinde ise dikkate alınmamasını istiyorsanız WindowInset.displayCutout
öğesini 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. Kesik alanda 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)
simgesini 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. Kesikli ekrana sahip bir cihazınız yoksa aşağıdakileri yaparak Android 9 veya sonraki bir sürümün yüklü olduğu herhangi bir cihazda ya da emülatörde yaygın kesik ekran 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 gidip Kesimli 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
- Paragraf stili