Uyarlanabilir yapılacaklar ve yapılmaması gerekenler

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 katlanmamış ekranları.

Yapılandırılabilir ayarların ve API'lerin kısa bir listesi, uyarlanabilir uygulamalar oluşturmanıza olanak tanır. Ancak eski bazı ayarlar ve API'ler, uyarlanabilir uygulamalarla uyumlu değildir ve kullanılmamalıdır.

Tabanı değiştirilebilir

Uyarlanabilir uygulamalar, uygulamanın yeniden boyutlandırılabilirliğini 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 özelliğe bakılmaksızın çoklu pencere modunu destekler. Daha fazla bilgi için Çoklu pencere modunu destekleme başlıklı makaleyi inceleyin.

✓ Şunu yapın:

Kullanıcı üretkenliğini ve memnuniyetini artırmak için uygulamanızın ç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 unutabilirsiniz. Android 7.0 (API düzeyi 24) ve sonraki sürümlerde varsayılan olarak true değerini alır.

✗ Yapmayın

Hiçbir API düzeyi için resizeableActivity="false" ayarlamamalısınız. Uygulamanızı çoklu pencere modunu içeren kullanım alanlarından hariç tutmayın.

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.

✓ Şunu yapın:

screenOrientation ayarını uygulama manifest dosyanızdan kaldırın.

Uygulamaların yönünü kilitlemek, pencere boyutunda değişiklik yapılmasını engellemez. Uygulamalar, çoklu pencere moduna 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ın, screenOrientation özelliğinin ayarından bağımsız olarak pencere boyutunda yapılan değişiklikleri desteklemesi gerekir.

✗ Yapmayın

Etkinlik yönünü kısıtlamayın. Yönlendirmeyi kilitleyen uygulamalar, büyük ekranlı cihazlarda ve uyumlu olmayan pencere boyutlarında sinemaskop biçiminde gösterilir.

Sinemaskoplu uygulamaların tabletler, katlanabilir cihazlar ve ChromeOS cihazlarda Google Play'deki bulunabilirliği azalır.

En boy oranı

Ekran ve pencere boyutları değiştikçe en boy oranları da değişir. Bu oranlar uzun ve dardan kare ve kısa genişe kadar çeşitlilik gösterir.

minAspectRatio ve maxAspectRatio manifest ayarları, uygulamanızın en boy oranını sabit kodlu değerlerle kısıtlar.

✓ Şunu yapın:

Uygulamanızı, göreceli boyutlardan bağımsız olarak ekrana sığacak şekilde uyarlayın.

Uygulama manifest dosyanızdan 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 kendi kendine ayarlandığından emin olun (Yeniden boyutlandırılabilirlik bölümüne bakın).

✗ Yapmayın

Uygulamanızın göreli boyutlarını kontrol etmeye çalışmayın. Uygulamanız, uygulamanın en boy oranıyla uyumlu olmayan bir en boy oranına sahip bir ekranda veya pencerede çalışıyorsa uygulamanız sinemaskoplu olur.

Android 14 (API düzeyi 34) ve sonraki sürümlerde kullanıcılar, sinemaskoplu uygulamaları mevcut ekran alanını dolduracak şekilde genişletmek için uygulama en boy oranını geçersiz kılabilir. Cihaz uyumluluk modu başlıklı makaleyi inceleyin.

Pencere boyutu

Düzenleri farklı ekran boyutları için optimize etmek, uyarlanabilir tasarımın temel fikridir. Uyarlanabilir uygulamalar, cihaz ekran boyutu yerine uygulama penceresi boyutuna odaklanır. Uygulama tam ekran modundayken uygulama penceresi cihaz ekranıdır.

Pencere boyutu sınıfları, uygulama penceresinin boyutunu belirlemek ve sınıflandırmak için sistematik bir yol sunar. Uygulamanızın pencere boyutu sınıfı değiştikçe düzenleri değiştirerek uygulamanızı uyarlayın.

✓ Şunu yapın:

Uygulamanızın pencere boyutunu, 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.

