Android, yön veya yeniden boyutlandırılabilirlik kısıtlamaları belirten uygulamalar için bir uyumluluk modunu etkinleştirir. Uyumluluk modu, büyük ekranlı cihazlarda ve katlanabilir katlanabilir telefonlarda uygulamaların kabul edilebilir düzeyde kullanılabilirliği sağlar.
Uygulama bazında geçersiz kılmalar, cihaz üreticilerinin kullanıcı deneyimini iyileştirmek veya uygulamaların belirli cihazlarda bozulmasını önlemek için uygulama davranışını değiştirmesine olanak tanır.
Referans cihazlar
Uygulamalar tarafından iyi desteklenmeyen olağan dışı yapılandırmalar veya yapılandırmalar nedeniyle aşağıdaki cihazlar için uygulama başına geçersiz kılma işlemleri gerekebilir:
- Tabletler: Pixel Tablet gibi bazı tabletlerin doğal yönü yataydır.
Display#getRotation()
,Surface.ROTATION_0
değerini döndürdüğünde cihaz doğal yönündedir. UygulamalarROTATION_0
öğesinin dikey olduğunu varsayarsa uygulama düzenleri ve kamera önizlemesi, cihaz ekranıyla eşleşmeyebilir. - Yatay katlanabilir cihazlar: Pixel Fold gibi bazı katlanabilir cihazlar katlandığında dikey yönde, açıldığında ise yatay yönde olur. Uygulamalar katlanmamış yönün dikey olduğunu varsayarsa titreşen döngüler veya düzen sorunları olabilir.
- Katlanabilir katlanabilir telefonlar: Katlanmamış durumdaki döner telefonlar genellikle dikey yöndedir. Ancak, telefon katlandığında genellikle yatay yönde küçük bir ekran görünür. Uygulamalar, ekranların farklı yönlerini tanımlamalı ve barındırmalıdır.
Sık karşılaşılan uyumluluk sorunları
Uygulamalarda uyumluluk sorunları çoğunlukla uygulama yönü kısıtlamaları, yeniden boyutlandırılabilirlik ve en boy oranı kısıtlamaları, kamera önizleme yönünün yanlış kullanımı ve hatalı API'ler nedeniyle yaşanır.
Sinemaskop
Sinemaskoplu konum, kolay erişim için uygulamayı ekranın ortasına veya büyük ekranlarda bir kenara veya diğerine doğru yerleştirir. Uygulamanın yan veya üst ve alt kısımlarında kullanılmayan görüntüleme alanını matlar (düz renkli çubuklar veya bulanık duvar kağıdı) doldurur.
Cihaz ekranının boyutları ve en boy oranının genellikle, çoğu uygulamanın tasarlandığı standart telefonlardan farklı olması nedeniyle sinemaskop genellikle büyük ekranlı cihazlarda görülür.
Sorun
Uygulama sabit yön ve sabit en boy oranına sahip olduğu ya da yeniden boyutlandırılamadığı için tüm ekran yapılandırmalarını desteklemez.
Uygulama yönünü ve yeniden boyutlandırılabilirliği kontrol eden yapılandırma ayarları şunları içerir:
screenOrientation
: Bir uygulama için sabit yönü belirtir. Uygulamalar, çalışma zamanında yönüActivity#setRequestedOrientation()
kullanarak da ayarlayabilir.resizeableActivity
: Sistemin, uygulamaları değişen boyutlardaki pencerelere sığacak şekilde yeniden boyutlandırıp boyutlandıramayacağını belirtir. Android 11 (API düzeyi 30) ve önceki sürümlerde uygulamaların çoklu pencere modunu destekleyip desteklemediğini belirtir. Android 12 (API düzeyi 31) ve sonraki sürümlerde uygulamaların küçük ekranlarda (sw < 600 dp) çoklu pencere modunu destekleyip desteklemediğini belirtir. Android 12 ve sonraki sürümlerde uygulamalar, bu ayardan bağımsız olarak büyük ekranlarda çoklu pencere modunu (sw >= 600 dp) destekler.maxAspectRatio
: Uygulama tarafından desteklenen maksimum en boy oranını belirtir. YalnızcaresizeableActivity
false
olarak ayarlanmış uygulamalarmaxAspectRatio
ayarlayabilir.minAspectRatio
: Uygulama tarafından desteklenen minimum en boy oranını belirtir. YalnızcaresizeableActivity
false
olarak ayarlanmış uygulamalarminAspectRatio
ayarlayabilir.
Optimizasyon
Uygulama, tüm cihaz ve çoklu pencere modu ekran yönlerini ve boyutlarını desteklemelidir. Uygulama düzenlerinizden ve uygulama manifest dosyanızdan tüm yön ve sabit en boy oranı kısıtlamalarını kaldırın.
Uyumluluk için geçici çözüm
Sabit yöne veya sabit en boy oranına sahip bir uygulama, uygulamanın pencere boyutunu veya yönünü doğrudan desteklemediği bir pencerede çalışırsa Android sürekliliği korumak için uygulamaya sinemaskop işlemi uygular.
Android 12'den (API düzeyi 31) başlayıp 12L'den (API düzeyi 32) devam eden platform, sinemaskoplu uygulamalara çeşitli geliştirmeler uyguluyor. Kullanıcı arayüzü geliştirmeleri cihaz üreticileri tarafından uygulanmaktadır. Uygulamanızın iyileştirmelerden yararlanması için ek bir geliştirme yapmanız gerekmez.
Android 12 (API düzeyi 31), cihaz üreticileri tarafından yapılandırılabilen aşağıdaki estetik geliştirmelerini sunar:
- Yuvarlak köşeler: Uygulama penceresinin köşeleri daha zarif bir görünüme sahip.
- Sistem çubuğu şeffaflığı: Uygulamanın üzerini kapatan durum ve gezinme çubukları yarı şeffaftır. Böylece çubuklardaki simgeler her zaman sinemaskop arka planı üzerinde görüntülenebilir.
- Yapılandırılabilir en boy oranı: Uygulamanın en boy oranı, uygulamanın görünümünü iyileştirmek için ayarlanabilir.
12L (API düzeyi 32), aşağıdaki işlevsel iyileştirmeleri ekler:
Yapılandırılabilir konumlandırma: Cihaz üreticileri, büyük ekranlarda uygulamayı ekranın sol veya sağ tarafına konumlandırarak etkileşimi kolaylaştırabilir.
Yeniden tasarlanmış yeniden başlatma düğmesi: Cihaz üreticileri, boyut uyumluluk modu için yeniden başlatma düğmesine, kullanıcıların daha iyi tanınması için yeni bir görünüm kazandırabilir.
Android 13 (API düzeyi 33), sinemaskoplu uygulamayı ekrana konumlandırma veya sinemaskop efektini bölünmüş ekran moduna ekleme hakkında bir kullanıcı eğitimi iletişim kutusu ekler:
Boyut uyumluluk modu
Boyut uyumluluk modu, yeniden başlatma kontrolü içeren sinemaskop efektidir. Bu kontrol, kullanıcıların uygulamayı yeniden başlatmasını ve ekranı yeniden çizmesini sağlar. Android, yeniden boyutlandırılamayan uygulamalar için boyut uyumluluk modunu çağırır. Bir etkinlik, etkinliğin boyutlarıyla uyumlu olmayan bir ekran kapsayıcısına taşındığında sistem, cihaz ekranını en az bir boyutta dolduracak şekilde uygulamayı yeniden ölçeklendirebilir.
Boyut uyumluluk modunu tetikleyebilecek cihaz yapılandırması değişiklikleri arasında aşağıdakiler yer alır:
- Cihaz döndürme
- Katlanabilir cihaz katlanabilir veya açılır
- Tam ekran ve bölünmüş ekran görüntüleme modları arasında geçiş yapma
Sorun
Boyut uyumluluk modu genellikle yön veya en boy oranı açısından kısıtlanmış ve yeniden boyutlandırılamaz olacak şekilde yapılandırılan (veya sistem tarafından belirlenen) etkinlikler için geçerlidir.
Uygulamanız, aşağıdaki ölçütlerden herhangi birini karşılıyorsa yeniden boyutlandırılabilir olarak kabul edilir ve boyut uyumluluğu moduna yerleştirilmez:
resizeableActivity="true"
ile yeniden boyutlandırılabilir- Pencere içinde pencere (PIP) modunu destekler
- Yerleştirilmiş
- Cihaz üreticisi tarafından uygulama başına
FORCE_RESIZE_APP
geçersiz kılması uygulanmış (uygulama tarafından ayarlanan özellikler yoksayılır)
Uygulamanız koşullardan herhangi birini karşılamıyorsa yeniden boyutlandırılamaz kabul edilir ve boyut uyumluluk moduna yerleştirilebilir.
Optimizasyon
Uygulama tüm ekran boyutlarını desteklemelidir. Uygulama manifest'inde <activity>
veya <application>
öğesinin android:resizeableActivity
özelliğini true
olarak ayarlayarak uygulamanızı yeniden boyutlandırılabilir hale getirin. Uygulamanız için duyarlı/uyarlanabilir düzenler tasarlayın. Daha fazla bilgi için Farklı ekran boyutlarını destekleme ve Çoklu pencere desteği bölümlerine göz atın.
Uyumluluk için geçici çözüm
Sistem, sinemaskoplu uygulamanın görüntüsünün, görüntüleme penceresini en az bir boyutta dolduracak şekilde yeniden ölçeklendirilerek iyileştirilebileceğini belirlediğinde Android, uygulamayı boyut uyumluluğu moduna geçirir. Sistem, uygulama işlemini yeniden başlatarak etkinliği yeniden oluşturan ve ekranı yeniden çizen bir yeniden başlatma kontrolü görüntüler. İşlemlere ve ileti dizilerine genel bakış başlıklı makaleyi de inceleyin.
Titreyen döngüler
Bir uygulama tüm ekran yönlerini desteklemediğinde bir yapılandırma değişikliği olduğunda sürekli olarak yeni yönler isteyebilir. Bu da ekranın titreşmesine veya uygulamanın sonsuza kadar dönmesine neden olan sonsuz bir döngüye neden olabilir.
Sorun
Android 12 (API düzeyi 31) ve sonraki sürümlerde cihaz üreticileri, cihazlarını uygulamalar tarafından belirtilen yön kısıtlamalarını yoksayacak şekilde yapılandırabilir ve bunun yerine uyumluluk modlarını zorunlu kılmak için kısıtlamaları kullanabilirler. Örneğin, etkinlik cihazın yatay, tablet boyutundaki iç ekranında görüntülendiğinde katlanabilir bir cihaz, etkinliğin android:screenOrientation="portrait"
ayarını yoksayabilir.
Bir uygulamanın yön kısıtlamaları yoksayılıyorsa uygulama, Activity#setRequestedOrientation()
yöntemini çağırarak yönünü programatik olarak ayarlayabilir. Uygulama, yapılandırma değişikliklerini gerçekleştirmiyorsa çağrı, uygulamanın yeniden başlatılmasını tetikler (Yapılandırma değişikliklerini işleme bölümüne bakın). Yeniden başlatıldıktan sonra, uygulamanın yön kısıtlamaları tekrar yok sayılır, uygulama setRequestedOrientation()
çağrısını tekrarlar, çağrı bir uygulamanın yeniden başlatılmasını tetikler ve bu şekilde kendiliğinden devam eden bir döngü içinde bu durum devam eder.
Bu durumla karşılaşabileceğiniz bir başka yol da cihaz ekranının doğal yönünün (Android tarafından belirlendiği şekilde normal yön) yatay olmasıdır (yani cihaz yatay en boy oranına sahipken Display#getRotation()
çağrısının Surface.ROTATION_0
döndürülmesidir). Geçmişte uygulamalar, Display.getRotation() =
Surface.ROTATION_0
işlevinin cihazın dikey yönde olduğu anlamına geldiğini varsayıyordu. Ancak bu durum, örneğin bazı katlanabilir cihazların iç ekranında ve bazı tabletlerde böyle bir durum değildir.
Katlanabilir iç ekranda yatay yönde bulunan bir uygulama, ekran döndürmeyi kontrol edebilir, ROTATION_0
değeri alabilir, cihazın doğal yönünün dikey olduğunu varsayabilir ve uygulama düzenini yeniden yapılandırmak için
setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
)
çağırabilir. Uygulama yeniden başlatıldıktan sonra (yatay yönde) ekran döndürmeyi tekrar kontrol edebilir, ROTATION_0
değerini alabilir, setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
çağrısı yapabilir ve sonsuz döngüye devam edebilir.
Optimizasyon
Uygulamalar aşağıdakileri yapmamalıdır:
- Yön isteği, işlenmemiş yapılandırma değişiklikleri tarafından beklenmedik bir şekilde tetiklenebileceği için
onCreate()
etkinliği yöntemindeActivity#setRequestedOrientation()
ile varsayılan bir yön ayarlayın - Cihazın doğal yönünün (
ROTATION_0
) dikey olduğunu varsayın - Yönü, mevcut pencere boyutuyla ilgili olmayan sinyallere göre ayarlayın (ör.
Display#getRotation()
,FoldingFeature
varlığı veya kullanımdan kaldırılan API'ler).
Uyumluluk için geçici çözüm
Android, aşağıdaki durumlarda Activity#setRequestedOrientation()
çağrılarını yoksayar:
Etkinlik, önceki bir yönteme yapılan çağrıdan zaten yeniden başlatıldı veya kamera uyumlu döndürme kuvveti işlemi etkinleştirildi (aşağıdaki Kamera önizlemesi bölümüne bakın).
Cihaz üreticileri, bu davranışı
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION
içeren uygulamalara uygulayabilir.Etkinlik bir saniyede ikiden fazla yön isteği yaptı. Bu, bir döngü olduğunu gösterir. Android, döngüdeki iki istekten uygulama görüntüleme alanını büyüten isteği kullanır.
Cihaz üreticileri, bu davranışı
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
içeren uygulamalara uygulayabilir.
Kamera önizleme
Kamera uygulamalarının kamera önizlemesi (veya vizörü) tabletlerde, dizüstü bilgisayarlarda ve katlanabilir ekranlarda yanlış hizalanabilir veya bozuk olabilir.
Sorun
Android Uyumluluk Tanımlama Belgesi'nde, kamera görüntü sensörünün, "kameranın uzun boyutunun ekranın uzun boyutuyla hizalanacak şekilde yönlendirilmesi ZORUNLUDUR" ifadesi belirtilir.
Uygulamalar genellikle cihaz yönünün ve kamera sensörü yönünün dikey olduğunu varsayar. Bu, standart cep telefonlarında makul bir varsayımdır. Ancak tabletlerin ve dizüstü bilgisayarların ve kamera sensörlerinin doğal yönü yatay olabilir. Ayrıca, katlanabilir cihazlar gibi yeni form faktörlerinin birden fazla doğal yönü ve farklı yönlerde birden fazla kamera sensörü olabilir.
Uygulamanın beklemediği bir kamera yönüyle başlatılan etkinlik veya farklı kameralar ya da cihaz ekranları arasında geçiş yapmak (katlanabilir cihazlar için) kamera önizlemesinin yanlış hizalanmasına veya bozuk bozulmasına neden olabilir.
Optimizasyon
Kamera uygulamalarının doğru şekilde hizalı ve ölçeklendirilmiş bir kamera önizlemesi sunmak için cihaz yönünü ve kamera sensörü yönünü doğru şekilde tanımlaması ve yönetmesi gerekir. Uygulamalar cihaz dönüşünü, sensör dönüşünü ve ekran veya pencere en boy oranını hesaplamalı, ardından sonuçları kamera önizlemesine uygulamalıdır. Ayrıntılı rehberlik için Kamera önizlemesi ve Kamera Vizöre Giriş başlıklı makaleleri inceleyin.
Uyumluluk için geçici çözüm
Display#getRotation()
Surface.ROTATION_0
döndüğünde cihaz doğal yöndedir. Sistem, CameraCharacteristics.SENSOR_ORIENTATION
değerini cihazın doğal yönünden hesaplar. Android, dikey kısıtlanmış uygulamaların dikey penceresini cihazın doğal yönüne hizalar. Bu, çoğu uygulamanın beklediği yöndür. Android, sensör yönü yatay ve kamera önizlemesi dikey olduğunda kamera sensörü görüntüsünü de kırpar. Spesifik geçici çözümler şunlardır:
Dikey açıdan kısıtlanmış uygulamalar için kamera önizlemelerini döndürmeye zorla: Dikey yönde kısıtlanmış olan uygulamalar, cihazın doğal yönünün ve kamera sensörü yönünün dikey olmasını bekler. Bununla birlikte, Android 12 (API düzeyi 31) ve sonraki sürümlerde cihaz üreticileri yön spesifikasyonunu yoksayarsa uygulamalar birden fazla cihaz yönünde çalışabilir.
Dikey modu kısıtlanmış bir uygulama kameraya bağlandığında Android, uygulama dikey penceresini cihazın doğal yönüyle hizalamak için uygulamayı zorla döndürür.
Bazı tabletlerde (referans cihazlara bakın) uygulama dikey penceresi, cihazın doğal yönüyle uyumlu olması için tam ekran dikey moda döndürülür. Uygulama, zorla döndürmeden sonra ekranın tamamını kaplar.
Katlanabilir cihazların yatay iç ekranında (referans cihazlar bölümüne bakın), yalnızca dikey hareketler, açılmış doğal yönle uyumlu olacak şekilde yatay görünüme döndürülür. Uygulama, zorla döndürüldükten sonra sinemaskop efektiyle gösterilir.
İç ön kamera kırpma: Bazı katlanabilir cihazlarda iç ön kamera sensörü yatay yöndedir. Android, katlanabilir iç ekranda kamera önizlemesini döndürmeye zorlamaya ek olarak, sensörün cihaz yönünün aksini yakalamak için iç ön (yatay) kameranın görüş alanını kırpar.
Kamera önizlemelerini zorla yenileme: Sistem, döndürme işleminden sonra kamera önizlemesinin düzgün şekilde görüntülendiğinden emin olmak için
onStop()
veonStart()
(varsayılan olarak) veyaonPause()
veonResume()
(uygulama başına OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE tarafından uygulanır) etkinlik yöntemlerinde döngü yapar.En boy oranı ölçeklendirme: Sistem, döndürülen kuvvetin döndürdüğü kamera önizlemesinin en boy oranını daha yüksek bir minimum en boy oranına dinamik olarak değiştirir. Bu sayede, kamera önizlemesinin doğru şekilde ölçeklendirilmesi sağlanır.
Uygulamalar kamera önizlemesini doğru şekilde yapıyorsa uygulama geliştiriciler bu geçici çözümleri geçersiz kılabilir. Uygulama bazında geçersiz kılmalar konusuna bakın.
Yaygın olarak hatalı kullanılan API'ler
Android'in çoklu pencere modu ve katlanabilir cihazlar gibi cihazlar gibi özellikleri desteklemesiyle birlikte, eski API'lerin desteği sonlandırılarak bunların yerini tüm ekran boyutları ve cihaz form faktörleri için çalışan güncel API'ler aldı. Bununla birlikte, kullanımdan kaldırılan API'ler geriye dönük uyumluluk için kullanılmaya devam eder.
Bazı View
API'leri, geliştiricilerin her zaman iyi anlayamadığı özel amaçlar için tasarlanmıştır.
Sorun
Geliştiriciler desteği sonlandırılan Display
API'lerini kullanmaya devam ediyor ve API'lerin cihaz görüntüleme alanı sınırları yerine uygulama sınırlarını döndürdüğünü varsayıyor. Ya da geliştiriciler, genel görüntüleme metriklerine ulaşmak için yanlışlıkla özel amaçlı görünüm API'lerini kullanabilir.
Sonuç olarak, uygulama penceresi etkinlikleri yeniden boyutlandırıldıktan sonra kullanıcı arayüzü öğeleri yeniden konumlandırılırken yapılan yanlış hesaplamalar ortaya çıkar ve düzen sorunlarına yol açar.
Desteği sonlandırılmış ve yaygın şekilde hatalı kullanılan Görüntülü API'ler:
Daha fazla bilgi edinmek için Çoklu pencere desteği sayfasını inceleyin.
Hatalı görünüm API'leri:
Optimizasyon
Kullanıcı arayüzü öğelerini konumlandırmak için hiçbir zaman fiziksel görüntü boyutuna güvenmeyin. Uygulamanızı, aşağıdaki WindowManager
API'leri de dahil olmak üzere WindowMetrics
'e göre API'lere taşıyın:
Platform:
Jetpack:
Uyumluluk için geçici çözüm
İki geçersiz kılma ayarı, desteği sonlandırılmış Display
API'leri ve hatalı kullanılan View
API'leri uygulama sınırlarını döndürecek şekilde düzenler: Display
API için ALWAYS_SANDBOX_DISPLAY_APIS
, View
API için OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS
. ALWAYS_SANDBOX_DISPLAY_APIS
, boyut uyumluluğu moduna uygun olan uygulamalara da varsayılan olarak uygulanır.
Şeffaf etkinlikler
Şeffaf etkinlikler, şeffaf arka plan stillerinin bir sonucudur. Örneğin:
<style name="Transparent" parent="AppTheme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
İletişim kutularıyla ilgili temalar (Theme.MaterialComponents.Dialog
gibi), etkinlikleri şeffaf hale getiren stiller içerebilir.
Şeffaf etkinlikler mevcut görüntüleme alanının tamamını kaplamaz. Bu da cihazın döndürülmesi, cihazın katlanması ve açılması gibi yapılandırma değişikliklerine bağlı olarak değişebileceği ve çoklu pencere modu gibi yapılandırma değişikliklerine bağlı olarak değişebileceği için bu görüntülerin yönetilmesi zorlaşır.
Sorun
Şeffaf etkinlik, görev etkinliği yığınındaki şeffaf etkinliğin altındaki ilk opak etkinliğin sınırlarına uymalıdır. Bununla birlikte, izin iletişim kutusunu başlatan opak bir etkinlik, trampolin (başka bir etkinliği başlatan etkinlik daha sonra kaybolur) olabilir. Bu nedenle, sistem, şeffaf izin iletişim kutusu etkinliğini başlatan trambolin etkinliğinin sınırlarını belirleyemez.
Optimizasyon
Şeffaf etkinlikler, kısıtlamalarını bir görevin etkinlik yığınının altında bulunan en üst opak etkinlikten devralır. Opak etkinlik, etkinlik oluşturmadan yıkımına kadar şeffaf etkinliğin tüm yaşam döngüsü boyunca kullanılabilir olmalıdır. Bu nedenle, trampolin etkinliklerinden izin istekleri başlatmayın.
Trambolin etkinliği bir izin isteği başlatırsa kullanıcı, henüz iletişim kutusuna yanıt verme fırsatı bulmadan trambolin etkinliği yok olacağı ve diyalog etkinliğinin boyutları ve konumu yanlış hesaplanmış olabileceğinden izin iletişim kutusunu göremeyebilir.
Uygulamalar her zaman, kullanıcı bir izin kararı verene kadar görünür kalan etkinliklerden izin istekleri başlatmalıdır.
Yuvarlatılmış köşeler
Bir etkinlik, arka plan şeffaflığını belirten bir stil nedeniyle veya etkinliğin içeriği mevcut görüntüleme alanını doldurmadığı için şeffaf olabilir. Şeffaf bir etkinlik, mevcut görüntüleme alanını doldurursa cihaz üreticisi tarafından yapılandırıldığında sistem, etkinliğe otomatik olarak yuvarlatılmış köşeler uygular. Ancak şeffaf bir etkinlik (izin iletişim kutusu gibi) mevcut alanı doldurmuyorsa yuvarlatılmış köşeler uygulayıp uygulamama kararı size kalmıştır.
İletişim kutusu düzeni genellikle LayoutParams.MATCH_PARENT yerine LayoutParams.WRAP_CONTENT kullandığından izin iletişim kutuları kullanılabilir görüntüleme alanını doldurmaz.
Uyumluluk için geçici çözüm
İletişim kutusu etkinlikleri başlatan etkinlikleri, kullanıcı iletişim kutusuna yanıt verene kadar görünür tutun.
Sistem, bir şeffaf etkinliğin aşağıdakilerle ilgili kısıtlamalar dahil olmak üzere, etkinlik yığınındaki şeffaf etkinliğin altındaki ilk opak etkinlikteki tüm kısıtlamaları devralmasını sağlar:
- Boyut uyumluluk modu
- Yön
- En Boy Oranı
Unity oyunları
Unity oyunları Android'de tam ekran veya çoklu pencere modunda çalışır. Bununla birlikte, birçok Unity oyunu çoklu pencere moduna alındığında odağını kaybediyor ve içerik çizmeyi bırakıyor.
Sorun
Unity, Android'de çoklu pencere modunu desteklemek için Unity 2019.4'e bir Resizable Window
seçeneği ekledi. Ancak ilk uygulama, çoklu pencere modunda etkinlik yaşam döngüsüne doğru bir şekilde tepki vermemiştir. Bu durum, UnityPlayer'ın odağı kaybettiğinde oynatmayı askıya almasına neden olmuştur. Oyuncu, siyah bir ekranı veya oyunun donmuş son karesini oluşturmuştur. Oyun yalnızca kullanıcı ekrana
dokunduğunda devam ediyordu. Unity motorunu kullanan birçok uygulama bu sorunla karşılaşır ve çok pencere modunda siyah pencere olarak oluşturulur.
Optimizasyon
Unity'yi 2019.4.40 veya sonraki bir sürüme yükseltin ve oyununuzu yeniden dışa aktarın. Android Player ayarlarında Resizable Window
seçeneğini işaretli bırakın. Aksi takdirde oyun, çoklu pencere modunda tamamen görünür olsa bile odak olmadığında duraklatılır.
Uyumluluk için geçici çözüm
Cihaz üreticileri, çoklu pencere modundaki bir uygulamaya sahte odaklanma etkinliği sağlamak için uygulama başına OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS
geçersiz kılma özelliğini uygulayabilir. Geçersiz kılma, etkinliğin içeriği yeniden çizmesini ve karartılmamasını sağlar.
Uygulamanızı uyumluluk sorunları açısından test etme
Uygulamanızı test etmek ve farklı form faktörlerinde nasıl davrandığını anlamak için aşağıdaki kaynaklardan yararlanın:
- Cihaz akışı: Uygulamanızı Google veri merkezlerinde barındırılan üretim cihazlarında (referans cihazlar dahil) test etmek için Firebase tarafından desteklenen Android Cihaz Akışı bölümüne bakın
- Android Studio Hedgehog'da emülatörler: Referans cihazlar için emülatörler oluşturma hakkında bilgi edinmek için Sanal cihazlar oluşturma ve yönetme bölümüne bakın.
- Yeniden boyutlandırılabilir Android Studio emülatörü: Sanal cihazlara erişim hakkında bilgi için Uygulamaları Android Emulator'da çalıştırma bölümüne bakın.
Sinemaskoplu
Her bir etkinliğin, uygulamanın kullanabildiği görüntüleme alanının tamamını kullanabildiğini doğrulayın. Öncelikle, test klasörünüzde aşağıdaki kodu bildirin:
Kotlin
fun Activity.isLetterboxed() : Boolean { if (isInMultiWindowMode) return false val wmc = WindowMetricsCalculator.getOrCreate() val currentBounds = wmc.computeCurrentWindowMetrics(this).bounds val maxBounds = wmc.computeMaximumWindowMetrics(this).bounds val isScreenPortrait = maxBounds.height() > maxBounds.width() return if (isScreenPortrait) { currentBounds.height() < maxBounds.height() } else { currentBounds.width() < maxBounds.width() } }
Java
public boolean isLetterboxed(Activity activity) { if (activity.isInMultiWindowMode()) { return false; } WindowMetricsCalculator wmc = WindowMetricsCalculator.getOrCreate(); Rect currentBounds = wmc.computeCurrentWindowMetrics(activity).getBounds() Rect maxBounds = wmc.computeMaximumWindowMetrics(activity).getBounds(); boolean isScreenPortrait = maxBounds.height() > maxBounds.width(); return (isScreenPortrait) ? currentBounds.height() < maxBounds.height() : currentBounds.width() < maxBounds.width(); }
Ardından, davranışı doğrulamak için bir test yürütün ve hedef etkinliğin sinemaskop olmadığından emin olun:
Kotlin
@get:Rule val activityRule = ActivityScenarioRule(MainActivity::class.java) @Test fun activity_launched_notLetterBoxed() { activityRule.scenario.onActivity { assertThat(it.isLetterboxed()).isFalse() } }
Java
@Rule public ActivityScenarioRule<MainActivity> rule = new ActivityScenarioRule<>(MainActivity.class); public void activity_launched_notLetterBoxed() { try (ActivityScenario<MainActivity> scenario = ActivityScenario.launch(MainActivity.class)) { scenario.onActivity(activity -> { assertThat(isLetterboxed(activity)).isFalse(); }); } }
İdeal olarak, bu tür bir testi yalnızca test başarılı olana ve uygulamanızın etkinliklerinin, uygulamanın sunduğu görüntüleme alanının tamamını kapladığını doğrulayana kadar çalıştırın. Tutarlı davranış sağlamak için uygulamanızı tüm cihaz türlerinde test edin.
Uygulama bazında geçersiz kılmalar
Android, uygulamaların yapılandırılmış davranışını değiştiren geçersiz kılmalar sunar. Örneğin, FORCE_RESIZE_APP
geçersiz kılması, uygulama manifest dosyasında resizeableActivity="false"
belirtilmiş olsa bile sisteme boyut uyumluluk modunu atlama ve uygulamayı ekran boyutlarına sığacak şekilde yeniden boyutlandırma talimatı verir.
Cihaz üreticileri, belirli büyük ekranlı cihazlardaki belirli uygulamalara veya tüm uygulamalara geçersiz kılma işlemleri uygular. Android 14 (API düzeyi 34) ve sonraki sürümlerde kullanıcılar cihaz ayarlarından uygulamalara geçersiz kılma işlemleri uygulayabilir.
Kullanıcı başına uygulama başına geçersiz kılmalar
Android 14 ve sonraki sürümlerde ayarlar menüsü, kullanıcıların uygulamaların en boy oranını değiştirmesine olanak tanır. Menü, referans cihazlar gibi büyük ekranlı cihazlarda uygulanır.
Menü, cihazda yüklü tüm uygulamaların listesini içerir. Kullanıcılar bir uygulama seçer ve ardından uygulama en boy oranını 3:4, 1:1, tam ekran veya cihaz üreticisi tarafından yapılandırılan başka bir değere ayarlar. Kullanıcılar ayrıca, en boy oranını uygulama manifestinde belirtilen uygulama varsayılanına sıfırlayabilirler.
Uygulamalar, aşağıdaki PackageManager.Property
etiketlerini ayarlayarak uyumluluk geçersiz kılma ayarını devre dışı bırakabilir:
MÜLK_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE
Kullanıcı en boy oranı uyumluluğunu geçersiz kılma özelliğini devre dışı bırakmak için özelliği uygulama manifestinize ekleyin ve değeri
false
olarak ayarlayın:<application> <property android:name="android.window. PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE" android:value="false" /> </application>
Uygulamanız, cihaz ayarlarındaki uygulama listesinden hariç tutulacak. Kullanıcılar, uygulamanın en boy oranını geçersiz kılamaz.
Özelliğin
true
değerine ayarlanmasının herhangi bir etkisi yoktur.MÜLK_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE
Kullanıcı en boy oranı uyumluluğu geçersiz kılma işleminin tam ekran seçeneğini devre dışı bırakmak için özelliği uygulama manifestinize ekleyin ve değeri
false
olarak ayarlayın:<application> <property android:name="android.window.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE" android:value="false" /> </application>
Tam ekran seçeneği, cihaz ayarlarındaki en boy oranı seçenekleri listesinden kaldırılmıştır. Kullanıcılar, tam ekranı geçersiz kılma özelliğini uygulamanıza uygulayamaz.
Bu özelliğin
true
olarak ayarlanmasının herhangi bir etkisi yoktur.
Uygulamanızı tüm ekranlar için optimize edin: Uygulamanızda en boy oranı kısıtlamaları belirlemeyin. Mevcut görüntüleme alanının boyutuna göre farklı düzenleri desteklemek için pencere boyutu sınıfları kullanın.
Cihaz üreticisine göre uygulama bazında geçersiz kılmalar
Cihaz üreticileri, belirli cihazlarda uygulama bazında geçersiz kılma işlemleri uygular. Referans cihazlar, geçersiz kılmaların bazılarını varsayılan olarak çeşitli uygulamalara uygulayabilir.
Uygulamalar, çoğu geçersiz kılma işleminin kapsamı dışında kalmayı seçebilir (aşağıdaki Uygulama bazında geçersiz kılmalar tablosuna bakın).
Uyumluluk çerçevesini kullanarak, uygulamanızı geçersiz kılmaları etkinleştirerek veya devre dışı bırakarak test edebilirsiniz (Uyumluluk çerçevesi araçları bölümüne bakın). Etkinleştirildiğinde, geçersiz kılmalar uygulamanın tamamında geçerli olur.
Geçersiz kılmaları etkinleştirmek veya devre dışı bırakmak ve hangi geçersiz kılmaların uygulamanız için geçerli olduğunu belirlemek için Android Debug Bridge'i (adb) de kullanabilirsiniz.
Geçersiz kılmaları aşağıdaki şekilde etkinleştirin veya devre dışı bırakın:
adb shell am compat enable/disable <override name/id> <package>
Referans cihazlar için uygulamanızda hangi geçersiz kılmaların geçerli olduğunu kontrol edin:
adb shell dumpsys platform_compat | grep <package name>
Aşağıdaki tabloda, geçerli geçersiz kılmalar ve uygulamanızın geçersiz kılmalardan yararlanmasına gerek kalmaması için uygulamanızı nasıl optimize edeceğinizle ilgili bilgiler yer almaktadır. Bazı geçersiz kılmaların kapsamı dışında kalmak için uygulama manifestinize mülk işaretleri ekleyebilirsiniz.
Uygulama bazında geçersiz kılmalar | |||
---|---|---|---|
Tür | Ad | ID | Açıklama |
Yeniden boyutlandırılabilirlik | FORCE_RESIZE_APP | 174042936 | Yapılandırma değişikliklerinde uygulama için boyut uyumluluk modunu atlar. |
FORCE_NON_RESIZE_APP | 181136395 | Yapılandırma değişikliklerinde uygulamayı boyut uyumluluğu moduna geçmeye zorlar. | |
En boy oranı | OVERRIDE_MIN_ASPECT_RATIO | 174042980 | Diğer en boy oranı geçersiz kılmalarını uygulamak için etkinleştirilmesi gereken kapıcı geçersiz kılması. |
OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY | 203647190 | Etkinleştirilirse (varsayılan) sınırlar, kapsamı yalnızca portrelere yönelik etkinliklerle geçersiz kılar. | |
OVERRIDE_MIN_ASPECT_RATIO_ORTA | 180326845 | Minimum en boy oranını 3:2 olarak değiştirir. | |
OVERRIDE_MIN_ASPECT_RATIO_LARGE | 180326787 | Minimum en boy oranını 16:9 olarak değiştirir. | |
OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN | 208648326 | Minimum en boy oranını, görüntü boyutunun (veya bölünmüş ekran en boy oranının) %50'sine sığacak şekilde değiştirir. | |
OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN | 218959984 | Cihaz dikey durumdayken uygulamaların tam ekran olması için minimum en boy oranını geçersiz kılma özelliğini devre dışı bırakır. | |
Yön | OVERRIDE_ANY_ORIENTATION | 265464455 | Herhangi bir yönü geçersiz kılmayı etkinleştirir. |
OVERRIDE_ANY_ORIENTATION_TO_USER | 310816437 | Yön, yeniden boyutlanabilirlik ve en boy oranı kısıtlamalarını geçersiz kılar. | |
OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT | 265452344 | Bir aktivite tanımlanmamış yöne sahip olduğunda yönün dikey olmasını geçersiz kılar. | |
OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR | 265451093 | Bir etkinlik tanımlanmamış bir yöne sahip olduğunda yön, nosensor (cihazın doğal yönünü kullan) olarak geçersiz kılınır. |
|
OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE | 266124927 | Yalnızca yatay uygulamaları 180 derece döndürür. | |
OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA | 265456536 | Yön geçersiz kılma kapsamını, uygulamanın kameraya bağlandığı zamanla sınırlar. | |
OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION | 255940284 | Görev tam ekran olduğunda (sinemaskop efekti de dahil) ekranı sabit yatay doğal yöne ayarlar. | |
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION | 254631730 | Sonsuz döngüleri döndürmeyi önlemek için uygulamadan gelen yön isteklerini yok sayar. | |
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED | 273509367 | Bir etkinlik yeniden başlatılırken tekrarlanan yön isteklerini yoksayar. Android, bir uygulamanın bir saniyede en az iki yeni yön isteği istediğini algılarsa sistem bunu sonsuz döndürme döngüsü olarak kabul eder ve geçersiz kılmayı uygular. | |
OVERRIDE_RESPECT_REQUESTED_ORIENTATION | 236283604 | Cihaz üreticisinin yönü yoksayma isteği ayarını devre dışı bırakarak sinemaskop efektini önler. | |
Sandbox API'leri | NEVER_SANDBOX_DISPLAY_APIS | 184838306 | Görüntülü reklam API'lerinin davranışının değiştirilmesini engeller. |
HER ZAMAN_SANDBOX_DISPLAY_APIS | 185004937 | Uygulamadaki Display API'lerini, uygulama sınırlarını döndürmeye zorlar. Display API'leri mantıksal görüntüleme alanı sınırlarını döndürse de uygulama bazen Display API'lerinin uygulama sınırlarını döndürdüğünü varsayar. Bu da kullanıcı arayüzü sorunlarına yol açar. |
|
OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS | 237531167 | Uygulamada kullanılan View API'lerinin uygulama sınırlarını döndürmeye zorlar. View API'leri mantıksal görüntüleme alanı sınırlarını döndürse de uygulama bazen View API'lerinin uygulama sınırlarını döndürdüğünü varsayar. Bu da kullanıcı arayüzü sorunlarına yol açar. |
|
Kamera uyumlu | OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION | 263959004 | Kuvvet döndürmeyi kapatır. Varsayılan olarak, kamera önizlemesi açıkken tüm sabit yönlü kamera uygulamaları zorla döndürülür. |
OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH | 264304459 | Kamera önizlemesi zorla döndürüldüğünde uygulanan varsayılan tam yenileme işlemini kaldırır. | |
OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE | 264301586 | Kamera önizlemesi zorla döndürüldüğünde sert yenilemeyi yumuşak bir yenilemeye geçirir ve bu da zorla döndürme sırasında durumun korunmasına yardımcı olur. Kamera önizlemesi zorla döndürüldüğünde Android varsayılan olarak tam yenileme uygular. Kalıcı yenileme, uygulamaların önceki durumlarını önbelleğe alma şekline bağlı olarak uygulamaların durum kaybetmesine veya kararmasına neden olabilir. | |
OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT | 250678880 | İç ön kameranın resim arabelleğini kırpar. Geçersiz kılma özelliği devre dışı bırakılırsa iç ön kameranın kırpılması kaldırılır ve kamera önizlemesinin görüş alanı genişletilir. Bazı katlanabilir cihazlarda (referans cihazlara bakın) varsayılan olarak sistem, iç ön kamerayı kullanırken tüm kamera uygulamalarının kamera önizlemesini kırpar. | |
Çeşitli | OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS | 263259275 | Uygulama, bölünmüş ekran modunda odağı kaybettiğinde uygulamanın kararmasını engeller. Uygulama, uygulama içeriğini çizmeden önce odaklanmayı bekler. Bu durum, uygulamanın donmasına veya kararmasına neden olabilir. Geçersiz kılma, Android'in uygulamaya sahte bir odaklanma etkinliği göndermesine olanak tanır. Bu etkinlik, uygulamaya tekrar içerik çizmeye başlaması sinyalini verir. |
FORCE_RESIZE_APP
Geçersiz kılmanın uygulandığı paketleri yeniden boyutlandırılabilir olmaya zorlar. Uygulamanın çoklu pencere moduna yerleştirilip yerleştirilemeyeceğini değiştirmez ancak ekran yeniden boyutlandırıldığında uygulamanın boyut uyumluluk moduna girmeden yeniden boyutlandırma yapmasına izin verir.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
Uygulama manifest'inde android:resizeableActivity
özelliğini true
olarak ayarlayın veya android:resizeableActivity=false
ile çoklu pencere modunu devre dışı bırakırken yeniden boyutlandırmayı desteklemek için android.supports_size_changes
meta veri işaretini true
olarak ayarlayın.
Uygulamaları optimize etme
Uygulamaların tüm ekran boyutlarına ve en boy oranlarına uyum sağlaması için duyarlı/uyarlanabilir düzenler kullanın. Farklı ekran boyutlarını destekleme bölümünü inceleyin.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES
özellik işaretini false
olarak ayarlayın.
Geçersiz kılmayı ayarlamak için özellik işaretleri
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES"
android:value="true|false"/>
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak ve uygulamayı yeniden boyutlandırılabilir hale getirmek için:
adb shell am compat enable FORCE_RESIZE_APP <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable FORCE_RESIZE_APP <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
FORCE_NON_RESIZE_APP
Geçersiz kılmanın uygulandığı paketleri yeniden boyutlandırılamaz olmaya ve yapılandırma değişiklikleri olduğunda boyut uyumluluk moduna girmeye zorlar.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
Uygulama manifest'inde hem android:resizeableActivity
özelliğini hem de android.supports_size_changes
meta veri işaretini false
olarak ayarlayın ve yön veya en boy oranı kısıtlaması bildirin.
Uygulamaları optimize etme
Yeniden boyutlandırıldığında iyi davranan tüm uygulamalarda android:resizeableActivity
veya android.supports_size_changes
ayarı true
olmalıdır.
Diğer uygulamalar, yeniden boyutlandırıldığında iyi çalışacak şekilde geliştirilmelidir. android:resizeableActivity sayfasını inceleyin.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES
özellik işaretini false
olarak ayarlayın.
Geçersiz kılmayı ayarlamak için özellik işaretleri
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES"
android:value="true|false"/>
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak ve uygulamayı yeniden boyutlandırılamaz hale getirmek için:
adb shell am compat enable FORCE_NON_RESIZE_APP <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable FORCE_NON_RESIZE_APP <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_MIN_ASPECT_RATIO
Belirli bir minimum en boy oranını zorlayan tüm geçersiz kılmalar için sınırlayıcıdır.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
android:minAspectRatio
aracını etkinlik veya uygulama düzeyinde ayarlayın.
Uygulamaları optimize etme
Uygulamanızda en boy oranı kısıtlamaları belirlemeyin. Uygulamanızın farklı ekran boyutlarını desteklediğinden emin olun. Uygulamanızın ekrandaki alanına göre farklı düzenleri desteklemek için pencere boyutu sınıfları kullanın. Compose WindowSizeClass
API ve WindowSizeClass
API'yi Görüntüle'ye bakın.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
En boy oranı kısıtlaması belirtin veya PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE
özellik işaretini false
olarak ayarlayın.
Geçersiz kılmayı ayarlamak için özellik işaretleri
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE"
android:value="false"/>
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
SALT_MIN_ASPECT_RATIO_PORTRAIT_YALNIZCA
Yalnızca dikey yönlü etkinlikler için belirli bir minimum en boy oranını zorlayan uygulama ayarlarını kısıtlar. Varsayılan olarak etkindir ve yalnızca OVERRIDE_MIN_ASPECT_RATIO
etkinse geçerli olur.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
Bkz. OVERRIDE_MIN_ASPECT_RATIO.
Uygulamaları optimize etme
Bkz. OVERRIDE_MIN_ASPECT_RATIO.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
Bkz. OVERRIDE_MIN_ASPECT_RATIO.
Geçersiz kılmayı ayarlamak için özellik işaretleri
Bkz. OVERRIDE_MIN_ASPECT_RATIO.
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_MIN_ASPECT_RATIO_ORTA
Etkinliğin minimum en boy oranını orta bir değere (3:2) ayarlar
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
Bkz. OVERRIDE_MIN_ASPECT_RATIO.
Uygulamaları optimize etme
Bkz. OVERRIDE_MIN_ASPECT_RATIO.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
Bkz. OVERRIDE_MIN_ASPECT_RATIO.
Geçersiz kılmayı ayarlamak için özellik işaretleri
Bkz. OVERRIDE_MIN_ASPECT_RATIO.
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_MEDIUM <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_MEDIUM <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_MIN_ASPECT_RATIO_LARGE
Etkinliğin minimum en boy oranını büyük bir değere (16:9) ayarlar
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
Bkz. OVERRIDE_MIN_ASPECT_RATIO.
Uygulamaları optimize etme
Bkz. OVERRIDE_MIN_ASPECT_RATIO.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
Bkz. OVERRIDE_MIN_ASPECT_RATIO.
Geçersiz kılmayı ayarlamak için özellik işaretleri
Bkz. OVERRIDE_MIN_ASPECT_RATIO.
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_LARGE <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_LARGE <package>`
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN
Bölünmüş ekran en boy oranının kullanımını etkinleştirir. Uygulamaya, sinemaskop efektini ortadan kaldırarak mevcut alanın tamamını bölünmüş ekran modunda kullanma izni verir.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
Bkz. OVERRIDE_MIN_ASPECT_RATIO.
Uygulamaları optimize etme
Bkz. OVERRIDE_MIN_ASPECT_RATIO.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
Bkz. OVERRIDE_MIN_ASPECT_RATIO.
Geçersiz kılmayı ayarlamak için özellik işaretleri
Bkz. OVERRIDE_MIN_ASPECT_RATIO.
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_TAM EKRAN
Mevcut tüm ekran alanını kullanmak için dikey tam ekranda minimum en boy oranı geçersiz kılma özelliğini devre dışı bırakır.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
Bkz. OVERRIDE_MIN_ASPECT_RATIO.
Uygulamaları optimize etme
Bkz. OVERRIDE_MIN_ASPECT_RATIO.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
Bkz. OVERRIDE_MIN_ASPECT_RATIO.
Geçersiz kılmayı ayarlamak için özellik işaretleri
Bkz. OVERRIDE_MIN_ASPECT_RATIO.
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_ANY_ORIENTATION
Herhangi bir yönü geçersiz kılmak için aşağıdaki geçersiz kılma işlemlerini etkinleştirir:
- OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
- OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR
- OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
activity:screenOrientation
manifest özelliğini ayarlayın veya Activity#setRequestedOrientation()
API'yi kullanın.
Uygulamaları optimize etme
Uygulamanız tüm yönleri desteklemelidir. Yön değişikliği, iki şekilde gerçekleştirilebilecek bir yapılandırma değişikliğidir: Sistemin uygulamayı ortadan kaldırıp yeniden oluşturmasına izin vermek veya yapılandırma değişikliklerini kendiniz yönetmek. Yapılandırma değişikliklerini kendiniz yönetiyorsanız uygulama durumunu ViewModel
kullanarak koruyabilirsiniz. Çok nadir durumlarda, yönü yalnızca küçük ekranlarda kilitleyebilirsiniz. Ancak bunu yapmak ölçeklenmeyebilir ve kullanıcının uygulamayı gerektiği gibi döndürmesine izin verebilir. Android 12L ve daha yeni sürümlerde, cihaz yapılandırması sabit yönü geçersiz kılabilir. Yapılandırma değişikliklerini işleme ve tüm yönleri destekleme hakkında daha fazla bilgi edinmek için Yapılandırma değişikliklerini işleme, ViewModel'e genel bakış ve Uygulama yönü telefonlarda kısıtlanıp büyük ekranlı cihazlarda kısıtlanmaz.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE
özellik işaretini false
olarak ayarlayın.
Geçersiz kılmayı ayarlamak için özellik işaretleri
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE"
android:value="true|false"/>
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_ANY_ORIENTATION <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_ANY_ORIENTATION <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
KULLANICININ_OVERRIDE_ANY_ORIENTATION_TO
Uygulamanın, mevcut görüntüleme alanını doldurmasını sağlar. Uygulama manifest'inde belirtilen yön, yeniden boyutlandırma ve en boy oranı kısıtlamalarını geçersiz kılar. Ayrıca, Activity#setRequestedOrientation()
'e yapılan çağrıları da yoksayar.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
android:screenOrientation
manifest özelliğini ayarlamayın veya"user"
olarak ayarlamayın.android:resizeableActivity
manifest özelliğinitrue
olarak ayarlayın.Küçük ekranlarda
android:resizeableActivity=false
ile çoklu pencere modunu devre dışı bırakırken uygulama yeniden boyutlandırmayı desteklemek içinandroid.supports_size_changes
meta veri işaretinitrue
olarak ayarlayın.minAspectRatio
vemaxAspectRatio
öğelerini ayarlamayın.
Uygulamaları optimize etme
Uygulamanızın tüm yönleri desteklemesini sağlayın; uygulamanızın manifest dosyasında screenOrientation
spesifikasyonu ayarlamayın. Uygulamanızın manifest dosyasındaki android:resizeableActivity
özelliğini true
olarak ayarlayarak uygulama yeniden boyutlandırılabilirliği, çoklu pencere modunu ve tüm ekran en boy oranlarını destekleyin. Farklı ekran boyutlarını destekleme bölümünü inceleyin.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
Geçersiz kılmayı ayarlamak için özellik işaretleri
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_ANY_ORIENTATION_TO_USER <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_ANY_ORIENTATION_TO_USER <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
Paketteki tüm etkinlikler için dikey yönü etkinleştirir. OVERRIDE_ANY_ORIENTATION etkinleştirilmediği sürece geçersiz kılma, yalnızca etkinlik tarafından başka bir sabit yön belirtilmediğinde kullanılır.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
Uygulamaları optimize etme
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
Geçersiz kılmayı ayarlamak için özellik işaretleri
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR
Paketteki tüm etkinlikler için nosensor yönünü etkinleştirir. OVERRIDE_ANY_ORIENTATION etkinleştirilmediği sürece geçersiz kılma, yalnızca etkinlik tarafından başka bir sabit yön belirtilmediğinde kullanılır.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
Uygulamaları optimize etme
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
Geçersiz kılmayı ayarlamak için özellik işaretleri
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE
Paketteki tüm etkinlikler için reverseLandscape yönünü etkinleştirir. OVERRIDE_ANY_ORIENTATION etkinleştirilmediği sürece geçersiz kılma, yalnızca etkinlik tarafından başka bir sabit yön belirtilmediğinde kullanılır.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
Uygulamaları optimize etme
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
Geçersiz kılmayı ayarlamak için özellik işaretleri
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA
OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT, OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR ve OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE sınırları yalnızca kamera bağlantısı etkin olduğunda geçerli olacak şekilde geçersiz kılar.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
Uygulamaları optimize etme
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
Geçersiz kılmayı ayarlamak için özellik işaretleri
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION
Aşağıdaki koşullar karşılandığında ekran yönünü yatay doğal yönle kısıtlar:
- Etkinlik tam ekran modunda
- Devre dışı bırakma bileşen mülkü
PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE
etkin değil - Cihaz üreticisinin yönü yoksayma isteği ayarı ekran için etkin
- Ekranın doğal yönü yatay olmalıdır
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
Geçerli değil. Sorun, uygulama mantığında çözülmelidir.
Uygulamaları optimize etme
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE
özellik işaretini false
olarak ayarlayın.
Geçersiz kılmayı ayarlamak için özellik işaretleri
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE"
android:value="true|false"/>
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION
Uygulama yeniden başlatılırken veya etkin bir kamera uyumluluğu ayarı varsa uygulamanın Activity#setRequestedOrientation()
çağrısına yanıt olarak uygulama yönünü güncelleme işlemini atlayan uyumluluk politikasını etkinleştirir.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION
özellik işaretini true
olarak ayarlayın.
Uygulamaları optimize etme
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION
özellik işaretini false
olarak ayarlayın.
Geçersiz kılmayı ayarlamak için özellik işaretleri
<property android:name="android.window.PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION"
android:value="true|false"/>
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
Bir etkinlik sabit yön için sinemaskop biçimine getirilmezse uygulamanın Activity#setRequestedOrientation()
çağrısına yanıt olarak uygulamanın istediği yönü yoksayan uyumluluk politikasını etkinleştirir.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
Geçerli değil. Sorun, uygulama mantığında çözülmelidir.
Uygulamaları optimize etme
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
özellik işaretini false
olarak ayarlayın.
Geçersiz kılmayı ayarlamak için özellik işaretleri
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED"
android:value="false"/>
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_RESPECT_REQUESTED_ORIENTATION
Paketleri hariç tutar, cihaz üreticileri tarafından bir görüntüleme alanı veya ekranın tamamı için etkinleştirilebilen yön yoksayma isteği davranışından hariç tutulur.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
Geçerli değil. Sorun, uygulama mantığında çözülmelidir.
Uygulamaları optimize etme
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
Devre dışı bırakmak mümkün değil. Uygulama, cihaz üreticisinin yön isteği ayarının etkinleştirilmiş olduğu bir cihazla uyumlu değilse geçersiz kılmanın devre dışı bırakılması tehlikeli olabilir. Geçersiz kılmayı devre dışı bırakmak için Android Geliştirici İlişkileri ile iletişime geçin.
Geçersiz kılmayı ayarlamak için özellik işaretleri
Bu geçersiz kılma için özellik işareti yok.
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_RESPECT_REQUESTED_ORIENTATION <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_RESPECT_REQUESTED_ORIENTATION <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
HİÇBİR ZAMAN_KUM KUTUSU_DISPLAY_APIS
Paketlere, sinemaskop veya boyut uyumluluk modu etkinliği için hiçbir zaman Display
API korumalı alanlarının uygulanmamasını zorunlu kılar. Display
API'leri, görüntüleme alanı sınırlarını sağlamaya devam eder.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
android:resizeableActivity
manifest özelliğini true
veya android.supports_size_changes
meta veri işaretini true
olarak ayarlayarak etkinliklerin yeniden boyutlandırılabilir olduğunu bildirin.
Uygulamaları optimize etme
Tamamen yeniden boyutlandırılabilir olduğunu belirten uygulamalar, kullanıcı arayüzü öğelerini konumlandırmak için asla görüntü boyutuna güvenmemelidir. Uygulamanızı, WindowMetrics
sağlayan güncel API'lere taşıyın. Jetpack Compose'u kullanıyorsanız kullanıcı arayüzünü, uygulamanın mevcut ekranda ne kadar ekran alanına sahip olduğuna göre çizmek için WindowSizeClass
API'den yararlanın. Pencere boyutu sınıfları bölümünü inceleyin.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
Devre dışı bırakmak mümkün değil. Kullanımdan kaldırılan API'lerden geçiş yapın.
Geçersiz kılmayı ayarlamak için özellik işaretleri
Bu geçersiz kılma için özellik işareti yok.
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak için:
adb shell am compat enable NEVER_SANDBOX_DISPLAY_APIS <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable NEVER_SANDBOX_DISPLAY_APIS <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
HER ZAMAN_KUM KUTUSU_GÖRÜNTÜLÜ_APIS
Paketlerde, pencere modundan bağımsız olarak Display
API korumalı alanının her zaman uygulanmasını zorunlu kılar. Display
API'leri her zaman uygulama sınırlarını sağlar.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
android:resizeableActivity
özelliğini false
veya android.supports_size_changes
meta veri işaretini false
olarak ayarlayarak etkinliklerin yeniden boyutlandırılamayacağını bildirin.
Uygulamaları optimize etme
Tamamen yeniden boyutlandırılabilir olduğunu belirten uygulamalar, kullanıcı arayüzü öğelerini konumlandırmak için asla görüntü boyutuna güvenmemelidir. Uygulamanızı desteği sonlandırılmış API'lerden WindowMetrics
sağlayan güncel API'lere taşıyın. WindowMetricsCalculator
sayfasını inceleyin.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
Devre dışı bırakmak mümkün değil. Kullanımdan kaldırılan API'lerden geçiş yapın.
Geçersiz kılmayı ayarlamak için özellik işaretleri
Bu geçersiz kılma için özellik işareti yok.
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak için:
adb shell am compat enable ALWAYS_SANDBOX_DISPLAY_APIS <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable ALWAYS_SANDBOX_DISPLAY_APIS <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS
Paketleri, etkinlik sınırlarına göre aşağıdaki View
API'lerini korumalı alana almaya zorlar:
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
Cihaz ekranının sınırları ve cihaz ekranına göre ofsetler yerine uygulama penceresine göre uygulama penceresinin sınırlarını ve ofsetleri sağlayan API'leri kullanarak uygulama kodundaki sorunu çözün.
Uygulamaları optimize etme
Uygulamalar, sinemaskop ve çoklu pencere modunun uygulanma olasılığını dikkate alarak View
API'leri kullanmalıdır. WindowMetricsCalculator
adresini inceleyin.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS
özellik işaretini false
olarak ayarlayın.
Geçersiz kılmayı ayarlamak için özellik işaretleri
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS"
android:value="false"/>
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION
Döndürmeye zorlamayı devre dışı bırakır. Bazı uygulamalarda kullanıcı deneyimini iyileştirir.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION
özellik işaretini false
olarak ayarlayın.
Uygulamaları optimize etme
Önbelleğe alınmış kamera sensörü yönüne veya cihaz bilgilerine güvenmeyin. Kamera uyumluluğuyla ilgili yardım için Kamera Vizörünün tanıtımı ve Kamera uygulamanızda yeniden boyutlandırılabilir yüzeyleri destekleme konularına bakın.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION
özellik işaretini true
olarak ayarlayın.
Geçersiz kılmayı ayarlamak için özellik işaretleri
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION"
android:value="true|false"/>
geçersiz kılmayı test etmek için adb komutları
Zorla döndürmeyi kaldıran geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>
Zorla döndürme işleminin gerçekleşmesini sağlayan geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_CAMERA_COMPAT_DEVRE DIŞI_YENİLEME
Zorla döndürmeden sonra etkinlik yenilemeyi devre dışı bırakır. Yenileme, uygulamalarda durum kaybına neden olduğunda kullanıcı deneyimini iyileştirir.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH
özellik işaretini false
olarak ayarlayın.
Uygulamaları optimize etme
Bkz. OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH
özellik işaretini true
olarak ayarlayın.
Geçersiz kılmayı ayarlamak için özellik işaretleri
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH"
android:value="true|false"/>
geçersiz kılmayı test etmek için adb komutları
Etkinlik yenilemesini kaldıran geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>
Etkinlik yenilemesine olanak tanıyan geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
Kamera uyumluluğu kuvvet döndürüldükten sonra onResume()
→
onStop()
→ onResume()
döngüsü yerine onResume()
→ onPause()
→ onResume()
döngüsü kullanarak etkinlik yenilemesi için uygulandığı paketleri uygular.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
özellik işaretini true
olarak ayarlayın.
Uygulamaları optimize etme
Bkz. OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
özellik işaretini false
olarak ayarlayın.
Geçersiz kılmayı ayarlamak için özellik işaretleri
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE"
android:value="true|false"/>
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_KAMERA_LANDSCAPE_TO_PORTRAIT
Dikey kamera yönü, doğal cihaz yönüyle uyumlu olmadığında kamera çıkışının karşı yönde kırpılmaya zorlanır. Birçok uygulama bu durumu düzeltmez ve diğer durumlarda uzatılmış resimler gösterir.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT
özellik işaretini true
olarak ayarlayın.
Uygulamaları optimize etme
Bkz. OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT
özellik işaretini false
olarak ayarlayın.
Geçersiz kılmayı ayarlamak için özellik işaretleri
<property android:name="android.camera.PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT"
android:value="true|false"/>
geçersiz kılmayı test etmek için adb komutları
İç ön kamera kırpmanın uygulandığı geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>
İç ön kameranın kırpılmasını kaldıran geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION
Uygulamaların, uygulama ekran paylaşımını devre dışı bırakmasını engeller (Medya projeksiyonu bölümüne bakın). Uygulamalar tam ekran görüntüsü yakalamayı zorlamak ve kullanıcı gizliliğini tehlikeye atmak için createConfigForDefaultDisplay()
API'yi kötüye kullandığında uygulanır. Bu şekilde, tam ekranla yakalanan ancak uygulama ekranı paylaşımıyla yakalanmayan bildirimlerin içeriği ve pencere modundan bağımsız olarak tüm uygulamalar gösterilir.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
Kullanıcıların, pencere modundan bağımsız olarak tam ekranı mı yoksa tek bir uygulama penceresini mi paylaşacaklarına karar vermelerine olanak tanıyan varsayılan medya projeksiyonu davranışına (createScreenCaptureIntent()
ile Android 14'te, API düzeyi 34'te uygulanır) izin verin. Alternatif olarak, createConfigForUserChoice()
çağrısından döndürülen MediaProjectionConfig
bağımsız değişkeniyle createScreenCaptureIntent(MediaProjectionConfig)
çağrısı yapabilirsiniz.
Uygulamaları optimize etme
Kullanıcıların, medya projeksiyonu sırasında cihaz ekranının tamamını mı yoksa bir uygulama penceresini mi paylaşacağını seçmesine izin verilir. Android 14'ten itibaren bu varsayılan davranıştır.
Uygulamanızı, çoklu pencere modunu destekleyecek şekilde yeniden boyutlandırılabilir (resizeableActivity="true"
) yapın.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
Kullanıcı gizliliğinin ciddiyeti nedeniyle, uygulamanız bu geçersiz kılmayı devre dışı bırakamaz veya devre dışı bırakamaz.
Geçersiz kılmayı ayarlamak için özellik işaretleri
Yok.
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak için uygulamanın kısmi ekran paylaşımını devre dışı bırakması (yani kısmi ekran paylaşımı etkinleştirilir) iptal edilir:
adb shell am compat enable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>
Uygulamanın kısmi ekran paylaşımını devre dışı bırakmasına olanak tanıyan geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_ENABLE_COMPAT_FAKE_ODAK NOKTASI
Bölünmüş ekran modunda odaklanılmamış uygulamalar için sahte odaklama göndermeyi etkinleştirir. Bazı oyun motorları, uygulamanın içeriğini çizmeden önce odaklanmayı bekler. Bu nedenle, sahte odaklama, uygulamaların devam ettirildiğinde ve henüz odakta değilken karartılmaktan kaçınmasına yardımcı olur.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
PROPERTY_COMPAT_ENABLE_FAKE_FOCUS
özellik işaretini true
olarak ayarlayın.
Uygulamaları optimize etme
Uygulamanız birden fazla yön ve yapılandırma değişikliği yapıyorsa bu sorunu önleyebilirsiniz. Büyük ekran uygulama kalitesi yönergelerini izleyerek uygulamanızı büyük ekrana hazır hale getirin.
Unity oyun motorunu çalıştırıyorsanız oyununuzu 2019.4.40 veya sonraki bir sürüme yükseltin ve oyununuzu yeniden dışa aktarın. Android Player ayarlarında Resizable Window
seçeneğini işaretli bırakın.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
PROPERTY_COMPAT_ENABLE_FAKE_FOCUS
özellik işaretini false
olarak ayarlayın.
Geçersiz kılmayı ayarlamak için özellik işaretleri
<property android:name="android.window.PROPERTY_COMPAT_ENABLE_FAKE_FOCUS"
android:value="true|false"/>
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
Ek kaynaklar
- Büyük ekran uygulama kalitesi yönergeleri
- Temel uygulama kalitesi yönergeleri