Ekran kesimi, bazı cihazlarda ekran yüzeyine uzanan bir alandır. Uçtan uca deneyime izin verirken cihazın ön kısmındaki önemli sensörler için de alan sağlar.
Android, Android 9 (API düzeyi 28) ve sonraki sürümleri çalıştıran cihazlarda ekran kesimlerini destekler. Bununla birlikte, cihaz üreticileri Android 8.1 veya önceki sürümleri çalıştıran cihazlarda ekran kesimlerini de destekleyebilir.
Bu sayfada, kesme alanı (ör. ekran yüzeyinde kesme alanını içeren uçtan uca dikdörtgen) ile nasıl çalışılacağı dahil olmak üzere, oluşturma'da kesim içeren cihazlar için desteğin nasıl sağlanacağı açıklanmaktadır.
Varsayılan büyük/küçük harf düzeni
Varsayılan olarak, ekran kesimleri pencere iç öğeleri bilgilerine eklenir. Bu nedenle, uygulamanızı uçtan uca yapma rehberini takip ettiğinizde uygulamanız ekran kesim alanlarında çizim yapmaz.
Örneğin, Modifier.windowInsetsPadding(WindowInsets.safeContent)
veya Modifier.windowInsetsPadding(WindowInsets.safeDrawing)
kullandığınızda uygulamanız otomatik olarak kesimin yerleştirildiği alanlarda çizim yapmaz.
WindowInsets.safeContent
ve WindowInsets.safeDrawing
her ikisi de ekran kesimi bilgilerini içerir ve cihaz kesiminin olduğu yerde
ç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 işlemeniz gerekir.
Kesme bilgilerini manuel olarak işleme
Kesikleri aşağıdaki şekillerde kullanabilirsiniz:
WindowInsets.displayCutout
kullanılıyorandroid:windowLayoutInDisplayCutoutMode
ile tema manifestinde ayarwindow.attributes.layoutInDisplayCutoutMode
ileWindow
için seçeneği programatik olarak ayarlamaLocalView.current.rootWindowInsets.displayCutout
ile kesmePath
nesnesine erişme
Compose için genel temanızda windowLayoutInDisplayCutoutMode
özelliğini default
olarak ayarlamanız, ardından composable'larınızın eklerini işlemek için WindowInsets.displayCutout
özelliğinden 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ızı veya gerekli olmadığı yerlerde yoksaymanızı sağlar.
Alternatif olarak, etkinlik temasını android:windowLayoutInDisplayCutoutMode
başka bir seçeneğe ayarlayarak veya pencere özelliğini window.attributes.layoutInDisplayCutoutMode =
LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
ile ayarlayarak Görünüm Kesimi belgelerinde açıklanan ayarları uygulayabilirsiniz. Bununla birlikte, kesim modu tüm etkinliğe uygulanır ve tek tek composable'lar için kontrol edilemez.
Bazı composable'larda ekran kesimini korurken diğerlerini kullanmamak için WindowInset.displayCutout
özelliğini 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ünün kritik öğelerinin yerleşimine dikkat edin. Kesme alanının, önemli metinleri, kontrolleri veya diğer bilgileri kapatmasına izin vermeyin.
- Hassas düzeyde tanıma gerektiren etkileşimli öğeleri, kesim alanına yerleştirmeyin veya genişletmeyin. Kesme alanında dokunma hassaslığı daha düşük olabilir.
- Uçtan uca kılavuz boyunca kesit 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. İçeriklerin çakışmasına veya kesilmesine neden olabileceğinden durum çubuğu yüksekliğini sabitleştirmekten 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ı kesimlere sahip cihazlarda test edin. Kesikli bir cihazınız yoksa aşağıdaki adımları uygulayarak Android 9 ya da sonraki sürümleri çalıştıran herhangi bir cihazda veya 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 Kesit içeren bir ekranı simüle et'i seçin.
- Kesme türünü seçin.
Sizin için önerilenler
- Not: Bağlantı metni JavaScript kapalıyken görüntülenir
- Oluşturma penceresinde pencere öğeleri
- Grafik Değiştiriciler
- Paragrafın stilini belirle