Pencere iç içe eklemeleri hakkında

Android platformu, durum çubuğu ve gezinme çubuğu gibi sistem kullanıcı arayüzünü çizmekten sorumludur. Bu sistem kullanıcı arayüzü, kullanıcının hangi uygulamayı kullandığına bakılmaksızın gösterilir.

WindowInsets, uygulamanızın doğru alanda çizilmesini ve kullanıcı arayüzünüzün sistem kullanıcı arayüzü tarafından gizlenmemesini sağlamak için sistem kullanıcı arayüzü hakkında bilgi sağlar.

Sistem çubuklarının arkasına çizmek için kenardan kenara gitme
Şekil 1. Sistem çubuklarının arkasına çizmek için kenardan kenara gitme

Android 14 (API düzeyi 34) ve önceki sürümlerde, uygulamanızın kullanıcı arayüzü varsayılan olarak sistem çubuklarının ve ekran kesiklerinin altına çizilmez.

Android 15 (API düzeyi 35) ve sonraki sürümlerde, uygulamanız SDK 35'i hedeflediğinde sistem çubuklarının altına çizim yapar ve ekranda kesitler gösterir. Bu, daha sorunsuz bir kullanıcı deneyimi sağlar ve uygulamanızın kendisine sunulan pencere alanından tam olarak yararlanmasına olanak tanır.

Sistemin kullanıcı arayüzünün arkasında içerik göstermeye kenardan kenara geçme denir. Bu sayfada, farklı içe yerleştirilmiş içerik türleri, ekranı kenarlara kadar kullanma ve kullanıcı arayüzünüzü animasyonlu hale getirmek ve uygulamanızın içeriğinin sistem kullanıcı arayüzü öğeleriyle gizlenmemesini sağlamak için içe yerleştirilmiş içerik API'lerini kullanma hakkında bilgi edineceksiniz.

Eklemeyle ilgili temel bilgiler

Bir uygulamanın ekranı kenarlara kadar uzandığında, önemli içeriklerin ve etkileşimlerin sistem kullanıcı arayüzü tarafından gizlenmediğinden emin olmanız gerekir. Örneğin, bir düğme gezinme çubuğunun arkasına yerleştirilirse kullanıcı düğmeyi tıklayamayabilir.

Sistem kullanıcı arayüzünün boyutu ve yerleştirildiği yerle ilgili bilgiler eklemeler aracılığıyla belirtilir.

Sistem kullanıcı arayüzünün her bölümü, boyutunu ve yerleştirildiği yeri açıklayan karşılık gelen bir içe yerleştirilme türüne sahiptir. Örneğin, durum çubuğu iç içe yerleştirilmeleri durum çubuğunun boyutunu ve konumunu, gezinme çubuğu iç içe yerleştirilmeleri ise gezinme çubuğunun boyutunu ve konumunu sağlar. Her içe yerleştirilen öğe türü dört piksel boyutundan oluşur: üst, sol, sağ ve alt. Bu boyutlar, sistem kullanıcı arayüzünün uygulama penceresinin ilgili kenarlarından ne kadar uzağa uzandığını belirtir. Bu nedenle, bu tür sistem kullanıcı arayüzüyle çakışma olmaması için uygulama kullanıcı arayüzü bu miktarda içe yerleştirilmelidir.

Aşağıdaki yerleşik Android içe yerleştirilen türleri WindowInsets üzerinden kullanılabilir:

WindowInsets.statusBars

Durum çubuklarını açıklayan ek açıklamalar. Bunlar, bildirim simgelerini ve diğer göstergeleri içeren üst sistem kullanıcı arayüzü çubuklarıdır.

WindowInsets.statusBarsIgnoringVisibility

Göründüklerinde durum çubuğu girinti yapar. Durum çubukları şu anda gizliyse (immersive tam ekran moduna girildiği için) ana durum çubuğu iç içe yerleştirilmeleri boş olur ancak bu iç içe yerleştirilmeler boş olmaz.

WindowInsets.navigationBars

Gezinme çubuklarını açıklayan iç içe yerleştirilmiş resimler. Bunlar, cihazın sol, sağ veya alt tarafında bulunan ve görev çubuğunu ya da gezinme simgelerini açıklayan sistem kullanıcı arayüzü çubuklarıdır. Bunlar, kullanıcının tercih ettiği gezinme yöntemine ve görev çubuğuyla etkileşime göre çalışma zamanında değişebilir.

WindowInsets.navigationBarsIgnoringVisibility

Görünür olduklarında gezinme çubuğu içe yerleştirilir. Gezinme çubukları şu anda gizliyse (tam ekran moduna girildiği için) ana gezinme çubuğu iç içe yerleştirilmeleri boş olur ancak bu iç içe yerleştirilmeler boş olmaz.

