Uygulama yönü, en boy oranı ve yeniden boyutlandırılabilirlik

Android uygulamaları her tür cihazda (telefonlar, tabletler, katlanabilir cihazlar, ChromeOS cihazlar, arabalar, TV'ler ve hatta XR) çalışır. Bu çeşitli ortama uyum sağlamak için uygulamanız tüm cihaz form faktörlerini ve ekran boyutlarını desteklemelidir.

Android 16 (API düzeyi 36), ekran yönü, en-boy oranı ve yeniden boyutlandırılabilirlik ile ilgili uygulama kısıtlamalarını geçersiz kılarak uygulamaların farklı form faktörlerine ve ekran boyutlarına uyum sağlamasına olanak tanır. Geçersiz kılmalar, en küçük genişliği >= 600 dp olan cihazlar için geçerlidir. Bu, aşağıdakileri tanımlar:

  • Tabletler
  • Büyük ekranlı katlanabilir cihazların iç ekranları
  • Pencereli görüntüleme (tüm form faktörlerinde)

Hedef API düzeyi 36 olan uygulamalar, ekranın en küçük genişliği >= 600 dp ise yeniden boyutlandırılabilir ve çok pencereli moda (resizeableActivity="true"'ye eşdeğer) girebilir.

Uygulama, Android 16'dan önceki sürümlerde katlanmamış büyük ekranlı cihazlarda letterbox olarak görünürken Android 16'yı hedeflediğinde tam ekran olarak görünür. Uygulama, sinemaskop yerine tam ekran olduğunda daha fazla haber öğesi gösterir.
1.şekil Geliştirici Haberleri feed'i daha önce büyük ekranlı cihazlarda mektup kutusu şeklinde gösterilirken (sol), Android 16'yı hedeflediğinde tam ekran olarak çalışır (sağ).

Android 16, cihaz yönü, en boy oranı ve ekran boyutuyla ilgili kullanıcı tercihlerine saygı duyarak kullanıcı deneyimini optimize eden tutarlı bir uyarlanabilir uygulama tasarımı modeli uygular.

Değişiklikler

Büyük ekranlarda Android 16 (API düzeyi 36) sürümünü hedefleyen uygulamalarda aşağıdaki manifest özellikleri ve API'ler yoksayılır:

Özellik veya API Yoksayılan değerler
screenOrientation portrait, landscape, reversePortrait, reverseLandscape, sensorPortrait, sensorLandscape, userPortrait, userLandscape
resizeableActivity tümü
minAspectRatio tümü
maxAspectRatio tümü
setRequestedOrientation()

getRequestedOrientation()
portrait, landscape, reversePortrait, reverseLandscape, sensorPortrait, sensorLandscape, userPortrait, userLandscape

İstisnalar

Android 16'daki değişikliklerle ilgili istisnalar şunlardır:

  • sw600dp'den küçük ekranlar (çoğu telefon, katlanabilir cihaz ve büyük ekranlı katlanabilir cihazların dış ekranları)

  • android:appCategory işaretine dayalı oyunlar

    Oyununuzu Android App Bundle ve Play Uygulama İmzalama'yı kullanarak yayınlayın. Böylece Google Play, otomatik olarak bayrağı yönetebilir ve uygulama paketlerinin avantajlarını sunabilir. Ayrıca Uygulama manifestine genel bakış başlıklı makaleyi inceleyin.

  • Kullanıcı, en boy oranı ayarlarında uygulamanın varsayılan davranışını etkinleştirir.

Devre dışı bırak

API düzey 36 davranışını devre dışı bırakmak için PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY manifest mülkünü tanımlayın.

Belirli bir etkinliği devre dışı bırakmak için <activity> öğesinde özelliği ayarlayın:

<activity ...>
    <property
        android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
        android:value="true" />
    ...
</activity>

Uygulamanızın tamamı için kapsam dışında kalmayı tercih etmek istiyorsanız <application> öğesinde mülkü ayarlayın:

<application ...>
    <property
        android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
        android:value="true" />
    ...
</application>

Testler

Uygulamanızın Android 16 değişikliklerinden etkilenip etkilenmediğini test etmek için Android Studio'da Pixel Tablet ve Pixel Fold serisi emülatörleri kullanın ve uygulamanızın modül build.gradle dosyasında targetSdkPreview = "Baklava" değerini ayarlayın.

Alternatif olarak, UNIVERSAL_RESIZABLE_BY_DEFAULT işaretini etkinleştirerek test cihazlarınızda uygulama uyumluluğu çerçevesini kullanabilirsiniz (Uyumluluk çerçevesi araçları bölümüne bakın).

Testleri Espresso test çerçevesi ve Jetpack Compose test API'leri ile otomatikleştirebilirsiniz.

Sık karşılaşılan sorunlar

Cihaz yönünü, en boy oranını veya uygulamanın yeniden boyutlandırılmasını kısıtlayan uygulamalar, Android 16'da çakışan düzenler gibi görüntüleme sorunlarına neden olabilir.

Telefonlarda, katlanabilir cihazlarda, tabletlerde, ChromeOS cihazlarda, araba ekranlarında ve XR'de optimum kullanıcı deneyimi sunmak için uygulamanızı duyarlı ve uyarlanabilir olacak şekilde geliştirin:

  • Genişletilmiş kullanıcı arayüzü bileşenlerinden kaçının: Standart, dikey telefon ekranları için tasarlanan düzenler, diğer en boy oranlarını desteklemeyebilir. Örneğin, ekranın tüm genişliğini kaplayan kullanıcı arayüzü öğeleri, yatay yönde gerilmiş olarak görünür. Genişlemeyi önlemek için bileşenlere maksimum genişlik ekleyin.

  • Düzenlerin kaydırılmasını etkinleştirin: Düzenler kaydırılmıyorsa kullanıcılar yatay yönde ekranda görünmeyen düğmelere veya diğer kullanıcı arayüzü öğelerine erişemeyebilir. Ekranın yüksekliğinden bağımsız olarak tüm içeriğe ulaşılabilmesi için uygulamalarda kaydırma özelliğini etkinleştirin.

  • Portre ve yatay modda kamera uyumluluğunu sağlama: Kamera vizörünün, kamera sensörüne göre belirli bir en boy oranı ve yönlendirme varsayan önizlemeleri, uygun olmayan ekranlarda gerilmiş veya ters çevrilmiş önizlemelere neden olabilir. Vizörlerin, yön değişiklikleriyle birlikte düzgün şekilde döndüğünden emin olun. Vizörlerin, sensör en boy oranından farklı olan kullanıcı arayüzü en boy oranlarına göre ayarlanmasını sağlar.

  • Pencere boyutu değişiklikleri sırasında durumu koruma: Yön ve en-boy oranı kısıtlamalarının kaldırılması, kullanıcıların uygulamayı kullanma tercihine bağlı olarak (ör. cihazı döndürerek, katlayarak veya açarak ya da çoklu pencere veya masaüstü pencere modunda uygulamanın boyutunu değiştirerek) uygulama penceresi boyutunun sık sık değişmesine neden olabilir. Yön değişiklikleri ve pencere boyutu değiştirme gibi yapılandırma değişiklikleri, etkinliğin yeniden oluşturulmasına (varsayılan olarak) neden olur. En iyi kullanıcı deneyimini sağlamak için yapılandırma değişiklikleri sırasında uygulama durumunu koruyun. Böylece uygulamanız verileri (ör. form girişi) saklar ve kullanıcılar bağlamı koruyabilir.

  • Pencere boyutu sınıflarını kullanma: Cihaza özel özelleştirmeler olmadan farklı pencere boyutlarını ve en boy oranlarını destekleyin. Pencere boyutlarının sık sık değişeceğini varsayın. Pencere boyutlarını karakterize etmek için pencere boyutu sınıflarını kullanın ve ardından uygun bir uyarlanabilir düzen uygulayın.

  • Duyarlı düzenler oluşturun: Pencere boyutu sınıflarında duyarlı düzenler, her zaman optimum uygulama sunumu oluşturmak için ekran boyutlarındaki değişikliklere göre ayarlanır.

Zaman Çizelgesi

  • Android 16 (2025): API düzeyi 36'yı hedefleyen uygulamalarda, büyük ekranlı cihazlar (en küçük ekran genişliği >= 600 dp) için tüm yönler, en-boy oranları ve uygulama yeniden boyutlandırma desteği temel deneyimdir. Ancak geliştiriciler bu özelliği devre dışı bırakabilir.

  • 2026'da Android sürümü: API düzeyi 37'yi hedefleyen uygulamalarda, tüm yönler ve en-boy oranlarının yanı sıra uygulamanın yeniden boyutlandırılabilirliği desteği, büyük ekranlı cihazlar (en küçük ekran genişliği >= 600 dp) için temel deneyim olacak. Geliştiriciler bu özelliği devre dışı bırakamaz.

Hedef API düzeyi Geçerli cihazlar Geliştirici devre dışı bırakma işlemine izin verilir
36 (Android 16) Büyük ekranlı cihazlar (en küçük ekran genişliği >= 600 dp) Evet
37 (Beklenen) Büyük ekranlı cihazlar (en küçük ekran genişliği >= 600 dp) Hayır

Belirli API düzeylerini hedefleme son tarihleri uygulama mağazasına özeldir. Google Play, Ağustos 2026'dan itibaren uygulamaların API düzeyi 36'yı, Ağustos 2027'den itibaren ise API düzeyi 37'yi hedeflemesini zorunlu kılacak.

Ek kaynaklar