Uygulamanızı Android 17'deki yeniden boyutlandırılabilirlik ve yön değişikliklerine hazırlama
Okuma süresi: 6 dk.
2025'te Android 16'nın kullanıma sunulmasıyla birlikte, uygulamaların telefon, katlanabilir cihaz, tablet, masaüstü, araç ekranı veya XR gibi her ekrana sorunsuz bir şekilde uyum sağladığı bir cihaz ekosistemi vizyonumuzu paylaştık. Kullanıcılar, uygulamalarının her yerde çalışmasını bekler. Kullanıcılar, tabletlerde çoklu görev yaparken, cihazı açarak rahatça okurken veya pencereli görüntüleme ortamında uygulama çalıştırırken kullanıcı arayüzünün mevcut ekran alanını doldurmasını ve cihazın duruşuna uyum sağlamasını bekler.
Uyarlanabilir davranışı kolaylaştırmak için yön ve yeniden boyutlandırılabilirlik API'lerinde önemli değişiklikler yaptık. Ayrıca geçiş yapmanıza yardımcı olmak için geçici olarak kapsam dışında kalma seçeneği sunduk. Birçok geliştiricinin, hedef API düzeyi 36'yı hedeflerken bu geçişe başarıyla uyum sağladığını gördük.
Android 17 Beta'nın kullanıma sunulmasıyla birlikte uyarlanabilir yol haritamızın bir sonraki aşamasına geçiyoruz: Android 17 (API düzeyi 37), büyük ekranlı cihazlarda (sw > 600 dp) yön ve yeniden boyutlandırılabilirlik kısıtlamaları için geliştirici kapsam dışında kalma seçeneğini kaldırıyor. API düzeyi 37'yi hedeflediğinizde uygulamanızın çeşitli ekran boyutlarına uyum sağlayabilmesi gerekir.
Davranış değişiklikleri, Android ekosisteminin tüm cihaz form faktörlerinde tutarlı ve yüksek kaliteli bir deneyim sunmasını sağlar.
Android 17'deki değişiklikler
Android 17'yi hedefleyen uygulamalar, Android 16'da kullanıma sunulan manifest özellikleri ve çalışma zamanı API'lerinin kullanımdan kaldırılmasıyla uyumlu olmalıdır. Bazı uygulamalar için bu geçişin büyük bir değişiklik olabileceğinin farkındayız. Bu nedenle, sık karşılaşılan sorunları önlemeye yardımcı olacak en iyi uygulamaları ve araçları bu blog yayınında paylaştık.
Android 16'dan bu yana yeni bir değişiklik yapılmadı ancak geliştiriciler artık kapsam dışında kalmayı seçemez. Hatırlatma: Uygulamanız büyük ekranda çalışırken (büyük ekran, ekranın küçük boyutunun 600 dp'ye eşit veya daha büyük olduğu anlamına gelir) aşağıdaki manifest özellikleri ve API'ler yoksayılır:
Not: Android 16 ile ilgili olarak daha önce de belirtildiği gibi, bu değişiklikler sw 600 dp'den küçük ekranlar veya android:appCategory işaretine göre oyun olarak kategorize edilen uygulamalar için geçerli değildir.
| Manifest özellikleri/API | Yoksayılan değerler |
| screenOrientation | portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape |
| setRequestedOrientation() | portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape |
| resizeableActivity | tümü |
| minAspectRatio | tümü |
| maxAspectRatio | tümü |
Ayrıca, kontrol kullanıcılarda kalır. Kullanıcılar, en boy oranı ayarlarında uygulamanın istenen davranışını kullanmayı açıkça etkinleştirebilir.
Uygulamanızı hazırlama
En boy oranını ve yönü dikey veya yatay olarak kısıtlamanın bir yolu artık olmayacağından uygulamaların, kullanıcıların uygulamaları kullanmayı seçebileceği tüm en boy oranlarında (yeniden boyutlandırılabilir pencereler dahil) görüntü boyutları için yatay ve dikey düzenleri desteklemesi gerekir.
Uygulamanızı test etme
İlk adımınız, uygulamanızı bu değişikliklerle test ederek uygulamanın farklı ekran boyutlarında düzgün çalıştığından emin olmaktır.
Android Studio'da Pixel Tablet ve Pixel Fold serisi emülatörlerle Android 17 Beta 1'i kullanın ve targetSdkPreview = “CinnamonBun” değerini ayarlayın. Alternatif olarak, uygulamanız henüz API düzeyi 36'yı hedeflemiyorsa UNIVERSAL_RESIZABLE_BY_DEFAULT işaretini etkinleştirerek uygulama uyumluluk çerçevesini kullanabilirsiniz.
Düzenlerinizin doğru şekilde uyarlanmasını sağlamak için ek araçlarımız vardır. Compose UI Check ile kullanıcı arayüzünüzü otomatik olarak denetleyebilir ve kullanıcı arayüzünüzü daha uyumlu hale getirmek için öneriler alabilirsiniz. Ayrıca DeviceConfigurationOverride'ı kullanarak testlerinizde belirli ekran özelliklerini simüle edebilirsiniz.
Geçmişte yönü ve en boy oranını kısıtlayan uygulamalarda, yapılandırma değişiklikleri yapılırken genellikle eğri veya yanlış yönlendirilmiş kamera önizlemeleri, uzatılmış düzenler, erişilemeyen düğmeler ya da kullanıcı durumunun kaybıyla ilgili sorunlar görülür.
Bu yaygın sorunları ele almak için kullanabileceğiniz bazı stratejilere göz atalım.
Kamera uyumluluğunu sağlama
Yatay katlanabilir cihazlarda veya çoklu pencere, pencereli görüntüleme ya da bağlı ekranlar gibi senaryolarda en boy oranı hesaplamalarında sık karşılaşılan bir sorun, kamera önizlemesinin uzatılmış, döndürülmüş veya kırpılmış olarak görünmesidir.
Kamera önizlemenizin uzatılmadığından veya döndürülmediğinden emin olun.
Bu sorun genellikle büyük ekranlı ve katlanabilir cihazlarda görülür. Bunun nedeni, uygulamaların kamera özellikleri (en boy oranı ve sensör yönü gibi) ile cihaz özellikleri (cihaz yönü ve doğal yön gibi) arasında sabit ilişkiler olduğunu varsaymasıdır.
Kamera önizlemenizin her pencere boyutuna veya yönüne doğru şekilde uyum sağlaması için şu dört çözümü göz önünde bulundurun:
1. çözüm: Jetpack CameraX (tercih edilen)
En basit ve en sağlam çözüm, Jetpack CameraX kitaplığını kullanmaktır. PreviewView kullanıcı arayüzü öğesi, tüm önizleme karmaşıklıklarını otomatik olarak işleyecek şekilde tasarlanmıştır:
PreviewView; sensör yönü, cihaz döndürme ve ölçeklendirme için doğru şekilde ayarlanır.- PreviewView, genellikle ortalama ve kırpma (
FILL_CENTER) yoluyla kamera görüntüsünün en boy oranını korur. - Gerekirse önizlemeyi sinemaskop yapmak için ölçek türünü
FIT_CENTERolarak ayarlayabilirsiniz.
Daha fazla bilgi için CameraX belgelerindeki Önizleme uygulama bölümüne bakın.
2. çözüm: CameraViewfinder
Mevcut bir Camera2 kod tabanı kullanıyorsanız CameraViewfinder kitaplığı (API düzeyi 21 ile geriye dönük uyumlu) başka bir modern çözümdür. TextureView veya SurfaceView kullanarak ve gerekli tüm dönüşümleri (en boy oranı, ölçek ve döndürme) sizin için uygulayarak kamera feed'ini görüntülemeyi kolaylaştırır.
Daha fazla bilgi için Kamera Vizörü'ne Giriş blog yayınını ve Kamera önizlemesi geliştirici kılavuzunu inceleyin.
3. Çözüm: Manuel Camera2 uygulaması
CameraX veya CameraViewfinder kullanamıyorsanız yönü ve en boy oranını manuel olarak hesaplamanız ve her yapılandırma değişikliğinde hesaplamaların güncellendiğinden emin olmanız gerekir:
CameraCharacteristicsüzerinden kamera sensörünün yönünü (ör. 0, 90, 180, 270 derece) alın.- Cihazın mevcut ekran dönüşünü (ör. 0, 90, 180, 270 derece) alma
SurfaceViewveyaTextureViewiçin gerekli dönüşümleri belirlemek üzere kamera sensörü yönünü ve ekran döndürme değerlerini kullanın.- Bozulmayı önlemek için çıkışınızın
Surfaceen-boy oranının kamera önizlemesinin en-boy oranıyla eşleştiğinden emin olun.
Önemli: Kamera uygulamasının, ekranın bir bölümünde, çoklu pencere veya pencereli görüntüleme modunda ya da bağlı bir ekranda çalışıyor olabileceğini unutmayın. Bu nedenle, kamera vizörünün boyutlarını belirlemek için ekran boyutu kullanılmamalıdır. Bunun yerine pencere metriklerini kullanın. Aksi takdirde kamera önizlemesi uzatılabilir.
Daha fazla bilgi için Kamera önizlemesi geliştirici kılavuzunu ve Farklı form faktörlerinde Kamera uygulamanız videosunu inceleyin.
4. çözüm: Intent kullanarak temel kamera işlemlerini gerçekleştirme
Çok fazla kamera özelliğine ihtiyacınız yoksa basit ve kolay bir çözüm, cihazın varsayılan kamera uygulamasını kullanarak fotoğraf veya video çekmek gibi temel kamera işlemlerini gerçekleştirmektir. Bu durumda, daha kolay bakım ve uyarlanabilirlik için bir kamera kitaplığıyla entegrasyon yapmak yerine Intent kullanabilirsiniz.
Daha fazla bilgi için Kamera intent'leri başlıklı makaleyi inceleyin.
Genişletilmiş kullanıcı arayüzü veya erişilemeyen düğmelerden kaçının
Uygulamanız belirli bir cihaz yönü veya ekran en boy oranı varsayıyorsa farklı yönlerde ya da pencere boyutlarında kullanıldığında sorunlarla karşılaşabilir.
Düğmelerin, metin alanlarının ve diğer öğelerin büyük ekranlarda uzatılmadığından emin olun.
Düğmeleri, metin alanlarını ve kartları fillMaxWidth veya match_parent olarak ayarlamış olabilirsiniz. Telefonda bu harika görünüyor. Ancak yatay modda tablet veya katlanabilir cihazlarda kullanıcı arayüzü öğeleri tüm büyük ekrana yayılır. Jetpack Compose'da, bileşenlerin maksimum genişliğini ayarlamak ve içeriğin uzamasını önlemek için widthIn değiştiricisini kullanabilirsiniz:
Box(
contentAlignment = Alignment.Center,
modifier = Modifier.fillMaxSize()
) {
Column(
modifier = Modifier
.widthIn(max = 300.dp) // Prevents stretching beyond 300dp
.fillMaxWidth() // Fills width up to 300dp
.padding(16.dp)
) {
// Your content
}
}Kullanıcı, uygulamanızı katlanabilir cihazda veya tablette yatay yönde açarsa ekranın alt kısmındaki Kaydet veya Giriş gibi işlem düğmeleri ekran dışında oluşturulabilir. Kapsayıcı kaydırılamıyorsa kullanıcının devam etmesi engellenebilir. Jetpack Compose'da bileşeninize verticalScroll değiştiricisi ekleyebilirsiniz:
Column(
modifier = Modifier
.fillMaxSize()
.verticalScroll(rememberScrollState())
.padding(16.dp)
)Maksimum genişlik kısıtlamalarını dikey kaydırmayla birleştirerek uygulama penceresi boyutunun ne kadar geniş veya kısa olduğuna bakılmaksızın uygulamanızın işlevsel ve kullanılabilir kalmasını sağlarsınız.
Uyarlanabilir düzenler oluşturma ile ilgili kılavuzumuzu inceleyin.
Yapılandırma değişiklikleriyle durumu koruma
Yön ve en boy oranı kısıtlamalarını kaldırdığınızda uygulamanızın pencere boyutu çok daha sık değişir. Kullanıcılar cihazlarını döndürebilir, katlayabilir/açabilir veya bölünmüş ekran ya da pencereli görüntüleme modlarında uygulamanızı dinamik olarak yeniden boyutlandırabilir.
Varsayılan olarak, bu yapılandırma değişiklikleri etkinliğinizi yok eder ve yeniden oluşturur. Uygulamanız bu yaşam döngüsü olayını düzgün bir şekilde yönetmezse kullanıcılar can sıkıcı bir deneyim yaşar: Kaydırma konumları en başa sıfırlanır, yarı doldurulmuş formlar silinir ve gezinme geçmişi kaybolur. Sorunsuz bir uyarlanabilir deneyim sağlamak için uygulamanızın bu yapılandırma değişiklikleri boyunca durumu koruması çok önemlidir. Jetpack Compose ile yeniden oluşturma işleminin kapsamı dışında kalmayı seçebilir ve bunun yerine, pencere boyutu değişikliklerinin kullanıcı arayüzünüzü yeni kullanılabilir alan miktarını yansıtacak şekilde yeniden oluşturmasına izin verebilirsiniz.
Kullanıcı arayüzü durumunu kaydetme ile ilgili kılavuzumuzu inceleyin.
Ağustos 2027'ye kadar API düzeyi 37'yi hedefleme
Uygulamanız daha önce API düzeyi 36'yı hedeflerken bu değişiklikleri devre dışı bıraktıysa yalnızca uygulamanız API düzeyi 37'yi hedefledikten sonra Android 17 kapsam dışında kalma seçeneğinin kaldırılmasından etkilenir. Önceden plan yapmanıza ve uygulamanızda gerekli düzenlemeleri yapmanıza yardımcı olmak için bu değişikliklerin geçerlilik kazanacağı zaman çizelgesini aşağıda bulabilirsiniz:
- Android 17: Yukarıda açıklanan değişiklikler, API düzeyi 37'yi hedefleyen uygulamalar için büyük ekranlı cihazlarda (en küçük ekran genişliği > 600 dp) temel deneyim olacaktır. Geliştiricilerin bu özelliğin kapsamı dışında kalmayı seçme seçeneği olmayacaktır.
Belirli bir API düzeyini hedefleme için son tarihler uygulama mağazasına özeldir. Google Play'de yeni uygulamaların ve güncellemelerin API düzeyi 37'yi hedeflemesi gerekecek. Bu davranış, Ağustos 2027'de dağıtım için zorunlu hale gelecek.
Android 17'ye hazırlanma
Android 17'deki uygulamaları etkileyen tüm değişiklikler için Android 17 değişiklikleri sayfasını inceleyin. Uygulamanızı test etmek için Android 17 Beta 1'i indirip targetSdkPreview = “CinnamonBun” sürümüne güncelleyin veya belirli değişiklikleri etkinleştirmek için uygulama uyumluluk çerçevesini kullanın.
Android'in geleceği uyarlanabilir ve size yardım etmeye hazırız. Android 17'ye hazırlanırken uyarlanabilir düzenler oluşturma ile ilgili kılavuzlarımızı ve büyük ekran kalite yönergelerimizi incelemenizi öneririz. Bu kaynaklar, birden fazla form faktörünü ve pencere boyutunu güvenle kullanmanıza yardımcı olmak için tasarlanmıştır.
Beklemeyin. Android 17'ye bugünden hazırlanmaya başlayın.
-
Ürün HaberleriSamsung, bugünkü Galaxy Unpacked etkinliğinde en yeni katlanabilir ve giyilebilir cihazlarını tanıttı. Bu durum, geliştiriciler açısından uygulamanızın desteklemesi gereken form faktörleri, ekran boyutları ve cihaz duruşlarının çeşitliliğinin bir kez daha arttığı anlamına geliyor.
Fahd Imtiaz, Miguel Montemayor • Okuma süresi: 3 dk. -
Ürün HaberleriPixel 10 Pro Fold gibi yeni form faktörlerinin Android ekosistemine katılmasıyla birlikte, telefonlar, tabletler ve katlanabilir cihazlarda yüksek kaliteli kullanıcı deneyimleri oluşturmak için uyarlanabilir uygulama geliştirme çok önemli hale geldi.
Fahd Imtiaz, Miguel Montemayor • Okuma süresi: 3 dk. -
Ürün HaberleriYakında çıkacak Android sürümünü hedefleyen uygulamalar artık WRITE_CONTACTS izniyle kişilere doğrudan yazamayacak.
Roxanna Aliabadi Walker • Okuma süresi: 6 dk.
Android geliştiriciliğiyle ilgili en son analizleri her hafta gelen kutunuza alın.