Uyarlanabilir uygulamalar, tüm boyutlardaki 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ılmasını ve çoklu pencere modunu destekler.
<activity> ve <application> manifest öğelerinin resizeableActivity ö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 ayarlamanıza gerek yoktur. Android 7.0 (API düzeyi 24) ve sonraki sürümlerde varsayılan değer true'dir.
Hiçbir API düzeyi için resizeableActivity="false" değerini ayarlamayın. Uygulamanızı çoklu pencere modunu içeren kullanım alanlarının dışında bırakmayın.
Yön
Uyarlanabilir uygulamalar, ekran boyutundan veya pencere modundan bağımsız olarak dikey ve yatay yönleri destekler.
screenOrientation manifest ayarı, etkinliğin 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 letterbox olarak gösterilir.
Letterbox'lı uygulamaların tabletlerde, katlanabilir cihazlarda 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 sinemaskop efekti oluşur.
Android 14 (API düzeyi 34) ve sonraki sürümlerde kullanıcılar, mevcut ekran alanını doldurmak için sinemaskop 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ı için optimize etmek, uyarlanabilir tasarımın temelini oluşturur. Uyarlanabilir uygulamalar, cihaz ekran boyutu yerine uygulama pencere boyutuna odaklanır. Uygulama tam ekran olduğunda uygulama penceresi cihaz ekranıdır.
Pencere boyutu sınıfları, uygulama penceresinin boyutunu belirlemek ve sınıflandı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 penceresi 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 currentWindowAdaptiveInfo() üst düzey işlevini kullanın. 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 desteği sonlandırılan API'leri kullanmayın.
Kullanımdan kaldırılan 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() tuşlarını kullanın. Görüntü yoğunluğunu almak için
WindowMetrics#getDensity() kullanın.
Pencere boyutunu belirlemek için aşağıdaki kullanımdan kaldırılmış 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ştirme 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) ile kullanıcı arayüzünüzü tanımlayan ve kullanıcı arayüzü öğelerine davranış ekleyen değiştiriciler (ör. offset, padding ve size).
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 verimliliğ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 (özellikle uygulama penceresinin boyutundaki değişiklikler veya cihaz duruşundaki değişiklikler) 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 rayıyla 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. Gerilmiş 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 sağlamak 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 alanla 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ısayol Yardımcısı'nda yayınlayın.
Kullanıcıların ekran kalemi kullanarak herhangi bir Material 3 kitaplığı bileşenine yazabilmesini sağlamak için Jetpack'i kullanın.TextField
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ıtlamayın
- Dokunma dışında girişleri destekleme
- Kullanımdan kaldırılan API'leri önleme
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. Hemen kullanmaya başlayın.