WindowInsets.captionBar

Üst başlık çubuğu gibi serbest biçimli bir penceredeyse sistem kullanıcı arayüzü pencere süslemesini açıklayan içe yerleştirilmiş öğe.

WindowInsets.captionBarIgnoringVisibility

Altyazı çubuğu, görünür olduğunda içeriye doğru girer. Altyazı çubukları şu anda gizliyse ana altyazı çubuğu iç içe yerleştirilmeleri boş olur ancak bu iç içe yerleştirilmeler boş olmaz.

WindowInsets.systemBars

Durum çubukları, gezinme çubukları ve altyazı çubuğunu içeren sistem çubuğu iç içe yerleştirilmelerinin birleşimi.

WindowInsets.systemBarsIgnoringVisibility

Sistem çubuğu, görünür olduğunda içe yerleştirilir. Sistem çubukları şu anda gizliyse (tam ekran moduna girildiği için) ana sistem çubuğu iç içe yerleştirilmeleri boş olur ancak bu iç içe yerleştirilmeler boş olmaz.

WindowInsets.ime

Yazılım klavyenin alt kısımda kapladığı alanı açıklayan iç içe yerleştirilmiş resimler.

WindowInsets.imeAnimationSource

Mevcut klavye animasyonundan önce yazılım klavyenin kapladığı alanı açıklayan iç içe yerleştirilmiş resimler.

WindowInsets.imeAnimationTarget

Yazılım klavyenin mevcut klavye animasyonundan sonra kaplayacak alan miktarını açıklayan iç içe yerleştirilmiş resimler.

WindowInsets.tappableElement

Gezinme kullanıcı arayüzü hakkında daha ayrıntılı bilgi veren ve "dokunduğunda" dokunma işlemlerinin uygulama tarafından değil sistem tarafından işleneceği alanı gösteren bir tür içe yerleştirilmiş öğe. Hareketle gezinme içeren şeffaf gezinme çubuklarında, bazı uygulama öğeleri sistem gezinme kullanıcı arayüzü üzerinden dokunulabilir.

WindowInsets.tappableElementIgnoringVisibility

Dokunulabilir öğe, görünür olduğunda içe yerleştirilir. Dokunmatik öğeler şu anda gizliyse (immersive tam ekran moduna girildiği için) ana dokunmatik öğe iç içe yerleştirilmeleri boş olur ancak bu iç içe yerleştirilmeler boş olmaz.

WindowInsets.systemGestures

Sistemin gezinme için hareketleri durduracağı iç içe yerleştirilmiş öğelerin miktarını temsil eden iç içe yerleştirilmiş öğeler. Uygulamalar, Modifier.systemGestureExclusion aracılığıyla bu hareketlerin sınırlı bir miktarını işlemeyi manuel olarak belirtebilir.

WindowInsets.mandatorySystemGestures

Sistem hareketlerinin her zaman sistem tarafından işlenecek ve Modifier.systemGestureExclusion aracılığıyla devre dışı bırakılamayacak alt kümesi.

WindowInsets.displayCutout

Ekran kesiğiyle (çentik veya delik) çakışmamayı önlemek için gereken boşluk miktarını gösteren iç içe yerleştirilmiş resimler.

WindowInsets.waterfall

Şelale ekranının kavisli alanlarını temsil eden iç içe yerleştirilmiş resimler. Şelale ekranlarda, ekranın cihazın yanlarına doğru kıvrıldığı, ekranın kenarlarında kavisli alanlar bulunur.

Bu türlerin özeti, içeriğin gizlenmemesini sağlayan üç "güvenli" içe yerleştirilme türündedir:

Bu "güvenli" içe yerleştirilmiş türleri, temel platform içe yerleştirilmişlerine göre içeriği farklı şekillerde korur:

  • Hiçbir sistem kullanıcı arayüzünün altına çizilmemesi gereken içeriği korumak için WindowInsets.safeDrawing kullanın. İçe yerleştirilmiş içeriklerin en yaygın kullanım alanı, sistem kullanıcı arayüzü tarafından gizlenen (kısmen veya tamamen) içeriğin çizilmesini önlemektir.
  • İçerikleri hareketlerle korumak için WindowInsets.safeGestures simgesini kullanın. Bu sayede sistem hareketleri, uygulama hareketleriyle (alt sayfalar, bantlar veya oyunlardaki hareketler gibi) çakışmaz.
  • İçeriğin görsel ve jest çakışması olmaması için WindowInsets.safeDrawing ve WindowInsets.safeGestures ile birlikte WindowInsets.safeContent öğesini kullanın.