Ürün Haberleri
Uygulamanızı Android 17'deki yeniden boyutlandırılabilirlik ve yön değişikliklerine hazırlama
Okuma süresi 6 dakika
2025'te Android 16'nın kullanıma sunulmasıyla birlikte, uygulamaların telefon, katlanabilir cihaz, tablet, masaüstü, araba ekranı veya XR gibi her ekrana sorunsuz şekilde uyum sağladığı bir cihaz ekosistemine yönelik vizyonumuzu paylaştık. Kullanıcılar uygulamalarının her yerde çalışmasını bekler. Kullanıcılar, tabletlerde çoklu görev yaparken, rahat okumak için cihazları açarken veya uygulamaları masaüstü pencereli görüntüleme ortamında ç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.
Uyumlu davranışları kolaylaştırmak için yönlendirme ve yeniden boyutlandırma API'lerinde önemli değişiklikler yaptık. Ayrıca, geçiş sürecinde size yardımcı olmak için geçici olarak devre dışı bırakma seçeneği sunduk. API düzeyi 36'yı hedefleyen birçok geliştiricinin bu geçişe başarılı bir şekilde uyum sağladığını gördük.
Android 17 Beta sürümünün yayınlanması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 yön ve yeniden boyutlandırma kısıtlamaları için geliştirici devre dışı bırakma seçeneğini kaldırıyor (sw > 600 dp). 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 uyumluluğu sağlamalıdır. Bu değişikliğin bazı uygulamalar için büyük bir geçiş olabileceğinin farkındayız. Bu nedenle, bu blog yayınında daha sonra karşılaşabileceğiniz yaygın sorunları önlemenize yardımcı olacak en iyi uygulamaları ve araçları paylaştık.
Android 16'dan bu yana yeni değişiklikler yapılmadı ancak geliştiricilerin kapsam dışında kalması artık mümkün değil. Hatırlatma: Uygulamanız büyük bir ekranda çalışırken (büyük ekran, ekranın daha 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 daha önce belirtildiği gibi, bu değişiklikler sw 600 dp'den küçük ekranlar veya android:appCategory işaretine göre oyun olarak sınıflandırılan 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, kullanıcılar kontrolü elinde tutar. Kullanıcılar, en-boy oranı ayarlarında uygulamanın istediği davranışı kullanmayı açıkça etkinleştirebilir.
Uygulamanızı hazırlama
En boy oranını ve yönlendirmeyi dikey veya yatay olarak kısıtlamanın artık bir yolu olmayacağından, uygulamaların yeniden boyutlandırılabilir pencereler de dahil olmak üzere kullanıcıların uygulamaları kullanmayı seçebileceği tüm en boy oranlarındaki ekran boyutları için yatay ve dikey düzenleri desteklemesi gerekecek.
Uygulamanızı test etme
İlk adım olarak, uygulamanızın farklı ekran boyutlarında düzgün çalıştığından emin olmak için bu değişikliklerle test etmeniz gerekir.
Android Studio'daki Pixel Tablet ve Pixel Fold serisi emülatörlerle Android 17 Beta 1'i kullanın ve targetSdkPreview = “CinnamonBun” ayarını yapın. Alternatif olarak, uygulamanız henüz API düzeyi 36'yı hedeflemiyorsa UNIVERSAL_RESIZABLE_BY_DEFAULT işaretini etkinleştirerek uygulama uyumluluğu çerçevesini kullanabilirsiniz.
Düzenlerinizin doğru şekilde uyarlanmasını sağlamak için ek araçlarımız var. Compose UI Check ile kullanıcı arayüzünüzü otomatik olarak denetleyebilir ve kullanıcı arayüzünüzü daha uyarlanabilir hale getirmek için öneriler alabilir, DeviceConfigurationOverride ile testlerinizde belirli ekran özelliklerini simüle edebilirsiniz.
Geçmişte yönlendirmeyi ve en boy oranını kısıtlayan uygulamalarda genellikle çarpık veya yanlış yönlendirilmiş kamera önizlemeleri, uzatılmış düzenler, erişilemeyen düğmeler ya da yapılandırma değişiklikleri işlenirken kullanıcı durumunun kaybolması gibi 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, masaüstü pencereli görüntüleme ya da bağlı ekranlar gibi senaryolarda en boy oranı hesaplamaları yapılırken karşılaşılan yaygın bir sorun, kamera önizlemesinin gerilmiş, döndürülmüş veya kırpılmış görünmesidir.
Kamera önizlemenizin gerilmediğinden veya döndürülmediğinden emin olun.
Bu sorun genellikle büyük ekranlı ve katlanabilir cihazlarda yaşanır. Bunun nedeni, uygulamaların kamera özellikleri (ör. en-boy oranı ve sensör yönü) ile cihaz özellikleri (ör. cihaz yönü ve doğal yön) arasında sabit ilişkiler olduğunu varsaymasıdır.
Kamera önizlemenizin herhangi bir pencere boyutuna veya yönüne doğru şekilde uyum sağlaması için şu dört çözümü deneyin:
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:
PreviewViewSensör yönü, cihaz döndürme ve ölçeklendirme için doğru şekilde ayarlanır.- PreviewView, genellikle ortalayarak ve kırparak kamera görüntüsünün en boy oranını korur (
FILL_CENTER). - Gerekirse önizlemeye mektup kutusu efekti uygulamak için ölçek türünü
FIT_CENTERolarak ayarlayabilirsiniz.
Daha fazla bilgi için CameraX belgelerindeki Önizleme uygulama başlıklı makaleyi inceleyin.
2. çözüm: CameraViewfinder
Mevcut bir Camera2 kod tabanı kullanıyorsanız CameraViewfinder kitaplığı (API düzeyi 21 ile geriye dönük olarak uyumludur) başka bir modern çözümdür. TextureView veya SurfaceView kullanarak kamera feed'inin gösterilmesini basitleştirir ve gerekli tüm dönüşümleri (en-boy oranı, ölçek ve döndürme) sizin için uygular.
Daha fazla bilgi için Introducing Camera Viewfinder başlıklı blog yayınını ve Camera preview başlıklı geliştirici kılavuzunu inceleyin.
3. çözüm: Camera2'nin manuel olarak uygulanması
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:
- Kamera sensörünün yönünü (ör. 0, 90, 180, 270 derece)
CameraCharacteristicskonumundan alın. - Cihazın mevcut ekran rotasyonunu (örneğin, 0, 90, 180, 270 derece) alma
SurfaceViewveyaTextureViewiçin gerekli dönüşümleri belirlemek üzere kamera sensörü yönlendirmesini ve ekran döndürme değerlerini kullanın.- Bozulmayı önlemek için çıkışınızın en-boy oranının
Surfacekamera önizlemesinin en-boy oranıyla eşleştiğinden emin olun.
Önemli: Kamera uygulaması, ekranın bir bölümünde (çoklu pencere veya pencereli görüntüleme modunda ya da bağlı bir ekranda) çalışıyor olabilir. Bu nedenle, kamera vizörünün boyutlarını belirlemek için ekran boyutu kullanılmamalıdır. Bunun yerine pencere metrikleri kullanılmalıdır. Aksi takdirde, kamera önizlemesi gergin görünebilir.
Daha fazla bilgi için Kamera önizlemesi geliştirici kılavuzuna ve Farklı form faktörlerindeki kamera uygulamanız videosuna bakın.
4. Çözüm: Amaç kullanarak temel kamera işlemlerini gerçekleştirme
Çok fazla kamera özelliğine ihtiyacınız yoksa basit ve anlaşılır bir çözüm olarak cihazın varsayılan kamera uygulamasını kullanarak fotoğraf veya video çekme gibi temel kamera işlemlerini gerçekleştirebilirsiniz. Bu durumda, daha kolay bakım ve uyarlanabilirlik için kamera kitaplığıyla entegrasyon yerine Intent kullanabilirsiniz.
Daha fazla bilgi için Kamera amaçları konusuna bakın.
Genişletilmiş kullanıcı arayüzü veya erişilemeyen düğmelerden kaçının
Uygulamanız belirli bir cihaz yönünü veya ekran en-boy oranını varsayıyorsa artık çeşitli yönlerde veya pencere boyutlarında kullanıldığında sorunlarla karşılaşabilir.
Düğmelerin, metin alanlarının ve diğer öğelerin büyük ekranlarda gerilmediğinden emin olun.
Düğmeleri, metin alanlarını ve kartları fillMaxWidth veya match_parent olarak ayarlamış olabilirsiniz. Telefonda bu görünüm çok güzeldir. Ancak yatay modda kullanılan bir tablette veya katlanabilir cihazda kullanıcı arayüzü öğeleri, büyük ekranın tamamına yayılır. Jetpack Compose'da, genişletilmiş içeriklerden kaçınmak için bileşenlerin maksimum genişliğini ayarlamak üzere 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
}
}
Bir kullanıcı, uygulamanızı katlanabilir bir 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şenlerinize 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 penceresinin boyutu ne kadar geniş veya kısa olursa olsun uygulamanızın işlevsel ve kullanılabilir kalmasını sağlarsınız.
Uyarlanabilir düzenler oluşturma ile ilgili kılavuzumuza göz atın.
Yapılandırma değişiklikleriyle durumu koruma
Yön ve en-boy oranı kısıtlamalarının kaldırılması, uygulamanızın pencere boyutunun çok daha sık değişeceği anlamına gelir. 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 edip yeniden oluşturur. Uygulamanız bu yaşam döngüsü olayı etkinliğini düzgün şekilde yönetmezse kullanıcılar hayal kırıklığına uğratan bir deneyim yaşar: Kaydırma konumları en üste sıfırlanır, yarısı doldurulmuş formlar silinir ve gezinme geçmişi kaybolur. Sorunsuz bir uyarlanabilir deneyim için uygulamanızın bu yapılandırma değişiklikleri sırasında durumu koruması gerekir. Jetpack Compose ile yeniden oluşturma işlemini devre dışı bırakabilir ve bunun yerine pencere boyutu değişikliklerinin, kullanıcı arayüzünüzü yeniden oluşturarak kullanılabilir yeni alan miktarını yansıtmasına izin verebilirsiniz.
Kullanıcı arayüzü durumunu kaydetme ile ilgili kılavuzumuza bakın.
Ağustos 2027'ye kadar API düzeyi 37'yi hedefleme
Uygulamanız daha önce API düzeyi 36'yı hedeflerken bu değişikliklerin kapsamı dışında kalmayı seçtiyse uygulamanız, yalnızca API düzeyi 37'yi hedeflemeye başladıktan sonra Android 17 kapsamı dışında kalma özelliğ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 ne zaman yürürlüğe gireceğini gösteren 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ştiriciler, bu özelliği devre dışı bırakamaz.
Belirli bir API düzeyini hedefleme son tarihleri 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 uyumluluğu çerçevesini kullanın.
Android'in geleceği uyarlanabilir olacak ve bu geleceğe ulaşmanıza yardımcı olmak için buradayı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 yönetmenize yardımcı olmak için tasarlanmıştır.
Beklemeyin. Android 17'ye hazırlanmaya bugün başlayın.
Okumaya devam edin
-
Ürün Haberleri
Android ekosistemine Pixel 10 Pro Fold gibi yeni form faktörlerinin eklenmesiyle birlikte, telefonlarda, tabletlerde ve katlanabilir cihazlarda yüksek kaliteli kullanıcı deneyimleri oluşturmak için uyarlanabilir uygulama geliştirme çok önemlidir.
Fahd Imtiaz, Miguel Montemayor • Okuma süresi: 3 dk.
-
Ürün Haberleri
Google Play'de mümkün olan en güvenli ve güvenilir deneyimi sunmak Bugün, kullanıcı gizliliğini artırmak ve işletmenizi sahtekarlıktan korumak için yeni bir dizi politika güncellemesi ve hesap aktarma özelliği duyuruyoruz.
Bennet Manuel • Okuma süresi: 3 dk.
-
Ürün Haberleri
Android Emulator ile çeşitli cihaz etkileşimlerini test etmek artık her zamankinden daha kolay.
Steven Jenkins • Okuma süresi: 2 dakika
Gelişmelerden haberdar olun
Android geliştirmeyle ilgili en son analizleri her hafta gelen kutunuza alın.