✗ Yapmayın

Pencere boyutu sınıfı tanımlarının ve yerleşik API'lerin yararını göz ardı etmeyin. Pencere boyutunu hesaplamak için desteği sonlandırılmış 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ı sistem dekorunu hariç tutar.

✓ Şunu yapın:

Uygulama penceresinin boyutunu almak için WindowManager#getCurrentWindowMetrics() ve WindowMetrics#getBounds() öğelerini kullanın. Görüntü yoğunluğunu almak için WindowMetrics#getDensity() kullanın.

✗ Yapmayın

Pencere boyutunu belirlemek için desteği sonlandırılmış aşağıdaki Display API'lerini kullanmayın:

  • getSize(): Android 11 (API düzeyi 30) sürümünde 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, sayfa düzeni dosyası veya kaynak tanımlayıcısı yok. Yalnızca Kotlin tabanlı, durumsuz kompozisyonlar (ör. Column, Row ve Box) kullanıcı arayüzünüzü tanımlar ve offset, padding ve size gibi değiştiriciler kullanıcı arayüzü öğelerine davranış ekler.

✓ Şunu yapın:

Oluştur'u kullanarak içerik oluşturun. En yeni özellikler ve sürümler hakkında bilgi edinin.

✗ Yapmayın

Eski teknolojilere güvenmeyin. Uygulamanızın eskimesine izin vermeyin.

Material 3 Uyarlanabilir kitaplığı oluşturma

Compose Material 3 Adaptive kitaplığı, uyarlanabilir uygulamaların geliştirilmesini kolaylaştıran bileşenler ve API'ler sağlar.

✓ Şunu yapın:

Uygulamanızı uyarlanabilir hale getirmek için aşağıdaki API'leri kullanın:

✗ Yapmayın

Tekerleği yeniden icat etmeyin. Tüm Jetpack Compose kitaplıklarının sunduğu geliştirici üretkenliği kazanımları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, ekrandaki değişikliklere (özellikle uygulama penceresinin boyutundaki değişikliklere veya cihaz duruşundaki değişikliklere) göre düzenleri optimize eder.

✓ Şunu yapın:

Mevcut 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 bir gezinme çubuğuyla değiştirin. İletişim kutularını tüm ekranlardan erişilebilir olacak şekilde yeniden konumlandırın.

Dinamik içerik görüntülemeler için liste ayrıntıları ve destekleyici panel gibi çok panelli düzenleri etkinleştirmek üzere içeriği panellere ayırın.

✓ Yapın: Bölünmüş ekran düzeninde düzenlenen etkinlikleri listeleyin ve ayrıntılı olarak açıklayın.
✗ Yapmayın

İçerik bölmeleri kullanmıyorsanız kullanıcı arayüzü öğelerini, mevcut ekran alanını dolduracak şekilde uzatmayın. Uzun metin satırlarını okumak zordur. 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.

✗ Yapmayın: Genişleyen pencereyi dolduracak şekilde gerilmiş düzen.

Giriş cihazları

Kullanıcılar, uygulamalarla etkileşimde bulunmak 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 ekran kalemlerini destekler.

✓ Şunu yapın:

Klavye sekme gezinme ve fare veya dokunmatik yüzey 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 TextField bileşenine yazabilmesi için Jetpack Material 3 kütüphanesini kullanın.

✗ Yapmayın

Alternatif giriş yöntemlerini imkansız hale getirmeyin. Erişilebilirlik sorunları oluşturmayın.

Özet

  • Compose ve Materyal 3 Uyarlanabilir kitaplığıyla uygulamanızı oluşturma
  • Düzenleri pencere boyutu sınıflarına göre temellendirme
  • Çok bölmeli 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ışındaki girişleri destekleme
  • Kullanımdan kaldırılan API'leri kullanmama

Kullanıcılarınızın beklediği ✓ işlemleri yapın: Uygulamanızı, kullanıcıların her gün kullandığı çeşitli cihazlar için optimize edin.

✗ Beklemeyin. Hemen kullanmaya başlayın.