Uyarlanabilir uygulamalar her boyuttaki ekranları destekler: cihaz ekranının tamamı, çoklu pencere modunda yeniden boyutlandırılabilir pencereler, dikey ve yatay yönler, katlanabilir cihazların katlanmış ve açılmış ekranları.
Kısa bir yapılandırma ayarları ve API listesi, uyarlanabilir uygulamalar oluşturmanıza olanak tanır. Ancak bazı eski ayarlar ve API'ler uyarlanabilir uygulamalarla uyumlu değildir ve bunlardan kaçınılmalıdır.
Yeniden boyutlandırılabilirlik
Uyarlanabilir uygulamalar, uygulamanın yeniden boyutlandırılabilmesini ve çok pencereli modu destekler.
resizeableActivity, <activity> ve <application> manifest öğelerinin özelliği, Android 11 (API düzeyi 30) ve önceki sürümlerde çoklu pencere modunu etkinleştirir veya devre dışı bırakır. Android 12 (API düzeyi 31) ve sonraki sürümlerde, büyük ekranlar özellikten bağımsız olarak çok pencereli modu destekler. Daha fazla bilgi için Çok pencereli modu destekleme başlıklı makaleyi inceleyin.
Uygulamanızın, kullanıcı verimliliğini ve memnuniyetini artırmak için çoklu pencere ve çoklu görev senaryolarına katılmasını sağlayın.
Uygulamanız 24'ten düşük API düzeylerini hedefliyorsa resizeableActivity="true" değerini ayarlayın. Aksi takdirde bu değeri göz ardı edebilirsiniz. Android 7.0 (API düzeyi 24) ve sonraki sürümlerde varsayılan olarak true değerini alır.
Herhangi bir API düzeyi için resizeableActivity="false" ayarlamayın. Uygulamanızı çoklu pencere modunu içeren kullanım alanlarının dışında tutmayın.
Sayfa yönü
Uyarlanabilir uygulamalar, ekran boyutundan veya pencere modundan bağımsız olarak dikey ve yatay yönü destekler.
screenOrientation manifest ayarı, etkinlik yönünü kısıtlar.
Uygulama manifestinizdeki screenOrientation ayarını kaldırın.
Uygulamaların yönünü kilitlemek, pencere boyutunun değişmesini engellemez. Uygulamalar, çok pencereli moda girildiğinde, cihaz katlandığında veya açıldığında ya da masaüstü tipi bir pencere yeniden boyutlandırıldığında yeniden boyutlandırılır. Uygulamanız, screenOrientation özelliği ayarından bağımsız olarak pencere boyutundaki değişiklikleri desteklemelidir.
Etkinlik yönünü kısıtlamayın. Yönü kilitleyen uygulamalar, büyük ekranlı cihazlarda ve uyumsuz pencere boyutlarında mektup kutusu şeklinde gösterilir.
Letterbox'lı uygulamaların tabletler, katlanabilir cihazlar ve ChromeOS cihazlarda Google Play'deki bulunabilirliği azalır.
En boy oranı
Ekran ve pencere boyutları farklılık gösterdiğinden en boy oranları da farklılık gösterir. Bu oranlar; uzun ve dar, kare, kısa ve geniş olabilir.
minAspectRatio ve maxAspectRatio manifest ayarları, uygulamanızın en boy oranını sabit kodlanmış değerlerle kısıtlar.
Uygulamanızı, göreceli boyutlardan bağımsız olarak ekrana uyacak şekilde ayarlayın.
Uygulama manifestinizdeki minAspectRatio ve maxAspectRatio ayarlarını kaldırın. Alternatif olarak, uygulamanızın yeniden boyutlandırılabilir olduğundan ve en boy oranının kendiliğinden ayarlandığından emin olun (Yeniden boyutlandırılabilirlik bölümüne bakın).
Uygulamanızın göreli boyutlarını kontrol etmeye çalışmayın. Uygulamanız, en boy oranı uygulamanın en boy oranıyla uyumlu olmayan bir ekranda veya pencerede çalışıyorsa uygulamanızda siyah bantlar görünür.
Android 14 (API düzeyi 34) ve sonraki sürümlerde kullanıcılar, mevcut ekran alanını doldurmak için mektup kutusu biçimli uygulamaları genişletmek üzere uygulama en boy oranını geçersiz kılabilir. Cihaz uyumluluğu modu başlıklı makaleyi inceleyin.
Pencere boyutu
Düzenleri farklı ekran boyutlarına göre optimize etmek, uyarlanabilir tasarımın temelini oluşturur. Uyarlanabilir uygulamalar, cihaz ekran boyutu yerine uygulama penceresi boyutuna odaklanır. Uygulama tam ekrandayken uygulama penceresi cihaz ekranıdır.
Pencere boyutu sınıfları, uygulama penceresinin boyutunu belirlemek ve kategorilere ayırmak için sistematik bir yöntem sunar. Uygulamanızın pencere boyutu sınıfı değiştikçe düzenleri değiştirerek uygulamanızı uyarlayın.
Uygulama pencere boyutunuzu pencere boyutu sınıflarına göre değerlendirin.
Pencere boyutu sınıfını belirlemek için Compose Material 3 Adaptive kitaplığının currentWindowAdaptiveInfoV2() üst düzey işlevini kullanın (bu işlev, kullanımdan kaldırılan currentWindowAdaptiveInfo() işlevinin yerini alır). Daha fazla bilgi için Uyarlanabilir uygulamalar oluşturma başlıklı makaleyi inceleyin.
Pencere boyutu sınıfı tanımlarının ve yerleşik API'lerin faydasını göz ardı etmeyin. Pencere boyutunu hesaplamak için kullanımdan kaldırılan API'leri kullanmayın.
Kullanımdan Kaldırılmış API'ler
Eski platform API'leri, uygulama penceresini doğru şekilde ölçmez. Bazıları cihaz ekranını ölçer, bazıları ise sistem dekorunu hariç tutar.
Uygulama penceresinin boyutunu almak için WindowManager#getCurrentWindowMetrics() ve WindowMetrics#getBounds() kullanın. Görüntü yoğunluğunu elde etmek için WindowMetrics#getDensity() kullanın.
Pencere boyutunu belirlemek için aşağıdaki kullanımdan kaldırılan Display API'leri kullanmayın:
getSize(): Android 11'de (API düzeyi 30) desteği sonlandırıldı.getMetrics(): Android 11'de (API düzeyi 30) desteği sonlandırıldı.getRealSize(): Android 12'de (API düzeyi 31) desteği sonlandırıldı.getRealMetrics(): Android 12'de (API düzeyi 31) desteği sonlandırıldı.
Oluştur
Jetpack Compose, uyarlanabilir kullanıcı arayüzü geliştirmek için tasarlanmıştır. XML, düzen dosyaları ve kaynak niteleyicileri yok. Yalnızca Kotlin tabanlı, durumsuz composable'lar (ör. Column, Row ve Box) kullanıcı arayüzünüzü tanımlar. Değiştiriciler (ör. offset, padding ve size) ise kullanıcı arayüzü öğelerine davranış ekler.
Compose ile geliştirin. En yeni özellikler ve sürümlerden haberdar olun.
Eski teknolojilere güvenmeyin. Uygulamanızın eskimesine izin vermeyin.
Compose Material 3 Adaptive kitaplığı
Compose Material 3 Adaptive kitaplığı, uyarlanabilir uygulamaların geliştirilmesini kolaylaştıran bileşenler ve API'ler sağlar.
Uygulamanızı uyarlanabilir hale getirmek için aşağıdaki API'leri kullanın:
NavigationSuiteScaffold: Uygulama penceresi boyutu sınıfına bağlı olarak gezinme çubuğu ile gezinme rayı arasında geçiş yapar.ListDetailPaneScaffold: Liste-ayrıntı düzenini uygular. Düzeni, uygulama penceresinin boyutuna göre ayarlar.SupportingPaneScaffold: Destekleyici bölme standart düzenini uygular.
Amerika'yı yeniden keşfetmeyin. Tüm Jetpack Compose kitaplıklarının sağladığı geliştirici üretkenliği avantajlarından yararlanın.
Düzenler
Kullanıcılar, uygulamaların ek içerik veya gelişmiş kontrollerle mevcut ekran alanından en iyi şekilde yararlanmasını bekler.
Uyarlanabilir uygulamalar, düzenleri ekrandaki değişikliklere göre optimize eder. Özellikle de uygulama penceresinin boyutundaki veya cihaz duruşundaki değişikliklere göre optimize eder.
Kullanılabilir ekran alanından yararlanmak için pencere boyutu değiştikçe kullanıcı arayüzü bileşenlerini değiştirin. Örneğin, kompakt pencere boyutlarında kullanılan alt gezinme çubuğunu orta ve genişletilmiş pencerelerde dikey gezinme çubuğuyla değiştirin. İletişim kutularını tüm ekranlarda erişilebilir olacak şekilde yeniden konumlandırın.
İçeriği bölmeler halinde düzenleyerek liste-ayrıntı gibi çok bölmeli düzenlerin ve dinamik içerik gösterimleri için destek bölmesinin kullanılmasını sağlayın.
İçerik bölmeleri kullanmıyorsanız kullanıcı arayüzü öğelerini yalnızca kullanılabilir ekran alanını dolduracak şekilde genişletmeyin. Uzun metin satırları zor okunur. Uzatılmış düğmeler kötü tasarlanmış görünüyor. Modifier.fillMaxWidth kullanıyorsanız bunun tüm ekran boyutları için doğru davranış olduğunu varsaymayın.
Giriş cihazları
Kullanıcılar, uygulamalarla etkileşim kurmak için yalnızca dokunmatik ekranları kullanmaz.
Uyarlanabilir uygulamalar, gelişmiş bir kullanıcı deneyimi sunmak ve kullanıcıların her tür form faktöründe daha üretken olmasına yardımcı olmak için harici klavyeleri, fareleri ve kalemleri destekler.
Klavye sekmesiyle gezinme ve fare ya da dokunmatik yüzeyle tıklama, seçme ve kaydırma için Android çerçevesinin yerleşik işlevinden yararlanın. Uygulamanızın klavye kısayollarını Klavye Kısayolları Yardımcısı'nda yayınlayın.
Kullanıcıların ekran kalemi kullanarak herhangi bir TextField bileşenine yazabilmesini sağlamak için Jetpack Material 3 kitaplığını kullanın.
Alternatif giriş yöntemlerini imkansız hale getirmeyin. Erişilebilirlik sorunlarına yol açmayın.
Özet
- Uygulamanızı Compose ve Material 3 Adaptive kitaplığıyla oluşturma
- Düzenleri pencere boyutu sınıflarına göre oluşturma
- Çok panelli düzenler oluşturma
- Uygulamanızı yeniden boyutlandırılabilir hale getirme
- Etkinlik yönünü hiçbir zaman kilitleme
- En-boy oranını kısıtlama
- Dokunma dışında girişleri destekleme
- Desteği sonlandırılan API'leri kullanmaktan kaçının
✓ Kullanıcılarınızın beklentilerini karşılayın: Uygulamanızı, kullanıcıların her gün kullandığı cihazların çeşitliliğine göre optimize edin.
✗ Beklemeyin. Bugün kullanmaya başlayın!