Android, yön veya yeniden boyutlandırılabilirlik kısıtlamaları bildiren uygulamalar için bir uyumluluk modu etkinleştirir. Uyumluluk modu, büyük ekranlı cihazlarda, katlanabilir telefonlarda ve masaüstü ortamlarında uygulamanın kabul edilebilir bir şekilde davranmasını sağlar ancak kullanılabilirlik açısından ideal değildir.
Uygulama bazında geçersiz kılma işlemleri; cihaz üreticilerinin, sanal cihaz sahiplerinin1 ve kullanıcıların, uygulama düzenini iyileştirmek veya uygulamaların belirli cihazlarda bozulmasını önlemek için uygulama davranışını değiştirmesine olanak tanır.
Android 16
Android 16 (API düzeyi 36), en küçük genişliği >= 600 dp olan form faktörlerinde uygulamaların düzenini iyileştirmek için ekran yönü, en boy oranı ve uygulama yeniden boyutlandırılabilirliği kısıtlamalarını yoksayar.
Aşağıdaki uygulama bazında geçersiz kılma işlemleri, API düzeyi 36'yı hedefleyen uygulamalarda çalışmaz:
- FORCE_RESIZE_APP
- FORCE_NON_RESIZE_APP
- OVERRIDE_MIN_ASPECT_RATIO
- OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY
- OVERRIDE_MIN_ASPECT_RATIO_MEDIUM
- OVERRIDE_MIN_ASPECT_RATIO_LARGE
- OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN
- OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN
- OVERRIDE_ANY_ORIENTATION
- OVERRIDE_ANY_ORIENTATION_TO_USER
- OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
- OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR
- OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE
- OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA
- OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION
- OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION
- OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
- OVERRIDE_RESPECT_REQUESTED_ORIENTATION
Devre dışı bırak
Uygulamanız hedef API düzeyi 36'yı hedefleyebilir ancak Android 16 davranışını devre dışı bırakabilir. Bu durumda OVERRIDE_ANY_ORIENTATION_TO_USER geçerli değil.
Manifest özelliğini bildirme
API düzeyi 36 davranışını devre dışı bırakmak için PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY manifest özelliğini tanımlayın.
Belirli bir etkinlik için kapsam dışında kalmayı seçmek istiyorsanız özelliği <activity> öğesinde ayarlayın:
<activity ...>
<property
android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
android:value="true" />
...
</activity>
Uygulamanızın tamamında devre dışı bırakmak için <application> öğesindeki özelliği ayarlayın:
<application ...>
<property
android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
android:value="true" />
...
</application>
Uygulamanız Android 16'yı (API düzeyi 36) veya sonraki sürümleri hedefliyorsa bu özellik, büyük ekranlarda ekran yönünü kilitlemez veya ekran döndürmeyi engellemez.
Referans cihazlar
Aşağıdaki cihazlar, olağan dışı yapılandırmalar veya uygulamalar tarafından iyi desteklenmeyen yapılandırmalar nedeniyle uygulama bazında geçersiz kılma işlemi gerektirebilir:
- Tabletler: Pixel Tablet gibi bazı tabletlerin doğal yönü yataydır.
Display#getRotation(),Surface.ROTATION_0değerini döndürdüğünde cihaz doğal yönündedir. UygulamalarROTATION_0cihazın 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, açıldığında ise yatay yönde olur. Uygulamalar, katlanmamış yönün dikey olduğunu varsayarsa titreşim döngüleri veya düzen sorunları yaşanabilir.
- Katlanabilir telefonlar: Açık durumdaki katlanabilir telefonlar genellikle dikey yöndedir. Ancak katlandığında telefonlar genellikle yatay yönde küçük bir ekrana sahip olur. Uygulamalar, ekranların farklı yönlerini tanımlamalı ve bunlara uyum sağlamalıdır.
- Harici ekranlar: Belirli cihazlar, harici ve bağlı ekranlarda pencereli görüntüleme oturumu başlatabilir. Uygulamalar, ekran boyutu ve çözünürlük gibi bilgiler için harici ekranları sorgulamalıdır. Aksi takdirde, uygulamalar ekranlar hakkında yanlış varsayımlarda bulunabilir ve bu da uygulamanın yanlış davranmasına neden olabilir.
- Araba ekranları: Araba ekranlarının çoğu yataydır ancak hepsi yatay değildir. Araba ekranları için park edilmiş uygulamalar geliştirmek, tabletler için uygulama geliştirmeye benzer.
Sık karşılaşılan uyumluluk sorunları
Uygulamalar en çok uygulama yönü kısıtlamaları, yeniden boyutlandırılabilirlik ve en boy oranı kısıtlamaları, kamera önizleme yönünün yanlış işlenmesi ve yanlış kullanılan API'ler nedeniyle uyumluluk sorunları yaşar.
Sinemaskop
Sinemaskop, uygulamayı ekranın ortasına veya büyük ekranlarda kolay erişim için bir tarafa yerleştirir. Matlar (tek renkli çubuklar veya bulanık duvar kağıdı), uygulamanın yanlarında ya da üst ve alt kısımlarında kullanılmayan görüntüleme alanını doldurur.
Letterbox, çoğu uygulamanın tasarlandığı standart telefonların boyutları ve en boy oranı genellikle cihaz ekranının boyutlarından ve en boy oranından farklı olduğu için büyük ekranlı cihazlarda sık sık görülür.
Şekil 1. Dikey yönle kısıtlanmış uygulama, yatay tablet ve katlanabilir cihazda sinemaskop olarak gösteriliyor.
Sorun
Uygulama sabit yön, sabit en boy oranı kullandığı veya yeniden boyutlandırılamadığı için tüm ekran yapılandırmalarını desteklemiyor.
Uygulama yönünü ve yeniden boyutlandırılabilirliğini kontrol eden yapılandırma ayarları şunlardır:
screenOrientation: Bir uygulama için sabit bir yön belirtir. Uygulamalar,Activity#setRequestedOrientation()kullanarak çalışma zamanında da yönü ayarlayabilir.resizeableActivity: Sistemin, uygulamaları farklı boyutlardaki pencerelere sığacak şekilde yeniden boyutlandırıp boyutlandıramayacağını gösterir. 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 (kompakt pencere boyutu sınıfı) ç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 (orta veya genişletilmiş pencere boyutu sınıfı) çoklu pencere modunu destekler.maxAspectRatio: Uygulama tarafından desteklenen maksimum en-boy oranını belirtir. YalnızcaresizeableActivitydeğerifalseolarak ayarlanmış uygulamalarmaxAspectRatiodeğerini ayarlayabilir.minAspectRatio: Uygulama tarafından desteklenen minimum en-boy oranını belirtir. YalnızcaresizeableActivitydeğerifalseolarak ayarlanmış uygulamalarminAspectRatiodeğerini ayarlayabilir.
Dikey yönle kısıtlanmış uygulama, yatay cihazda kullanılamaz.
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.
Uygulama tüm cihaz yönlerini destekliyor.
Uyumluluk için geçici çözüm
Sabit yönlü veya sabit en boy oranlı bir uygulama, pencere boyutunu ya da yönünü doğrudan desteklemediği bir pencerede çalışıyorsa Android, sürekliliği korumak için uygulamayı sinemaskop biçimine getirir.
Android 12 (API düzeyi 31) ile başlayıp 12L (API düzeyi 32) ile devam eden platform, letterbox uygulamalarda çeşitli iyileştirmeler uygular. Kullanıcı arayüzü geliştirmelerini cihaz üreticileri uygular. Uygulamanızın iyileştirmelerden yararlanması için ek geliştirme yapmanız gerekmez.
Android 12 (API düzeyi 31), cihaz üreticileri tarafından yapılandırılabilen aşağıdaki estetik geliştirmeleri sunar:
- Yuvarlak köşeler: Uygulama penceresinin köşeleri daha zarif bir görünüme sahiptir.
- Sistem çubuğu şeffaflığı: Uygulamanın üzerinde yer alan durum ve gezinme çubukları yarı şeffaftır. Bu sayede, çubuklardaki simgeler her zaman sinemaskop arka plan üzerinde görülebilir.
- Yapılandırılabilir en-boy oranı: Uygulamanın görünümünü iyileştirmek için en-boy oranı ayarlanabilir.
Şekil 2. Kullanıcı arayüzü iyileştirmeleri içeren sinemaskop uygulama.
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 yerleştirerek etkileşimi kolaylaştırabilir.
Yeniden tasarlanan yeniden başlatma düğmesi: Cihaz üreticileri, kullanıcıların daha kolay fark edebilmesi için boyut uyumluluk modu yeniden başlatma düğmesine yeni bir görünüm kazandırabilir.
Android 13 (API düzeyi 33), letterbox uygulamayı ekrana yerleştirme veya letterbox'ı bölünmüş ekran moduna dahil etme hakkında kullanıcı eğitimi iletişim kutusu ekler:
Şekil 3. Kullanıcı eğitimi iletişim kutusu içeren, letterbox biçiminde uygulama.
Boyut uyumluluk modu
Boyut uyumluluk modu, uygulamanın en boy oranını koruyan ve yeniden başlatma kontrolü içeren sinemaskop modudur. Bu kontrol, kullanıcıların uygulamayı yeniden başlatmasına ve ekranı yeniden çizmesine olanak tanır. 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, uygulamayı en az bir boyutta cihaz ekranını dolduracak şekilde yeniden ölçeklendirebilir.
Boyut uyumluluk modunu tetikleyebilecek cihaz yapılandırması değişiklikleri şunlardır:
- Cihaz döndürme
- Katlanabilir cihaz katlanıyor veya açılıyor
- 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ı kısıtlanmış ve yeniden boyutlandırılamayacak şekilde yapılandırılmış (veya sistem tarafından belirlenmiş) 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 uyumluluk moduna alınmaz:
resizeableActivity="true"ile yeniden boyutlandırılabilir- Pencere içinde pencere (PIP) modunu destekler.
- Yerleştirilmiş
- Cihaz üreticisi tarafından uygulanan
FORCE_RESIZE_APPuygulama başına geçersiz kılma işlemine sahiptir (uygulama tarafından ayarlanan özellikler yoksayılır).
Uygulamanız koşullardan herhangi birini karşılamıyorsa yeniden boyutlandırılamaz olarak kabul edilir ve boyut uyumluluk moduna alınabilir.
Yeniden boyutlandırılamayan uygulama, çoklu pencere modunda kilitleniyor.
Optimizasyon
Uygulama tüm ekran boyutlarını desteklemelidir. Uygulama manifestinde <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 modunu destekleme başlıklı makaleleri inceleyin.
Uygulama tüm pencere boyutlarında çalışır.
Uyumluluk için geçici çözüm
Sistem, sinemaskop uygulamanın görüntüsünün, uygulamayı en az bir boyutta görüntüleme penceresini dolduracak şekilde yeniden ölçeklendirerek iyileştirilebileceğini belirlediğinde Android, uygulamayı boyut uyumluluk moduna alır. Sistem, uygulama işlemini yeniden oluşturan, etkinliği yeniden oluşturan ve ekranı yeniden çizen bir yeniden başlatma kontrolü gösterir. İşlemlere ve iş parçacıklarına genel bakış başlıklı makaleyi de inceleyin.
Yalnızca dikey yönlendirmeyi destekleyen uygulama, yatay yönlendirmede sinemaskop olarak gösteriliyor ve yeniden başlatma kontrolüyle yeniden ölçeklendiriliyor.
Uyumluluk modunu göster
Ekran uyumluluk modu, uygulama farklı ekranlar arasında taşınırken yeniden başlatılmasını önler. Bu durum, renk modu, dokunmatik ekran kullanılabilirliği veya ekran yoğunluğu değişikliği gibi bir yapılandırma değişikliğini tetikleyebilir.
Kararlılığı ve sürekliliği artırmak için oyunlarda ekran uyumluluk modu varsayılan olarak etkindir (android:appCategory işaretine göre).
Boyut uyumluluk modunun aksine, ekran uyumluluk modu uygulamanın yapılandırmasını dondurmaz. Uygulama, onConfigurationChanged() geri çağırma gibi API'ler aracılığıyla tüm yapılandırma güncellemelerini almaya devam edebilir ancak kesintiye neden olan yeniden başlatma işleminden muaf tutulur. Bu, onConfigurationChanged() gibi API'leri düzgün şekilde destekleyen oyunların, ekran uyumluluk modunda olsalar bile kullanıcı arayüzlerini duyarlı bir şekilde güncelleyebileceği anlamına gelir.
Ekran uyumluluk modunu devre dışı bırakmak ve uygulamanızdaki yapılandırma değişikliklerini işlemek için uygulamanın AndroidManifest.xml dosyasında yapılandırma değişiklikleri için destek beyan edin ve onConfigurationChanged() geri çağırma işlevinde yapılandırma değişikliklerini işleyin.
<activity
android:name=".MyGameActivity"
android:configChanges="colorMode|touchscreen|density|...">
...
</activity>
Titreyen döngüler
Bir uygulama tüm ekran yönlerini desteklemediğinde, yapılandırma değişikliği gerçekleştiğinde tekrar tekrar yeni yönler isteyebilir. Bu da ekranın titremesine veya uygulamanın sonsuz bir şekilde dönmesine neden olan sonsuz bir döngü oluşturur.
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 ve bunun yerine uyumluluk modlarını zorunlu kılacak şekilde yapılandırabilir. Örneğin, katlanabilir bir cihaz, etkinlik cihazın yatay tablet boyutundaki iç ekranında gösterildiğinde etkinliğin android:screenOrientation="portrait" ayarını yoksayabilir.
Bir uygulamanın yön kısıtlamaları yok sayılırsa uygulama, Activity#setRequestedOrientation() yöntemini çağırarak yönünü programatik olarak ayarlayabilir. Uygulama, yapılandırma değişikliklerini işlemiyorsa ç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şlatmanın ardından uygulamanın yön kısıtlamaları tekrar yok sayılır, uygulama setRequestedOrientation() çağrısını tekrarlar, çağrı uygulamanın yeniden başlatılmasını tetikler ve bu şekilde kendi kendini tekrarlayan bir döngüye girer.
Bu durumla karşılaşabileceğiniz bir diğer senaryo da cihaz ekranının doğal yönünün (Android tarafından belirlenen normal yön) yatay olmasıdır (yani cihazın yatay en boy oranı varken Display#getRotation() çağrısı Surface.ROTATION_0 değerini döndürür). Geçmişte uygulamalar, Display.getRotation() =
Surface.ROTATION_0 değerinin cihazın dikey yönde olduğu anlamına geldiğini varsayıyordu ancak bu her zaman geçerli değildir. Örneğin, bazı katlanabilir cihazların iç ekranında ve bazı tabletlerde bu durum geçerli değildir.
Katlanabilir iç ekranda yatay yönde olan bir uygulama, ekran dönüşünü kontrol edebilir, ROTATION_0 değerini 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
) yöntemini çağırabilir. Uygulama yeniden başlatıldıktan sonra (yatay yönde) ekran yönünü tekrar kontrol edebilir, ROTATION_0 değerini alabilir, setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) yöntemini çağırabilir ve sonsuz döngüye devam edebilir.
Yalnızca yatay modda kullanılabilen uygulama, dikey ekranda Activity#setRequestedOrientation() yöntemini tekrar tekrar çağırıyor.
Optimizasyon
Uygulamalar aşağıdakileri yapmamalıdır:
- Yön isteği, işlenmeyen yapılandırma değişiklikleri nedeniyle beklenmedik bir şekilde tetiklenebileceğinden etkinlik
onCreate()yöntemindeActivity#setRequestedOrientation()ile varsayılan bir yön ayarlayın. - Cihazın (
ROTATION_0) doğal yönünün dikey olduğunu varsayalım. - Yönü, mevcut pencere boyutuyla ilgili olmayan sinyallere (ör.
Display#getRotation(),FoldingFeaturevarlığı veya desteği sonlandırılmış API'ler) göre ayarlayın.
Uygulama, yapılandırma değişikliğini işler, yön kısıtlamaları yoktur ve bu nedenle titreme döngüsüne girmez.
Uyumluluk için geçici çözüm
Android, aşağıdaki durumlarda Activity#setRequestedOrientation() çağrılarını yoksayar:
Etkinlik, yönteme yapılan önceki bir çağrıdan yeniden başlatılmıştır veya kamera uyumluluğu zorunlu döndürme işlemi etkinleştirilmiştir (aşağıdaki Kamera önizlemesi bölümüne bakın).
Cihaz üreticileri, bu davranışı
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATIONile bir uygulamaya uygulayabilir.Etkinlik, bir saniyede ikiden fazla yön isteği gönderdi. Bu durum, bir döngü oluştuğunu gösterir. Android, döngüdeki iki istekten uygulama görüntüleme alanını en üst düzeye çıkaranı kullanır.
Cihaz üreticileri, bu davranışı
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTEDile bir uygulamaya uygulayabilir.Sanal cihaz sahipleri, belirli cihazlarda yöntem çağrısını geçersiz kıldı.
Kamera önizleme
Kamera uygulamalarının kamera önizlemesi (veya vizörü) tabletlerde, dizüstü bilgisayarlarda ve katlanabilir ekranlarda yanlış hizalanabilir veya bozulabilir.
Pencereli görüntülemede kamera önizlemesi bölümüne de bakın.
Sorun
Android Uyumluluk Tanımlama Belgesi'nde, kamera görüntü sensörünün "kameranın uzun boyutu ekranın uzun boyutuyla hizalanacak şekilde yönlendirilmesi GEREKTİĞİ" belirtilir.
Uygulamalar genellikle cihaz yönünün ve kamera sensörü yönünün dikey olduğunu varsayar. Bu, standart cep telefonları için 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örleri birden fazla doğal yöne ve farklı yönlerde birden fazla kamera sensörüne sahip olabilir.
Uygulamanın beklemediği bir kamera yönüyle etkinlik başlatmak veya farklı kameralar ya da cihaz ekranları (katlanabilir cihazlar için) arasında geçiş yapmak, kamera önizlemesinin yanlış hizalanmasına veya bozulmasına neden olabilir.
Büyük ekranlı katlanabilir cihazda kamera önizlemesi yanlış hizalanmış ve bozuk.
Optimizasyon
Kamera uygulamaları, doğru şekilde hizalanmış ve ölçeklendirilmiş bir kamera önizlemesi sunmak için cihaz yönünü ve kamera sensörü yönünü doğru şekilde tanımlayıp yönetmelidir. Uygulamalar; cihaz dönüşünü, sensör dönüşünü ve ekran veya pencere en boy oranını hesaplamalı ve ardından sonuçları kamera önizlemesine uygulamalıdır. Ayrıntılı bilgi için Kamera önizlemesi ve Kamera vizörüne giriş başlıklı makaleleri inceleyin.
Kamera önizlemesi tüm cihaz yönlerinde doğru şekilde hizalanmış ve ölçeklendirilmiş.
Uyumluluk için geçici çözüm
Display#getRotation(), Surface.ROTATION_0 değerini döndürdüğünde cihaz doğal yöndedir. Sistem, cihazın doğal yönüne göre CameraCharacteristics.SENSOR_ORIENTATION değerini hesaplar. Android, dikey yönle kısıtlanmış uygulamaların dikey penceresini cihazın doğal yönüyle hizalar. Çoğu uygulama bu şekilde çalışır. Android, sensör yönü yatay ve kamera önizlemesi dikey olduğunda da kamera sensörü görüntüsünü kırpar. Bu geçici çözümler şunlardır:
Dikey yönle kısıtlanmış uygulamalar için kamera önizlemelerini döndürmeye zorla: Dikey yönle kısıtlanmış uygulamalar, cihazın doğal yönünün ve kamera sensörü yönünün dikey olmasını bekler. Ancak Android 12 (API düzeyi 31) ve daha yeni sürümlerde, cihaz üreticileri yönlendirme spesifikasyonunu yoksayarsa uygulamalar birden fazla cihaz yönünde çalışabilir.
Dikey kısıtlamalı bir uygulama kameraya bağlandığında Android, uygulama dikey penceresini cihazın doğal yönüyle hizalamak için uygulamayı zorunlu olarak döndürür.
Bazı tabletlerde (referans cihazlara bakın) uygulama dikey penceresi, cihazın doğal yönüyle uyumlu olacak şekilde tam ekran dikey olarak döndürülür. Uygulama, zorunlu döndürme işleminden sonra tam ekranı kaplar.
Tablet: Dikey kısıtlamalı uygulamayı döndürmeye zorlama
Katlanabilir cihazların yatay iç ekranında (referans cihazlara bakın), yalnızca dikey etkinlikler, katlanmamış doğal yönle hizalanacak şekilde yatay olarak döndürülür. Uygulama, zorunlu döndürme işleminden sonra sinemaskop biçiminde gösterilir.
Katlanabilir: Dikey kısıtlamalı uygulamayı döndürmeye zorlama. Uygulama ayrıca sinemaskop olarak gösterilir.
İç ön kamera kırpma: Bazı katlanabilir cihazlardaki iç ön kamera sensörü yatay yöndedir. Android, katlanabilir iç ekranda kamera önizlemesini zorunlu olarak döndürmenin yanı sıra iç ön (yatay) kamera görüş alanını kırparak sensörün cihaz yönünün tersi bir görünüm yakalamasını sağlar.
Kamera önizlemelerini yenilemeye zorla: Sistem, kamera önizlemesinin düzgün şekilde gösterildiğinden emin olmak için zorunlu döndürme işleminden sonra
onStop()veonStart()(varsayılan olarak) veyaonPause()veonResume()(OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE uygulama başına geçersiz kılma tarafından uygulanır) etkinlik yöntemleri arasında geçiş yapar.En boy oranı ölçeklendirme: Sistem, zorunlu olarak döndürülen kamera önizlemesinin en boy oranını dinamik olarak daha yüksek bir minimum en boy oranına değiştirir. Bu sayede kamera önizlemesi düzgün şekilde ölçeklendirilir.
Uygulamalar kamera önizlemesini doğru şekilde işliyorsa uygulama geliştiriciler bu geçici çözümleri geçersiz kılabilir. Uygulama bazında geçersiz kılma işlemleri başlıklı makaleyi inceleyin.
Sıklıkla kötüye kullanılan API'ler
Android'e çoklu pencere modu gibi özellikler ve katlanabilir cihazlar gibi cihazlar için destek eklendikçe eski API'ler kullanımdan kaldırıldı ve bunların yerini tüm ekran boyutları ve cihaz form faktörleri için çalışan güncel API'ler aldı. Ancak desteği sonlandırılan API'ler, geriye dönük uyumluluk için hâlâ kullanılabilir.
Bazı View API'leri, geliştiriciler tarafından her zaman tam olarak anlaşılamayan özel amaçlar için tasarlanmıştır.
Sorun
Geliştiriciler, desteği sonlandırılmış Display API'leri 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ü yanlış bir şekilde varsayıyor. Ya da geliştiriciler, genel görüntüleme metriklerini almak için yanlışlıkla özel amaçlı görüntüleme API'lerini kullanır.
Bu durum, uygulama penceresi yeniden boyutlandırma etkinliklerinden sonra kullanıcı arayüzü öğeleri yeniden konumlandırılırken yanlış hesaplamalara neden olarak düzen sorunlarına yol açar.
Desteği sonlandırılan ve yaygın olarak hatalı kullanılan Display API'leri:
Daha fazla bilgi için Çoklu pencere modunu destekleme başlıklı makaleyi inceleyin.
Hatalı kullanılan görüntüleme API'leri:
Desteği sonlandırılmış API, uygulama sınırlarını yanlış hesaplıyor. Uygulama içeriği ekranın dışına taşıyor.
Optimizasyon
Kullanıcı arayüzü öğelerini konumlandırmak için hiçbir zaman fiziksel ekran boyutunu temel almayın. Uygulamanızı, aşağıdaki WindowManager API'ler de dahil olmak üzere WindowMetrics tabanlı API'lere taşıyın:
Platform:
Jetpack:
API, uygulama penceresi metriklerini doğru şekilde hesaplar.
Uyumluluk için geçici çözüm
İki geçersiz kılma, uygulama sınırlarını döndürmek için desteği sonlandırılmış Display API'lerini ve hatalı kullanılan View API'lerini ayarlar:
Display API'leri için ALWAYS_SANDBOX_DISPLAY_APIS; View API'leri için OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS. ALWAYS_SANDBOX_DISPLAY_APIS, boyut uyumluluk moduna uygun uygulamalara da varsayılan olarak uygulanır.
Şeffaf etkinlikler
Şeffaf etkinlikler, şeffaf arka plan stillerinin sonucudur. Örneğin:
<style name="Transparent" parent="AppTheme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
Theme.MaterialComponents.Dialog gibi iletişim kutularıyla ilgili temalar, etkinlikleri şeffaf hale getiren stiller içerebilir.
Şeffaf etkinlikler, mevcut ekran alanının tamamını kaplamaz. Bu nedenle, cihazın döndürülmesi, katlanması ve açılması gibi yapılandırma değişikliklerine ve çok pencereli moda bağlı olarak mevcut ekran alanı değişebileceğinden bu etkinlikleri yönetmek zordur.
Sorun
Şeffaf bir etkinlik, görev etkinliği yığınında şeffaf etkinliğin altındaki ilk opak etkinliğin sınırlarına uymalıdır. Ancak izin iletişim kutusu başlatan opak bir etkinlik, trambolin (başka bir etkinlik başlatıp kaybolan bir etkinlik) olabilir. Bu nedenle sistem, şeffaf izin iletişim kutusu etkinliğini başlatan trambolin etkinliğinin sınırlarını belirleyemez.
Etkinlik bir trambolinden başlatıldığı için iletişim kutusu yanlış konumlandırıldı.
Optimizasyon
Şeffaf etkinlikler, kısıtlamalarını bir görevin etkinlik yığınında altlarında bulunan en üstteki opak etkinlikten devralır. Opak etkinlik, şeffaf etkinliğin oluşturulmasından imha edilmesine kadar tüm yaşam döngüsü boyunca kullanılabilir olmalıdır. Bu nedenle, trambolin etkinliklerinden izin istekleri başlatmayın.
Trambolin etkinliği bir izin isteği başlatırsa kullanıcı, izin iletişim kutusunu göremeyebilir. Bunun nedeni, kullanıcı iletişim kutusuna yanıt verme fırsatı bulamadan trambolin etkinliğinin yok edilmiş olması ve iletişim kutusu etkinliğinin boyutlarının ve konumunun yanlış hesaplanmış olmasıdır.
Uygulamalar, izin isteklerini her zaman kullanıcı izin kararı verene kadar görünür kalan etkinliklerden 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, kullanılabilir ekran alanını dolduruyorsa sistem, cihaz üreticisi tarafından yapılandırıldığında etkinliğe otomatik olarak yuvarlak köşeler uygular. Ancak şeffaf bir etkinlik (ör. izin iletişim kutusu) kullanılabilir alanı doldurmuyorsa yuvarlatılmış köşelerin uygulanıp uygulanmayacağına siz karar verirsiniz.
İzin iletişim kutuları, kullanılabilir ekran alanını doldurmaz. Bunun nedeni, iletişim kutusu düzeninin genellikle LayoutParams.MATCH_PARENT yerine LayoutParams.WRAP_CONTENT kullanmasıdır.
Görünür başlatma etkinliğinin üzerinde doğru şekilde konumlandırılmış yuvarlak köşeli iletişim kutusu.
Uyumluluk için geçici çözüm
İletişim kutusu etkinliklerini başlatan etkinlikleri, kullanıcı iletişim kutusuna yanıt verene kadar görünür tutun.
Sistem, şeffaf bir etkinliğin, etkinlik yığınındaki şeffaf etkinliğin altındaki ilk opak etkinlikten tüm kısıtlamaları devralmasını sağlar. Bu kısıtlamalar şunları içerir:
- Boyut uyumluluk modu
- Sayfa yönü
- En boy oranı
Unity oyunları
Unity oyunları, Android'de tam ekran veya çoklu pencere modunda çalışır. Ancak birçok Unity oyunu, uygulama çoklu pencere moduna alındığında odağı kaybeder ve içerik oluşturmayı durdurur.
Sorun
Unity, Android'de çoklu pencere modunu desteklemek için Unity 2019.4'e Resizable Window seçeneğini ekledi. Ancak ilk uygulama, çoklu pencere modunda etkinlik yaşam döngüsüne doğru şekilde tepki vermediğinden uygulama odağı kaybettiğinde UnityPlayer oynatmayı askıya alıyordu. Oynatıcı, siyah bir ekran veya oyunun donmuş son karesini oluşturdu. Oyun, yalnızca kullanıcı ekrana dokunduğunda devam etti. Unity motorunu kullanan birçok uygulama bu sorunla karşılaşır ve çoklu pencere modunda siyah bir pencere olarak oluşturulur.
Oyun, çoklu pencere modunda odağı kaybediyor ve siyah bir pencere olarak oluşturuluyor.
Optimizasyon
Unity'yi 2019.4.40 veya sonraki bir sürüme yükseltip 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 odaklanılmadığında duraklatılır.
Oyun, odakta olmasa bile çoklu pencere modunda içeriği doğru şekilde oluşturuyor.
Uyumluluk için geçici çözüm
Cihaz üreticileri, çoklu pencere modundaki bir uygulamaya sahte odaklanma etkinliği sağlamak için OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS uygulama bazında geçersiz kılma özelliğini uygulayabilir. Geçersiz kılma, etkinliğin içeriği yeniden çizmesine ve karartılmamasına olanak tanır.
Pencereli görüntüleme
Uygulamalar, pencereli görüntüleme ortamında çalışırken ek uyumluluk modlarıyla karşılaşabilir.
Yönü kilitli olan uygulamalar serbestçe yeniden boyutlandırılabilir. Bir etkinlik dikey yöne kilitli olsa bile kullanıcılar uygulamayı yatay yöne göre yeniden boyutlandırabilir.
Yönü kilitli olan uygulamalar serbestçe yeniden boyutlandırılabilir.
Ancak bir etkinlik, yeniden boyutlandırılamaz olarak tanımlanırsa (resizeableActivity = false) etkinlik kullanıcı arayüzü, aynı en boy oranını koruyarak ölçeklendirilir.
Yeniden boyutlandırılamaz olarak tanımlanan etkinliklerin kullanıcı arayüzü ölçeklendirilir.
Masaüstü pencereli görüntüleme modunda kamera önizlemesi
Bir uygulama pencereli görüntüleme modunda çalışırken ekran döndürme ve pencere yönü, standart telefonlarda tam ekran modunda karşılaşabileceklerinden farklı olabilir.
Sorun
Uygulamalar genellikle cihaz yönünün ve kamera sensörü yönünün dikey olduğunu varsayar. Bu da kamera önizlemesinin yanlış hizalanmasına veya bozulmasına neden olabilir.
Optimizasyon
Kamera uygulamaları, doğru şekilde hizalanmış ve ölçeklendirilmiş bir kamera önizlemesi sunmak için cihaz yönünü ve kamera sensörü yönünü doğru şekilde tanımlayıp yönetmelidir. Uygulamalar; cihaz dönüşünü, sensör dönüşünü ve pencere en boy oranını hesaplamalı, ardından sonuçları kamera önizlemesine uygulamalıdır. Kamera önizlemesi, pencere yapılandırması değişikliklerine de yanıt vermelidir. Ayrıntılı bilgi için Kamera önizlemesi başlıklı makaleyi inceleyin.
Uyumluluk için geçici çözüm
Masaüstü pencereli görüntüleme modundaki sabit yönlü uygulamalar kamera önizlemesi başlattığında sistem, önizlemelerin uzatılmasını ve yana doğru gösterilmesini önlemek için kamera uyumluluk işlemini tetikleyebilir.
Bu çözüm, ortamı korumalı alana alarak istenen yönle aşağıdaki şekillerde eşleştirir:
Uygulama penceresini istenen yöne göre sinemaskop yapın: Bu, uygunsuz ölçeklendirme nedeniyle esneme sorunlarını önlemek içindir.
Ekran döndürmeyi korumalı alana alma: Bu işlem, cihazın istenen yöne yerleştirilmesini simüle eder. Kamera önizlemeleriyle ilgili en yaygın yanlış varsayım, uygulamanın dikey bir cihazda çalıştığıdır. Bu nedenle, dikey yönlendirme isteyen uygulamalar için ekran döndürme 0 derece, yatay yönlendirme isteyen cihazlar için ise 90 derece olarak korumalı alana alınır.
Kamera kırpma: Ekran yönü değiştiyse bu değişiklik kamera feed'ine yansıtılır: Cihaz yatay yöndeyse ve dikey yön isteyen bir uygulama için işlem tetiklenirse kameranın görüş alanı, dikey yönlü bir kameranın görüş alanına benzeyecek şekilde kırpılır.
Kamera feed'ini döndürme ve kırpma: Sistem, kamera önizlemesinin düzgün şekilde gösterildiğinden emin olmak için işlem uygulandıktan sonra etkinlik yöntemleri
onStop()veonStart()(varsayılan olarak) veyaonPause()veonResume()(uygulama başına OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE geçersiz kılma işlemi tarafından uygulanır) arasında geçiş yapar.
Uygulama geliştiriciler, uygulamalar kamera önizlemesini doğru şekilde işliyorsa bu geçici çözümleri geçersiz kılabilir. Uygulama bazında geçersiz kılma işlemleri başlıklı makaleyi inceleyin.
Yeniden boyutlandırılıyor
Simüle edilmiş istenen yönlendirme işlemi etkinken pencereyi yeniden boyutlandırmak, vizör kullanıcı arayüzünü en boy oranını koruyarak ölçeklendirir. Uygulama penceresinin geri kalanı serbestçe yeniden boyutlandırılabilir.
Kamera vizörüyle bir pencereyi yeniden boyutlandırma
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:
- Cihazlara yayınlama: Uygulamanızı Google veri merkezlerinde barındırılan üretim cihazlarında (referans cihazlar dahil) test etmek için Firebase destekli Android cihazlara yayınlama başlıklı makaleyi inceleyin.
- Android Studio'daki emülatörler: Referans cihazlar için emülatör oluşturma hakkında bilgi edinmek istiyorsanız Sanal cihazlar oluşturma ve yönetme başlıklı makaleyi inceleyin.
- Android Studio yeniden boyutlandırılabilir emülatörü: Sanal cihazlara erişim hakkında bilgi için Android Emulator'da uygulama çalıştırma başlıklı makaleyi inceleyin.
Sinemaskop
Her etkinliğin, uygulama için kullanılabilir olan tüm görüntüleme alanını kullanabildiğini doğrulayın. Öncelikle test klasörünüzde aşağıdaki kodu tanımlayın:
Kotlin
fun isLetterboxed(activity: AppCompatActivity): 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(AppCompatActivity 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ışı onaylamak ve hedef etkinliğin sinemaskop olmadığından emin olmak için bir test çalıştırın:
Kotlin
@get:Rule val activityRule = ActivityScenarioRule(MainActivity::class.java) @Test fun activity_launched_notLetterBoxed() { activityRule.scenario.onActivity { assertFalse(it.isLetterboxed()) } }
Java
@Rule public ActivityScenarioRule<MainActivity> rule = new ActivityScenarioRule<>(MainActivity.class); @Test public void activity_launched_notLetterBoxed() { try (ActivityScenario<MainActivity> scenario = ActivityScenario.launch(MainActivity.class)) { scenario.onActivity( activity -> { assertFalse(activity.isLetterboxed()); }); } }
İdeal olarak, bu tür testleri yalnızca başarılı olana ve uygulamanızın etkinliklerinin, uygulamanın kullanabileceği tüm ekran alanını kapladığını onaylayana kadar çalıştırın. Tutarlı bir davranış sağlamak için uygulamanızı tüm cihaz türlerinde test edin.
Uygulamaya özgü geçersiz kılma işlemleri
Android, uygulamaların yapılandırılmış davranışını değiştiren geçersiz kılma işlemleri kullanabilmenizi sağlar. Örneğin, FORCE_RESIZE_APP geçersiz kılma işlemi, uygulama manifestinde resizeableActivity="false" belirtilmiş olsa bile sistemi, boyut uyumluluk modunu atlaması ve uygulamayı ekran boyutlarına uyacak şekilde yeniden boyutlandırması için yönlendirir.
Cihaz üreticileri, belirli 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ı aracılığıyla uygulamalara geçersiz kılma işlemleri uygulayabilir. Android 16 (API düzeyi 36) ve sonraki sürümlerde, sanal cihaz sahipleri, yönettikleri belirli cihazlarda geçersiz kılma işlemleri uygular.
Kullanıcıların uygulamaya özgü geçersiz kılma işlemleri
Android 14 ve sonraki sürümlerde, kullanıcıların uygulamaların en boy oranını değiştirmesine olanak tanıyan bir ayarlar menüsü bulunur. Referans cihazlar gibi büyük ekranlı cihazlar menüyü uygular.
Menüde, cihazda yüklü tüm uygulamaların listesi yer alır. Kullanıcılar bir uygulama seçer ve ardından uygulamanın 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, en boy oranını uygulama manifestinde belirtilen uygulama varsayılanına da sıfırlayabilir.
Uygulamalar, aşağıdaki PackageManager.Property etiketlerini ayarlayarak uyumluluk geçersiz kılma özelliğini devre dışı bırakabilir:
PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE
Kullanıcı en boy oranı uyumluluğu geçersiz kılma özelliğini devre dışı bırakmak için özelliği uygulama manifestinize ekleyin ve değeri
falseolarak 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 çıkarılır. Kullanıcılar, uygulamanın en boy oranını geçersiz kılamaz.
Özelliği
trueolarak ayarlamanın bir etkisi yoktur.PROPERTY_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
falseolarak 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ılır. Kullanıcılar, uygulamanızda tam ekran geçersiz kılma özelliğini uygulayamaz.
Bu özelliğin
trueolarak ayarlanmasının bir etkisi yoktur.
Uygulamanızı tüm ekranlar için optimize edin: Uygulamanızda en boy oranı kısıtlamaları ayarlamayın. Kullanılabilir ekran alanına göre farklı düzenleri desteklemek için pencere boyutu sınıflarını kullanın.
Cihazda uygulamaya özgü geçersiz kılma işlemleri
Cihaz üreticileri ve sanal cihaz sahipleri (belirli güvenilir ve ayrıcalıklı uygulamalar), tabletler, katlanabilir cihazlar, ChromeOS cihazlar ve araç ekranları dahil olmak üzere belirli cihazlarda uygulama bazında geçersiz kılma işlemleri uygular. Referans cihazlar, varsayılan olarak çeşitli uygulamalara bazı geçersiz kılma işlemleri uygulayabilir.
Uygulamalar, geçersiz kılma işlemlerinin çoğunu devre dışı bırakabilir (aşağıdaki Uygulama başına geçersiz kılma işlemleri tablosuna bakın).
Uyumluluk çerçevesini kullanarak uygulamanızı geçersiz kılmalar etkin veya devre dışı olarak test edebilirsiniz (Uyumluluk çerçevesi araçları bölümüne bakın). Etkinleştirildiğinde geçersiz kılmalar uygulamanın tamamına uygulanır.
Geçersiz kılmaları etkinleştirmek veya devre dışı bırakmak ve uygulamanız için hangi geçersiz kılmaların geçerli olduğunu belirlemek için Android Debug Bridge (adb) aracını da kullanabilirsiniz.
Geçersiz kılmaları aşağıdaki şekilde etkinleştirebilir veya devre dışı bırakabilirsiniz:
adb shell am compat enable/disable <override name/id> <package>
Referans cihazlar için uygulamanıza hangi geçersiz kılma işlemlerinin uygulandığını kontrol edin:
adb shell dumpsys platform_compat | grep <package name>
Aşağıdaki tabloda, mevcut geçersiz kılma işlemleri ve uygulamanızın geçersiz kılma işlemlerine ihtiyaç duymaması için nasıl optimize edileceğine dair bilgiler yer almaktadır. Bazı geçersiz kılma işlemlerini devre dışı bırakmak için uygulama manifest dosyanıza özellik işaretleri ekleyebilirsiniz.
| Uygulamaya özgü geçersiz kılma işlemleri | |||
|---|---|---|---|
| Tür | Ad | Kimlik | Açıklama |
| Giriş Uyumluluğu | OVERRIDE_MOUSE_TO_TOUCH | 413207127 | Uygulamaya gönderildiklerinde MotionEvent kaynağını ve araç türünü yeniden yazarak fare cihazından gelen MotionEvent örneklerini dokunma etkinliklerine dönüştürür. |
| 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 uyumluluk moduna zorlar. | |
| En boy oranı | OVERRIDE_MIN_ASPECT_RATIO | 174042980 | Diğer en boy oranı geçersiz kılma işlemlerini uygulamak için etkinleştirilmesi gereken geçit bekçisi geçersiz kılma işlemi. |
| OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY | 203647190 | Etkinleştirilirse (varsayılan) geçersiz kılma kapsamı yalnızca dikey etkinliklerle sınırlanır. | |
| OVERRIDE_MIN_ASPECT_RATIO_SMALL | 349045028 | Minimum en boy oranını 4:3 olarak değiştirir. | |
| OVERRIDE_MIN_ASPECT_RATIO_MEDIUM | 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ı, ekran boyutunun% 50'sine (veya bölünmüş ekran en boy oranına) sığacak şekilde değiştirir. | |
| OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN | 218959984 | Cihaz dikey moddayken uygulamaların tam ekran olması için minimum en-boy oranı geçersiz kılma işlemini devre dışı bırakır. | |
| Sayfa 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 boyutlandırılabilirlik ve en-boy oranı kısıtlamalarını geçersiz kılar. | |
| OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT | 265452344 | Bir etkinliğin yönü tanımlanmamışsa yönü dikey olarak geçersiz kılar. | |
| OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR | 265451093 | Bir etkinliğin yönü tanımlanmamışsa yönü nosensor olarak geçersiz kılar (cihazın doğal yönünü kullanı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ğlı olduğu durumlarla sınırlandırır. | |
| OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION | 255940284 | Bir görev tam ekran olduğunda (sinemaskop dahil) ekranı sabit yatay doğal yöne ayarlar. | |
| OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION | 254631730 | Sonsuz döndürme döngülerini önlemek için uygulamadan gelen yönlendirme isteklerini yoksayar. | |
| OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED | 273509367 | Bir etkinlik yeniden başlatılırken tekrarlanan yönlendirme isteklerini yoksayar. Android, bir uygulamanın bir saniye içinde en az iki yeni yönlendirme istediğini algılarsa sistem bunu sonsuz bir döndürme döngüsü olarak kabul eder ve geçersiz kılmayı uygular. | |
| OVERRIDE_RESPECT_REQUESTED_ORIENTATION | 236283604 | Cihaz üreticisinin yön isteğini yoksayma ayarını devre dışı bırakarak sinemaskop gösterimi engeller. | |
| Korumalı alan API'leri | NEVER_SANDBOX_DISPLAY_APIS | 184838306 | Ekran API'lerinin davranışının değiştirilmesini engeller. |
| ALWAYS_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ürür ancak bazen uygulama, 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'lerini 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ürür ancak bazen uygulama, 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 uyumluluğu | OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION | 263959004 | Zorunlu döndürmeyi devre dışı bırakır. Varsayılan olarak, kamera önizlemesi açıkken tüm sabit yönlü kamera uygulamaları zorunlu olarak döndürülür. |
| OVERRIDE_CAMERA_COMPAT_DISABLE_SIMULATE_REQUESTED_ORIENTATION | 398195815 | Kamera uyumluluğu için istenen yönlendirme işleminin simülasyonunu kapatır. Varsayılan olarak, sabit yönlü kamera uygulamaları, kamera önizlemesi açıkken istenen yönlerine göre ayarlanır. | |
| OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH | 264304459 | Kamera önizlemesi zorunlu olarak döndürüldüğünde uygulanan varsayılan tam yenilemeyi kaldırır. | |
| OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE | 264301586 | Kamera önizlemesi zorunlu olarak döndürüldüğünde sert yenilemeyi yumuşak yenilemeye geçirir. Bu, zorunlu döndürme sırasında durumun korunmasına yardımcı olur. Varsayılan olarak Android, kamera önizlemesi zorla döndürüldüğünde tam yenileme uygular. Sert yenileme, uygulamaların önceki durumlarını nasıl önbelleğe aldığına bağlı olarak durumlarını kaybetmesi veya kararmasıyla ilgili sorunlara neden olabilir. | |
| OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT | 250678880 | İç ön kameranın görüntü arabelleğini kırpar. Geçersiz kılma devre dışı bırakılırsa iç ön kamera kırpma işlemi kaldırılır ve kamera önizlemesinin görüş alanı artırılır. Bazı katlanabilir cihazlarda (referans cihazlara bakın) sistem, iç ön kamerayı kullanırken tüm kamera uygulamalarının kamera önizlemesini varsayılan olarak kırpar. | |
| Çeşitli | OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS | 263259275 | Uygulama, bölünmüş ekran modunda odağı kaybettiğinde uygulamanın kararmasını önler. Uygulama, uygulama içeriğini çizmeden önce odağın gelmesini bekler. Bu durum, uygulamanın donmasına veya kararmasına neden olabilir. Geçersiz kılma, Android'in uygulamaya sahte bir odak etkinliği göndermesini sağlar. Bu etkinlik, uygulamaya içeriği tekrar çizmeye başlaması için sinyal gönderir. |
| OVERRIDE_EXCLUDE_CAPTION_INSETS_FROM_APP_BOUNDS | 388014743 | Masaüstü pencereli görüntüleme özelliğindeki etkinlik yapılandırmasında, başlık çubuğu eklerini uygulama sınırlarından hariç tutar. Böylece, uygulama başlık çubuğu eklerini işlemediğinde üst veya alt uygulama kullanıcı arayüzü öğelerinin başlık çubuğu tarafından engellenmesi ya da kırpılması önlenir. | |
OVERRIDE_MOUSE_TO_TOUCH
Hareket etkinlikleri uygulamaya gönderildiğinde MotionEvent kaynağını SOURCE_TOUCHSCREEN ve MotionEvent araç türünü TOOL_TYPE_FINGER olarak yeniden yazarak fare veya dokunmatik alandaki MotionEvent örneklerini dokunma etkinliklerine dönüştüren uyumluluk işlemini etkinleştirir.
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
Geçerli değil. Sorun, uygulama mantığında çözülmelidir.
Uygulamaları optimize etme
Uygulamanız, dokunmatik alan hareketi ve fare tekerleğiyle kaydırma dahil olmak üzere fare ve dokunmatik alandan gelen giriş etkinliklerini işlemelidir. Klavye, fare ve dokunmatik yüzey bölümüne bakın.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
Uygulamanın manifest dosyasındaki bir <uses-feature> öğesinde FEATURE_PC beyan edin.
<uses-feature android:name="android.hardware.type.pc"
android:required="false" />
Not: PC özelliğinin isteğe bağlı olması ve Google Play'in uygulamayı PC dışı cihazlarda hariç tutmaması için android:required="false" değerini ayarlayın.
Geçersiz kılmayı ayarlamak için mülk işaretleri
Yok.
Geçersiz kılmayı test etmek için adb komutları
Geçersiz kılma işlemini uygulamak için:
adb shell am compat enable OVERRIDE_MOUSE_TO_TOUCH <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_MOUSE_TO_TOUCH <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
FORCE_RESIZE_APP
Geçersiz kılma işleminin uygulandığı paketleri yeniden boyutlandırılabilir ve çoklu pencere moduna girebilir hale getirir. Tüm ekran boyutları için geçerlidir.
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
Uygulama manifestinde android:resizeableActivity özelliğini 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 başlıklı makaleyi inceleyin.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES özellik işaretini false olarak ayarlayın.
Geçersiz kılmayı ayarlamak için mülk 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 uygulamanın yeniden boyutlandırılabilmesini sağlamak 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şikliklerinde boyut uyumluluk moduna girmeye zorlar. Tüm ekran boyutları için geçerlidir.
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
Uygulama manifestinde hem android:resizeableActivity özelliğini hem de android.supports_size_changes meta veri işaretini false olarak ayarlayın ve bir yön veya en boy oranı kısıtlaması beyan edin.
Uygulamaları optimize etme
Yeniden boyutlandırıldığında düzgün çalışan tüm uygulamalarda android:resizeableActivity veya android.supports_size_changes, true olarak ayarlanmalıdır.
Diğer uygulamalar, yeniden boyutlandırıldığında düzgün çalışacak şekilde iyileştirilmelidir. android:resizeableActivity bölümüne bakın.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES özellik işaretini false olarak ayarlayın.
Geçersiz kılmayı ayarlamak için mülk 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 uygulamanın yeniden boyutlandırılamamasını sağlamak 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ı zorunlu kılan tüm geçersiz kılma işlemlerinin bekçisidir.
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
android:minAspectRatio değerini etkinlik veya uygulama düzeyinde ayarlayın.
Uygulamaları optimize etme
Uygulamanızda en boy oranı kısıtlamaları ayarlamayın. Uygulamanızın farklı ekran boyutlarını desteklediğinden emin olun. Uygulamanızın ekranda kapladığı alana göre farklı düzenleri desteklemek için pencere boyutu sınıflarını kullanın. Compose WindowSizeClass API ve View WindowSizeClass API'yi inceleyin.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
En boy oranı kısıtlaması belirtin veya özellik işaretini PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE olarak ayarlayın.false
Geçersiz kılmayı ayarlamak için mülk 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ılma işlemini 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.
OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY
Yalnızca dikey yönü destekleyen işlemler için belirli bir minimum en-boy oranını zorunlu kılan uygulama ayarlarını kısıtlar. Varsayılan olarak etkindir ve yalnızca OVERRIDE_MIN_ASPECT_RATIO da etkinse geçerli olur.
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Uygulamaları optimize etme
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Geçersiz kılmayı ayarlamak için mülk işaretleri
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Geçersiz kılmayı test etmek için adb komutları
Geçersiz kılma işlemini 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_SMALL
İşlemin minimum en-boy oranını küçük bir değere (4:3) ayarlar.
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Uygulamaları optimize etme
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Geçersiz kılmayı ayarlamak için mülk işaretleri
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Geçersiz kılmayı test etmek için adb komutları
Geçersiz kılma işlemini uygulamak için:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_SMALL <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_SMALL <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_MIN_ASPECT_RATIO_MEDIUM
İşlemin minimum en-boy oranını orta bir değere (3:2) ayarlar.
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Uygulamaları optimize etme
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Geçersiz kılmayı ayarlamak için mülk işaretleri
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Geçersiz kılmayı test etmek için adb komutları
Geçersiz kılma işlemini 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
İşlemin minimum en-boy oranını büyük bir değere (16:9) ayarlar.
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Uygulamaları optimize etme
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Geçersiz kılmayı ayarlamak için mülk işaretleri
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Geçersiz kılmayı test etmek için adb komutları
Geçersiz kılma işlemini 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ılmasını sağlar. Uygulamanın, bölünmüş ekran modunda mevcut alanın tamamını kullanmasına izin vererek sinemaskop oluşmasını önler.
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Uygulamaları optimize etme
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Geçersiz kılmayı ayarlamak için mülk işaretleri
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Geçersiz kılmayı test etmek için adb komutları
Geçersiz kılma işlemini 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_FULLSCREEN
Dikey tam ekranda mevcut ekran alanının tümünü kullanmak için minimum en-boy oranı geçersiz kılma işlemini devre dışı bırakır.
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Uygulamaları optimize etme
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Geçersiz kılmayı ayarlamak için mülk işaretleri
OVERRIDE_MIN_ASPECT_RATIO bölümüne bakın.
Geçersiz kılmayı test etmek için adb komutları
Geçersiz kılma işlemini 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 işlemiyle aynı sonucu nasıl elde edebilir?
activity:screenOrientation manifest özelliğini ayarlayın veya Activity#setRequestedOrientation() API'sini kullanın.
Uygulamaları optimize etme
Uygulamanız tüm yönleri desteklemelidir. Yön değişikliği, iki şekilde işlenebilen bir yapılandırma değişikliğidir: Sistemin uygulamayı yok edip 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 ViewModel kullanarak uygulama durumunu koruyabilirsiniz. Çok sınırlı durumlarda, yönü yalnızca küçük ekranlarda kilitlemeye karar verebilirsiniz. Ancak bu durumda, kullanıcının uygulamayı gerektiği gibi döndürmesine izin vermek kadar iyi ölçeklendirme yapılamayabilir. Android 12L ve sonraki sürümlerde, sabit yön cihaz yapılandırması tarafından geçersiz kılınabilir. Yapılandırma değişikliklerini işleme ve tüm yönleri destekleme hakkında daha fazla bilgi için Yapılandırma değişikliklerini işleme, ViewModel'e genel bakış ve Uygulama yönü telefonlarda kısıtlanmış ancak büyük ekranlı cihazlarda kısıtlanmamış başlıklı makaleleri inceleyin.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE özellik işaretini false olarak ayarlayın.
Geçersiz kılmayı ayarlamak için mülk 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ılma işlemini 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.
OVERRIDE_ANY_ORIENTATION_TO_USER
Uygulamanın, kullanılabilir ekran alanını doldurmasına olanak tanır. Uygulama manifestinde belirtilen tüm yön, yeniden boyutlandırılabilirlik ve en boy oranı kısıtlamalarını geçersiz kılar. Ayrıca Activity#setRequestedOrientation() veya Activity#getRequestedOrientation() için yapılan tüm çağrıları yoksayar.
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
android:screenOrientationmanifest özelliğini ayarlamayın veya özelliği"user"olarak ayarlayın.android:resizeableActivitymanifest özelliğinitrueolarak ayarlayın.Küçük ekranlarda,
android:resizeableActivity=falseile çoklu pencere modunu devre dışı bırakırken uygulamanın yeniden boyutlandırılmasını desteklemek içinandroid.supports_size_changesmeta veri işaretinitrueolarak ayarlayın.minAspectRatiovemaxAspectRatiodeğerlerini 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ında android:resizeableActivity özelliğini true olarak ayarlayarak uygulamanın yeniden boyutlandırılabilirliğini, çoklu pencere modunu ve tüm ekran en boy oranlarını destekleyin. Farklı ekran boyutlarını destekleme başlıklı makaleyi inceleyin.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
OVERRIDE_ANY_ORIENTATION sayfasına bakın.
Geçersiz kılmayı ayarlamak için mülk işaretleri
OVERRIDE_ANY_ORIENTATION sayfasına bakın.
Geçersiz kılmayı test etmek için adb komutları
Geçersiz kılma işlemini 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önlendirmeyi 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 işlemiyle aynı sonucu nasıl elde edebilir?
OVERRIDE_ANY_ORIENTATION sayfasına bakın.
Uygulamaları optimize etme
OVERRIDE_ANY_ORIENTATION sayfasına bakın.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
OVERRIDE_ANY_ORIENTATION sayfasına bakın.
Geçersiz kılmayı ayarlamak için mülk işaretleri
OVERRIDE_ANY_ORIENTATION sayfasına bakın.
Geçersiz kılmayı test etmek için adb komutları
Geçersiz kılma işlemini 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 işlemiyle aynı sonucu nasıl elde edebilir?
OVERRIDE_ANY_ORIENTATION sayfasına bakın.
Uygulamaları optimize etme
OVERRIDE_ANY_ORIENTATION sayfasına bakın.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
OVERRIDE_ANY_ORIENTATION sayfasına bakın.
Geçersiz kılmayı ayarlamak için mülk işaretleri
OVERRIDE_ANY_ORIENTATION sayfasına bakın.
Geçersiz kılmayı test etmek için adb komutları
Geçersiz kılma işlemini 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 işlemiyle aynı sonucu nasıl elde edebilir?
OVERRIDE_ANY_ORIENTATION sayfasına bakın.
Uygulamaları optimize etme
OVERRIDE_ANY_ORIENTATION sayfasına bakın.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
OVERRIDE_ANY_ORIENTATION sayfasına bakın.
Geçersiz kılmayı ayarlamak için mülk işaretleri
OVERRIDE_ANY_ORIENTATION sayfasına bakın.
Geçersiz kılmayı test etmek için adb komutları
Geçersiz kılma işlemini 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>
Note: 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 geçersiz kılma işlemlerini yalnızca kamera bağlantısı etkinken geçerli olacak şekilde sınırlandırır.
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
OVERRIDE_ANY_ORIENTATION sayfasına bakın.
Uygulamaları optimize etme
OVERRIDE_ANY_ORIENTATION sayfasına bakın.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
OVERRIDE_ANY_ORIENTATION sayfasına bakın.
Geçersiz kılmayı ayarlamak için mülk işaretleri
OVERRIDE_ANY_ORIENTATION sayfasına bakın.
Geçersiz kılmayı test etmek için adb komutları
Geçersiz kılma işlemini 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 sınırlandırır:
- Etkinlik tam ekranda gösteriliyor
- Kapsam dışında kalma bileşeni özelliği
PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDEetkin değil - Ekran için cihaz üreticisinin yön isteğini yoksayma ayarı etkinleştirildi.
- Ekranın doğal yönü yataydır.
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
Geçerli değil. Sorun, uygulama mantığında çözülmelidir.
Uygulamaları optimize etme
OVERRIDE_ANY_ORIENTATION sayfasına bakın.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE özellik işaretini false olarak ayarlayın.
Geçersiz kılmayı ayarlamak için mülk 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ılma işlemini 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 uyumluluk işlemi varken uygulama Activity#setRequestedOrientation() yöntemini çağırdığında uygulama yönünün güncellenmesini atlayan uyumluluk politikasını etkinleştirir.
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION özellik işaretini true olarak ayarlayın.
Uygulamaları optimize etme
OVERRIDE_ANY_ORIENTATION sayfasına bakın.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION özellik işaretini false olarak ayarlayın.
Geçersiz kılmayı ayarlamak için mülk 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ılma işlemini 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çiminde değilse uygulamanın bir saniye içinde iki kereden fazla Activity#setRequestedOrientation() çağrısı yapmasına yanıt olarak uygulamanın istenen yönünü yok sayan uyumluluk politikasını etkinleştirir.
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
Geçerli değil. Sorun, uygulama mantığında çözülmelidir.
Uygulamaları optimize etme
OVERRIDE_ANY_ORIENTATION sayfasına bakın.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED özellik işaretini
false olarak ayarlayın.
Geçersiz kılmayı ayarlamak için mülk 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ılma işlemini 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
Cihaz üreticileri tarafından bir görüntüleme alanı veya ekranın tamamı için etkinleştirilebilen, yön isteğini yoksayma davranışından paketleri hariç tutar.
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
Geçerli değil. Sorun, uygulama mantığında çözülmelidir.
Uygulamaları optimize etme
OVERRIDE_ANY_ORIENTATION sayfasına bakın.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
Devre dışı bırakılamaz. Uygulama, cihaz üreticisinin yön isteğini yoksayma ayarı etkinleştirilmiş bir cihazla uyumlu değilse geçersiz kılma işlemini devre dışı bırakmak 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 mülk işaretleri
Bu geçersiz kılma işlemi için özellik işareti yok.
Geçersiz kılmayı test etmek için adb komutları
Geçersiz kılma işlemini 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.
NEVER_SANDBOX_DISPLAY_APIS
Paketlerin, sinemaskop veya boyut uyumluluk modu etkinliği için hiçbir zaman Display API korumalı alanı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 işlemiyle aynı sonucu nasıl elde edebilir?
android:resizeableActivity manifest özelliğini true olarak veya android.supports_size_changes meta veri işaretini true olarak ayarlayarak etkinliklerin yeniden boyutlandırılabilir olduğunu belirtin.
Uygulamaları optimize etme
Tamamen yeniden boyutlandırılabilir olduğunu beyan eden uygulamalar, kullanıcı arayüzü öğelerini konumlandırmak için hiçbir zaman ekran boyutunu kullanmamalıdır. Uygulamanızı WindowMetrics sağlayan güncel API'lere taşıyın. Jetpack Compose kullanıyorsanız kullanıcı arayüzünü, uygulamanın mevcut ekranda kapladığı ekran alanına göre çizmek için WindowSizeClass API'den yararlanın. Pencere boyutu sınıflarını kullanma başlıklı makaleyi inceleyin.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
Devre dışı bırakılamaz. Desteği sonlandırılan API'lerden geçiş yapın.
Geçersiz kılmayı ayarlamak için mülk işaretleri
Bu geçersiz kılma işlemi için özellik işareti yok.
Geçersiz kılmayı test etmek için adb komutları
Geçersiz kılma işlemini 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.
ALWAYS_SANDBOX_DISPLAY_APIS
Pencere modundan bağımsız olarak paketlere her zaman Display API korumalı alanının uygulanmasını zorunlu kılar. Display API'leri her zaman uygulama sınırlarını sağlar.
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
android:resizeableActivity özelliğini false olarak veya android.supports_size_changes meta veri işaretini false olarak ayarlayarak etkinlikleri yeniden boyutlandırılamaz olarak tanımlayın.
Uygulamaları optimize etme
Tamamen yeniden boyutlandırılabilir olduğunu beyan eden uygulamalar, kullanıcı arayüzü öğelerini konumlandırmak için hiçbir zaman ekran boyutunu kullanmamalıdır. Uygulamanızı, desteği sonlandırılan API'lerden WindowMetrics sağlayan güncel API'lere taşıyın. WindowMetricsCalculator sayfasına bakın.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
Devre dışı bırakılamaz. Desteği sonlandırılan API'lerden geçiş yapın.
Geçersiz kılmayı ayarlamak için mülk işaretleri
Bu geçersiz kılma işlemi için özellik işareti yok.
Geçersiz kılmayı test etmek için adb komutları
Geçersiz kılma işlemini 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, aşağıdaki View API'lerini etkinlik sınırlarına göre korumalı alana almaya zorlar:
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
Cihaz ekranının sınırları ve cihaz ekranına göre ofsetler yerine uygulama penceresinin sınırlarını ve uygulama penceresine göre ofsetleri sağlayan API'leri kullanarak uygulama kodundaki sorunu çözün.
Uygulamaları optimize etme
Uygulamalar, sinemaskop ve çoklu pencere modunun uygulamaya uygulanma olasılığını göz önünde bulundurarak View API'lerini kullanmalıdır. WindowMetricsCalculator adresini inceleyin.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS özellik işaretini false olarak ayarlayın.
Geçersiz kılmayı ayarlamak için mülk 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ılma işlemini 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
Zorunlu döndürmeyi devre dışı bırakır. Bazı uygulamalarda kullanıcı deneyimini iyileştirir.
Uygulamalar, geçersiz kılma işlemiyle 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 rehberlik için Kamera vizörüne giriş ve Kamera uygulamanızda yeniden boyutlandırılabilir yüzeyleri destekleme başlıklı makaleleri inceleyin.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION özellik işaretini true olarak ayarlayın.
Geçersiz kılmayı ayarlamak için mülk 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ı
Zorunlu döndürmeyi kaldıran geçersiz kılma işlemini uygulamak için:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>
Zorunlu rotasyonun gerçekleşmesine izin veren geçersiz kılma işlemini 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_DISABLE_SIMULATE_REQUESTED_ORIENTATION
Kamera için istenen yönlendirme işleminin simülasyonunu devre dışı bırakır. Bazı uygulamalarda kullanıcı deneyimini iyileştirir.
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
PROPERTY_CAMERA_COMPAT_ALLOW_SIMULATE_REQUESTED_ORIENTATION ö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 rehberlik için Kamera vizörüne giriş ve Kamera uygulamanızda yeniden boyutlandırılabilir yüzeyleri destekleme başlıklı makaleleri inceleyin.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
Bu özellik, uyumluluk işlemini devre dışı bıraktığından dinamik ekran döndürme değişikliklerini, cihazın sensör yönünü, pencere ve önizleme boyutunu dikkate alarak kullanıcı deneyimini iyileştirebilirsiniz.
Geçersiz kılmayı ayarlamak için mülk işaretleri
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_SIMULATE_REQUESTED_ORIENTATION"
android:value="true|false"/>
Geçersiz kılmayı test etmek için adb komutları
İstenen yönü simüle etmeyi kaldıran geçersiz kılmayı uygulamak için:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_SIMULATE_REQUESTED_ORIENTATION <package>
İstenen yönün simüle edilmesini sağlayan geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_SIMULATE_REQUESTED_ORIENTATION <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH
Zorunlu döndürmeden sonra etkinlik yenilemeyi devre dışı bırakır. Yenileme işlemi uygulamalarda durum kaybına neden olduğunda kullanıcı deneyimini iyileştirir.
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH özellik işaretini false olarak ayarlayın.
Uygulamaları optimize etme
OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION bölümüne bakın.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH özellik işaretini true olarak ayarlayın.
Geçersiz kılmayı ayarlamak için mülk 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 yenilemeyi kaldıran geçersiz kılma işlemini uygulamak için:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>
Etkinlik yenilemeye izin veren geçersiz kılma işlemini 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
Uygulandığı paketlerin, kamera uyumluluğu zorunlu döndürme işleminden sonra onResume() → onStop() → onResume() yerine onResume() → onPause() → onResume() döngüsünü kullanarak etkinlik yenileme yapmasını sağlar.
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE özellik işaretini true olarak ayarlayın.
Uygulamaları optimize etme
OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION bölümüne bakın.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE özellik işaretini false olarak ayarlayın.
Geçersiz kılmayı ayarlamak için mülk 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ılma işlemini 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_CAMERA_LANDSCAPE_TO_PORTRAIT
Dikey kamera yönü, cihazın doğal yönüyle uyuşmadığında kamera çıkışının ters yöne kırpılmasını zorunlu kılar. Birçok uygulama bu durumu yönetemez ve resimleri uzatarak gösterir.
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT özellik işaretini true olarak ayarlayın.
Uygulamaları optimize etme
OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION bölümüne bakın.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT özellik işaretini false olarak ayarlayın.
Geçersiz kılmayı ayarlamak için mülk 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ırpma işlemini uygulayan geçersiz kılma işlemini uygulamak için:
adb shell am compat enable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>
Geçersiz kılma işlemini kaldırarak iç ön kamera kırpma özelliğini devre dışı bırakmak 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 yakalamayı zorunlu kılmak için createConfigForDefaultDisplay() API'yi kötüye kullandığında ve uygulama ekran paylaşımıyla değil, tam ekranla yakalanan bildirimlerin içeriğini ve pencereleme modundan bağımsız olarak tüm uygulamaları göstererek kullanıcı gizliliğini tehlikeye attığında uygulanır.
Uygulamalar, geçersiz kılma işlemiyle 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 vermelerini sağlayan varsayılan medya projeksiyonu davranışına (Android 14, API düzeyi 34'te createScreenCaptureIntent() ile uygulanır) izin verin. Alternatif olarak, createConfigForUserChoice() çağrısından döndürülen bir MediaProjectionConfig bağımsız değişkeniyle createScreenCaptureIntent(MediaProjectionConfig) çağrısı yapın.
Uygulamaları optimize etme
Kullanıcıların, medya yansıtma sırasında cihaz ekranının tamamını mı yoksa bir uygulama penceresini mi paylaşacaklarını seçmelerine izin verin. Bu, Android 14'ten itibaren varsayılan davranıştır.
Çoklu pencere modunu desteklemek için uygulamanızı yeniden boyutlandırılabilir (resizeableActivity="true") hale getirin.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
Kullanıcı gizliliği ciddi bir konu olduğundan uygulamanız bu geçersiz kılma işlemini devre dışı bırakamaz veya devre dışı bırakmayı seçemez.
Geçersiz kılmayı ayarlamak için mülk işaretleri
Yok.
Geçersiz kılmayı test etmek için adb komutları
Uygulamanın kısmi ekran paylaşımını devre dışı bırakma işlemini iptal eden (yani kısmi ekran paylaşımını etkinleştiren) geçersiz kılma işlemini uygulamak için:
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ılma işlemini 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_FOCUS
Bölünmüş ekran modunda odaklanılmamış uygulamalar için sahte odak göndermeyi etkinleştirir. Bazı oyun motorları, uygulama içeriğini çizmeden önce odağın gelmesini bekler. Bu nedenle sahte odak, uygulamaların devam ettirildiklerinde ve henüz odağa sahip olmadıklarında kararmasını önlemeye yardımcı olur.
Uygulamalar, geçersiz kılma işlemiyle 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şikliklerini iyi bir şekilde işliyorsa bu sorunu önleyebilirsiniz. Uyarlanabilir uygulama kalitesi yönergelerini uygulayarak uygulamanızın tüm cihaz form faktörlerini ve uygulama pencereleme modlarını desteklemesini sağlayın.
Unity oyun motorunu kullanıyorsanız 2019.4.40 veya sonraki bir sürüme yükseltip oyununuzu yeniden dışa aktarın. Android Player ayarlarında Yeniden Boyutlandırılabilir Pencere seçeneğini işaretli bırakın.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
PROPERTY_COMPAT_ENABLE_FAKE_FOCUS özellik işaretini false olarak ayarlayın.
Geçersiz kılmayı ayarlamak için mülk 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ılma işlemini 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.
OVERRIDE_EXCLUDE_CAPTION_INSETS_FROM_APP_BOUNDS
Pencereli görüntülemede etkinlik yapılandırmasındaki uygulama sınırlarından başlık çubuğu eklerini hariç tutar. Böylece, uygulama başlık çubuğu eklerini işlemediğinde üst veya alt uygulama kullanıcı arayüzü öğelerinin başlık çubuğu tarafından kapatılması ya da kırpılması önlenir.
Normalde, yapılandırmadaki uygulama sınırlarından başlık çubuğu ekleri hariç tutulmaz. Configuration.screenHeightDp ve uygulama sınırları, masaüstü pencereli görüntüleme başlık çubuğunun (simge durumuna küçültme, ekranı kaplama ve kapatma kontrollerini içeren ve yoğun içerik modunda bile görünür kalan başlık çubuğu) arkasındaki alan da dahil olmak üzere tam pencere yüksekliğini bildirir:
- Başlık çubuğu eklerini işlemeyen uçtan uca veya tam ekran uygulamalar: Uygulamanın düzen alanı tüm pencereyi kapsar. Bu nedenle, uygulama kullanıcı arayüzünü dengelemek için
WindowInsetssorgusu yapmazsa üstteki kontroller doğrudan başlık çubuğunun altına çizilebilir. - Altyazı çubuğu eklerinin sistem tarafından zorunlu olarak kullanıldığı uygulamalar: Sistemin, uygulamanın altyazı çubuğunun arkasında çizim yapmasını önlemek için uygulamanın kök görünümünü altyazı çubuğunun altına kaydırdığı uygulamalar. Uygulama, düzenini görüntü alanı boyutları yerine ayarlanmamış
Configuration.screenHeightDpveya uygulama sınırlarını kullanarak boyutlandırıyorsa başlık çubuğunun altından başlayan tam pencere yüksekliğinde bir düzen oluşturur. Bu durumda, alt kullanıcı arayüzü öğeleri pencerenin alt kenarının ötesine itilir ve dokunma hedefleri yanlış hizalanır.
Geçersiz kılma etkinleştirildiğinde sistem, başlık çubuğu yüksekliğini uygulama sınırlarından ve Configuration.screenHeightDp çıkarır. Böylece uygulamanın düzen alanı, başlık çubuğunun altındaki alanla hizalanır.
Uygulamalar, geçersiz kılma işlemiyle aynı sonucu nasıl elde edebilir?
Uçtan uca ekranı etkinleştirin. Aşağıdakilere göz atın:
- Compose: Pencere iç boşlukları hakkında
- Görünümler: Görünümlerde içeriği uçtan uca görüntüleme
- Yapılandırma: Davranış değişiklikleri: Android 15 veya sonraki sürümleri hedefleyen uygulamalar
Uygulamaları optimize etme
Uygulamanız uçtan uca ekranı etkinleştirirse bu sorunu önleyebilirsiniz.
Geçersiz kılma özelliğini devre dışı bırakma veya kapsam dışında kalmayı seçme
PROPERTY_COMPAT_ALLOW_EXCLUDE_CAPTION_INSETS özellik işaretini false olarak ayarlayın.
Geçersiz kılmayı ayarlamak için mülk işaretleri
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_EXCLUDE_CAPTION_INSETS"
android:value="true|false"/>
Geçersiz kılmayı test etmek için adb komutları
Geçersiz kılma işlemini uygulamak için:
adb shell am compat enable OVERRIDE_EXCLUDE_CAPTION_INSETS_FROM_APP_BOUNDS <package>
Geçersiz kılmayı kaldırmak için:
adb shell am compat disable OVERRIDE_EXCLUDE_CAPTION_INSETS_FROM_APP_BOUNDS <package>
Not: Komutlar, geçersiz kılmayı yalnızca geçici olarak uygular veya kaldırır.
Ek kaynaklar
-
Sanal cihaz sahibi, sanal cihazı yöneten güvenilir veya ayrıcalıklı bir uygulamadır. Sanal cihaz sahipleri, uygulamaları oluşturmak için sanal cihazlar oluşturur ve ardından uygulamaları kişisel bilgisayarlar, sanal gerçeklik cihazları veya araç bilgi-eğlence sistemleri gibi uzak cihazlara yansıtır. Sanal cihaz sahibi, telefon gibi yerel bir cihaz kullanıyordur. ↩