Android, yön veya renk özelliklerini belirten uygulamalar için bir uyumluluk modunu etkinleştirir. yeniden boyutlandırılabilirlik kısıtlamaları. Uyumluluk modu, büyük ekranlı cihazlar ve katlanabilir katlanabilir telefonlar.
Uygulama bazında geçersiz kılmalar, cihaz üreticilerinin değişiklik yapmasına olanak tanır. kullanıcı deneyimini iyileştirmek veya uygulamaların bozulmasını önlemek için uygulama davranışı cihazlar.
Referans cihazlar
Aşağıdaki cihazlarda, olağan dışı nedenlerden dolayı uygulama başına geçersiz kılma işlemleri gerekebilir uygulamalar tarafından iyi desteklenmeyen yapılandırmaları veya yapılandırmaları içerir:
- Tabletler: Pixel Tablet gibi bazı tabletlerin doğal yönü
yataydır. Cihaz, aşağıdaki durumlarda doğal yönde
Display#getRotation()
iadeSurface.ROTATION_0
. UygulamalarROTATION_0
cihazının dikey olduğunu varsayarsa Uygulama düzenleri ve kamera önizlemesi, cihaz ekranıyla uyuşmuyor olabilir. - Yatay katlanabilir cihazlar: Pixel Fold gibi bazı katlanabilir cihazlar katlanmış durumdayken dikey, ancak katlanmış durumdayken yatay yön. Uygulamalar katlanmamış yönün dikey olduğunu varsayarsa titreşiyorlar. döngüleri veya düzen sorunları olabilir.
- Katlanabilir katlanabilir telefonlar: Katlanmamış durumdaki kapak telefonları genellikle dikeydir Yön. Ancak telefonlar katlandığında genelde yatay yönde. Uygulamalar farklı özellikleri tanımlamalı ve bunlara yer vermelidir. ekranların yönünü değiştirebilirsiniz.
Sık karşılaşılan uyumluluk sorunları
Uygulamalar çoğunlukla uygulama yönü nedeniyle uyumluluk sorunları yaşıyor kısıtlamaları, yeniden boyutlandırma ve en boy oranı kısıtlamalarını, kamera önizleme yönü ve hatalı kullanılan API'ler.
Sinemaskop
Sinemaskop, uygulamayı ekranın ortasına veya büyük ekranlarda konumlandırır bir tarafa ya da diğerine kolayca taşıyabilirsiniz. Matlar (düz renkli çubuklar) ya da bulanık duvar kağıdı) kullanarak, kullanılmayan görüntüleme alanını yan veya üst taraflarda dokunun.
Sinemaskop genellikle büyük ekranlı cihazlarda, boyutları ve Cihaz ekranının en boy oranı genellikle standart ekran en boy oranından farklıdır cihazlar için tasarlandı.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/letterboxing.png?authuser=6&hl=tr)
Şekil 1. Dikey yönle kısıtlanmış uygulama, yatay tablette sinemaskop efektiyle gösterilir ve katlanabilir.
Sorun
Uygulama, düzeltmeye devam ettiği için tüm ekran yapılandırmalarını desteklemiyor yönü veya en boy oranı sabit olmalı ya da yeniden boyutlandırılamaz.
Uygulamanın yönünü ve yeniden boyutlandırılabilirliği kontrol eden yapılandırma ayarları şunları içerir: takip etmek için:
screenOrientation
: Şu öğe için sabit yönü belirtir: bir uygulamadır. Uygulamalar ayrıca çalışma zamanında yön ayarı içinActivity#setRequestedOrientation()
.resizeableActivity
: Sistemin şunları yapıp yapamayacağını gösterir. uygulamaları çeşitli boyutlardaki pencerelere sığacak şekilde yeniden boyutlandırır. Android 11'de (API düzeyi) 30) ve altı, uygulamaların çoklu pencere modunu destekleyip desteklemediğini belirtir. Şu tarihte: Android 12 (API düzeyi 31) ve sonraki sürümler, uygulamaların küçük ekranlarda çoklu pencere modu (kompakt pencere boyutu sınıfı). Android 12 ve sonraki sürümlerde uygulamalar büyük ekranlarda çoklu pencere modunu (orta veya genişletilmiş pencere) destekler beden sınıfı) ekleyin.maxAspectRatio
: Maksimum en boy oranını belirtir uygulama tarafından desteklenir. YalnızcaresizeableActivity
numarasıfalse
olarak ayarlanmış uygulamalar şunları yapabilir:maxAspectRatio
ayarla.minAspectRatio
: Minimum en boy oranını belirtir uygulama tarafından desteklenir. YalnızcaresizeableActivity
numarasıfalse
olarak ayarlanmış uygulamalar şunları yapabilir:minAspectRatio
ayarla.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/letterboxing_issue.png?authuser=6&hl=tr)
Dikey yönle sınırlandırılan uygulama yatay cihazlarda kullanılamaz.
Optimizasyon
Uygulama tüm cihaz ve çoklu pencere modu ekranlarını desteklemelidir ve boyutları kullanın. Tüm yönü ve sabit en boy oranlarını kaldır kısıtlamalara neden olabilir.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/letterboxing_optimization.png?authuser=6&hl=tr)
Uygulama tüm cihaz yönlerini destekliyor.
Uyumluluk için geçici çözüm
Sabit yönlü veya sabit en boy oranına sahip bir uygulama, Uygulama pencere boyutunu veya yönünü (Android) doğrudan desteklemiyorsa devamlılığı korumak için uygulamanın sinemaskop biçimine ulaşmasını sağlar.
Android 12 (API düzeyi 31) sürümünden başlayıp 12L ile (API düzeyi 32) devam ediyorsa Platform, sinemaskoplu uygulamalara çeşitli geliştirmeler uyguluyor. Cihaz üreticiler, kullanıcı arayüzü geliştirmelerini uygular. Herhangi bir ek işlem yapmanız gerekmez en iyi uygulamaları paylaşacağız.
Android 12'de (API düzeyi 31) aşağıdaki estetik geliştirmeleri kullanıma sunulmuştur: cihaz üreticileri tarafından yapılandırılabilir:
- Yuvarlak köşeler: Uygulama penceresinin köşeleri daha zarif bir görünüme sahip.
- Sistem çubuğu şeffaflığı: yarı şeffaf olduğundan, çubuklardaki simgeler her zaman ekranın sinemaskop arka planı.
- Yapılandırılabilir en boy oranı: Uygulamanın en boy oranı ayarlanabilir uygulamanın görünümünü iyileştirmek için.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/enhanced_letterboxing.png?authuser=6&hl=tr)
Şekil 2. Kullanıcı arayüzü geliş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 ekranın sol veya sağ tarafına doğru konumlandırarak kolaylaştırır.
Yeniden tasarlanmış yeniden başlatma düğmesi: Cihaz üreticileri yeniden başlatma işlemini yapabilir boyut uyumluluk modu düğmesi yeni bir görünüm kullanıcı tarafından daha iyi tanınmasını sağlar.
Android 13 (API düzeyi 33), sinemaskoplu uygulama veya sinemaskop efektini bölünmüş ekran moduna ekleme:
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/enhanced_letterboxing_user_dialog.png?authuser=6&hl=tr)
Şekil 3. Kullanıcı eğitimi iletişim kutusu içeren sinemaskop uygulama.
Boyut uyumluluk modu
Boyut uyumluluk modu, yeniden başlatma kontrolü içeren sinemaskop efektidir. İlgili içeriği oluşturmak için kullanılan kontrolü, kullanıcıların uygulamayı yeniden başlatmasını ve ekranı yeniden çizmesini sağlar. Android çağırır boyut uyumluluk modunu kontrol edin. Bir etkinliğiyle uyumlu olmayan bir görüntülü reklam kapsayıcısına taşınır. sistem, cihaz ekranını dolduracak şekilde uygulamayı yeniden ölçeklendirebilir. en az bir boyut ekleyin.
Boyut uyumluluk modunu tetikleyebilecek cihaz yapılandırması değişiklikleri şunları içerir: şu:
- 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 uyumluluğu modu genellikle şuralarda kısıtlanmış etkinlikler için geçerlidir: en boy oranına sahip olduğundan (ya da sistem tarafından belirlendiğinde) yeniden boyutlandırılamaz.
Uygulamanızın yeniden boyutlandırılabilir olduğu kabul edilir ve herhangi bir boyuta yerleştirilmez uyumluluk modu - aşağıdaki ölçütlerden herhangi birini karşılıyorsa:
resizeableActivity="true"
ile yeniden boyutlandırılabilir- Pencere içinde pencere (PIP) modunu destekler
- Yerleştirilmiş
- Her bir uygulama için
FORCE_RESIZE_APP
geçersiz kılma ayarı şunlar tarafından uygulanmış: cihaz üreticisi (uygulama tarafından ayarlanan özellikler yoksayılır)
Uygulamanız koşullardan hiçbirini karşılamıyorsa ifade etmiyorsa ve boyut uyumluluk moduna yerleştirilebilir.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/size_compatibility_mode_issue.gif?authuser=6&hl=tr)
Çoklu pencere modunda, yeniden boyutlandırılamayan uygulama kilitleniyor.
Optimizasyon
Uygulama tüm ekran boyutlarını desteklemelidir. Şu ayarı yaparak uygulamanızı yeniden boyutlandırılabilir hale getirin:
<activity>
öğesinin android:resizeableActivity
özelliği
veya <application>
öğesini true
uygulama manifest'inde yer alır. Uygulamanız için duyarlı/uyarlanabilir düzenler tasarlayın. Daha fazla
bkz.
Farklı ekran boyutlarını destekler ve Destek
Çoklu pencere moduna geçmelisiniz.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/size_compatibility_mode_optimization.gif?authuser=6&hl=tr)
Uygulama tüm pencere boyutlarında çalışır.
Uyumluluk için geçici çözüm
Android, sistem tarafından belirlenen "Sinematik" uygulamasının görüntüsü, uygulamanın boyutu küçültülerek görüntüleme penceresi en az bir boyutta olmalıdır. Sistemde bir yeniden başlatma kontrolü görüntüleniyor Bu da uygulama sürecini yeniden oluşturur, etkinliği yeniden oluşturur ve görüntüleyin. İşlemlere ve ileti dizilerine genel bakış başlıklı makaleyi de inceleyin.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/size_compatibility_mode_workaround.gif?authuser=6&hl=tr)
Yalnızca dikey modda kullanılabilen yatay yönde sinemaskoplu, yeniden başlatma kontrolüyle yeniden ölçeklendirilen uygulama.
Titreyen döngüler
Bir uygulama tüm ekran yönlerini desteklemediğinde tekrar tekrar yapılandırma değişikliği olduğunda yeni yönler isteyerek ekranın titreşmesine veya uygulamanın sonsuz dönmesine neden olan sonsuz döngü.
Sorun
Android 12 (API düzeyi 31) ve sonraki sürümlerde cihaz üreticileri yapılandırabilir
uygulamalar tarafından belirtilen yön kısıtlamalarını yoksayıp
uyumluluk modlarını zorunlu kılma. Örneğin, katlanabilir bir cihaz
etkinliğin android:screenOrientation="portrait"
cihazın yatay tablet boyutunda görüntülendiğinde
iç ekranda görünür.
Bir uygulamanın yön kısıtlamaları yok sayılırsa uygulama programatik olarak
şunu çağırarak yönünü ayarlayın:
Activity#setRequestedOrientation()
. Görüşme
Uygulama, yapılandırma değişikliklerini gerçekleştirmiyorsa uygulamanın yeniden başlatılmasını tetikler (bkz.
Yapılandırma değişikliklerini işleme).
uygulamanın yön kısıtlamaları tekrar yoksayılır, uygulama tekrarlar
setRequestedOrientation()
çağrısı, uygulamanın yeniden başlatılmasını tetikler ve
kendi kendine devam eden bir döngüde devam eder.
Bununla karşılaşabileceğiniz bir başka yol da
doğal yön (normal yön
Android tarafından belirlenen) ekranı yatay (yani
Display#getRotation()
iade
Cihazın yatay bir görünümü varken Surface.ROTATION_0
oranı). Uygulamalar geçmişte, Display.getRotation() =
Surface.ROTATION_0
cihazının dikey yönde olduğu anlamına geldiğini varsayıyordu. Ancak bu, doğru bir değer değildir
Örneğin, bazı katlanabilir cihazların iç ekranlarında ve
kullanıyor.
Katlanabilir iç ekranda yatay yönde bulunan bir uygulama,
ekran döndürme, ROTATION_0
değerini alma, doğal yönü kabul et
ve dikey bir pozisyonda
setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
Uygulama düzenini yeniden yapılandırmak için )
kullanın. Uygulama yeniden başlatıldıktan sonra (yatay modda)
ekran yönünü tekrar kontrol edebilir ve tablodaki
ROTATION_0
, telefon et
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
ve
sonsuz döngüye devam edeceğim.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/flickering_loops_issue.gif?authuser=6&hl=tr)
Dikey ekrandaki yalnızca yatay modda kullanılabilen uygulama, Activity#setRequestedOrientation()
numaralı telefona tekrarlanan çağrılar yapıyor.
Optimizasyon
Uygulamalar aşağıdakileri yapmamalıdır:
Activity#setRequestedOrientation()
ile varsayılan yönü ayarlayın yön isteği şöyle olabileceğindenonCreate()
aktivitesi yöntemi: işlenmemiş yapılandırma değişiklikleri tarafından beklenmedik bir şekilde tetiklendi- 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. Örneğin:
Display#getRotation()
olarak, birFoldingFeature
veya kullanımdan kaldırılan API'ler.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/flickering_loops_optimization.gif?authuser=6&hl=tr)
Uygulama, yapılandırma değişikliğini yapar, yön kısıtlamaları olmadığından titreyen bir döngüye girmez.
Uyumluluk için geçici çözüm
Android, aşağıdaki durumlarda Activity#setRequestedOrientation()
numaralı telefona yapılan çağrıları yoksayar
durumlar:
Etkinlik, önceki bir yönteme yapılan çağrıdan zaten yeniden başlatıldı. kamera uyum kuvveti döndürme işlemi etkinleştirildi (bkz. Kamera önizleme bölümüne bakın).
Cihaz üreticileri bu davranışı,
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION
.Etkinlik, bir saniyede ikiden fazla yön isteği gönderdi. bir döngü olduğunu belirtir. Android, döngüdeki iki istekten birini uygulama görüntüleme alanını en üst düzeye çıkaran
Cihaz üreticileri bu davranışı,
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
.
Kamera önizleme
Kamera uygulamalarının kamera önizlemesinin (veya vizörünün) hizası yanlış ya da bozuk olabilir ve katlanabilir ekranlarda 360 derece görünür.
Sorun
Android Uyumluluk Tanımlama Belgesi'nde, kamera görüntü sensörü "yöntemi olması ve kameranın uzun boyutunun ekranın uzun boyutuyla uyumlu olacaktır."
Uygulamalar genellikle cihaz yönünün ve kamera sensörü yönünün portre - standart cep telefonlarında bu makul bir varsayımdır. Ancak kamera sensörleri ile tabletlerin ve dizüstü bilgisayarların doğal yönünün gösteriyoruz. Ayrıca katlanabilir cihazlar gibi yeni form faktörlerinde birden fazla doğal yönleri ve çeşitli yönlerde birden fazla kamera sensörü.
Uygulamanın beklemediği bir kamera yönüyle etkinlik başlatma farklı kameralar veya cihaz ekranları (katlanabilir cihazlar için) arasında geçiş yapmak, bozuk veya bozuk bir kamera önizlemesi.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/camera_preview_issue.png?authuser=6&hl=tr)
Katlanabilir büyük ekranda yanlış hizalı ve bozuk kamera önizlemesi.
Optimizasyon
Kamera uygulamaları, cihaz yönünü ve kamerayı doğru şekilde tanımlayıp yönetmelidir sensör yönünün doğru hizalanmış ve ölçeklendirilmiş bir kamera önizlemesi sunmak üzere Uygulamalar cihaz dönüşü, sensör dönüşü ve ekran ya da pencereyi hesaplamalıdır. en boy oranına bakabilir ve sonuçları kamera önizlemesine uygulayabilirsiniz. Ayrıntılı yardım için Kamera önizlemesi ve Kamera tanıtımı Vizör.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/camera_preview_optimization.png?authuser=6&hl=tr)
Kamera önizlemesi tüm cihaz yönlerinde doğru şekilde hizalandı ve ölçeklendirildi.
Uyumluluk için geçici çözüm
Display#getRotation()
olduğunda cihaz doğal yöndedir
Surface.ROTATION_0
değerini döndürür. Sistem,
CameraCharacteristics.SENSOR_ORIENTATION
cihazın doğal yönünden uzaklaşır. Android, dikey pencereyi hizalar
cihazın doğal yönünün kullanıldığı, dikey
çoğu uygulamanın beklediği şeydir. Android,
Sensör yönü yatay, kamera önizlemesi ise dikey olmalıdır. Belirli
geçici çözümler şunları içerir:
Dikey olarak kısıtlanmış uygulamalar için kamera önizlemelerini döndürmeye zorla: Uygulamalar dikey yönle kısıtlanmış cihazın doğal yönünün ayarlanması gerekir ve kamera sensörünün yönü dikey olmalıdır. Ancak Android 12'de (API düzeyi 31) ve sonraki sürümlerde, cihaz üreticileri yön spesifikasyonunu yoksayar.
Dikey modu kısıtlanmış bir uygulama kameraya bağlandığında Android, uygulamanın dikey penceresini doğal ekranla hizalamak için uygulamayı döndürür cihazın yönünü değiştirebilirsiniz.
Bazı tabletlerde (referans cihazlara bakın), uygulama tam ekran dikey pencereye döndürülür. doğal yönünü değiştirebilirsiniz. Uygulama zorla sonrasında tüm ekranı kaplar sağlayabilir.
Tablet: Dikey açıdan kısıtlanmış bir uygulamayı döndürmeyi zorunlu kılın.
Katlanabilir cihazların yatay iç ekranında (bkz. referans cihazlarda), yalnızca dikey yönlü etkinlikler doğal yönüyle uyumlu bir şekilde ayarlamak için yatay çizgi kullanın. Uygulama kuvvetin döndürülmesinden sonra sinemaskop.
Katlanabilir: Dikey kısıtlı uygulamayı döndürmeye zorlayın Uygulama aynı zamanda sinemaskopludur.
İç ön kamera kırpma: Bazı cihazlardaki ön kamera sensörü Katlanabilir cihazlar yatay yönde. Cihazı döndürmeye zorlamaya Kamera önizlemesi, katlanabilir iç ekranda yer alır. Android de iç ön tarafı kırpar. Sensörün tersi bir görüş açısı yakalaması için kameranın görüş alanı (yatay) Yönü.
Kamera önizlemelerini zorla yenile: Sistem, etkinliği döngüye alır yöntemleri
onStop()
veonStart()
(varsayılan olarak) veyaonPause()
veonResume()
( OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE uygulama başına geçersiz kılma) kullandığınızdan emin olmak için, düzgün şekilde gösterebilir.En boy oranı ölçeklendirme: Sistem, tablodaki en boy oranını dinamik olarak değiştirir. döndürülmüş kamera önizlemesini daha yüksek bir minimum en boy oranına getirir. Bu, Kamera önizlemesinin doğru şekilde ölçeklendirilmesini sağlar.
Uygulamalar kamera önizlemesini yapıyorsa uygulama geliştiriciler bu geçici çözümleri geçersiz kılabilir sağlayabilir. Uygulama bazında geçersiz kılmalar konusuna bakın.
Yaygın olarak hatalı kullanılan API'ler
Android'e çoklu pencere modu ve gibi yeni API'lerle de değiştirilmiştir. Eski API'lerin yerini tüm ekran boyutları ve cihaz biçimleri için çalışan güncel API'ler faktörleri olur. Ancak desteği sonlandırılmış API'ler geriye dönük olarak kullanılabilir uyumluluk.
Bazı View
API'leri, her zaman iyi sonuç vermeyen özel amaçlar için tasarlanmıştır.
anlaşıldığından emin olmalısınız.
Sorun
Geliştiriciler desteği sonlandırılan Display
API'lerini kullanmaya devam ediyor ve
API'ler, cihaz görüntüleme alanı sınırları yerine uygulama sınırlarını döndürür. Ya da geliştiriciler
genel görüntülü reklam metriklerini almak için yanlışlıkla özel amaçlı görünüm API'lerini kullanma.
Sonuç, uygulama penceresinden sonra kullanıcı arayüzü öğeleri yeniden konumlandırılırken yapılan yanlış hesaplamalar
etkinlikleri yeniden boyutlandırarak düzen sorunlarına yol açabilir.
Desteği sonlandırılmış ve yaygın şekilde hatalı kullanılan Görüntülü API'ler:
Daha fazla bilgi için bkz. Çoklu pencere modunu destekleyin.
Hatalı görünüm API'leri:
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/misused_APIs_issue.png?authuser=6&hl=tr)
Desteği sonlandırılmış API, uygulama sınırlarını yanlış hesaplıyor. Uygulama içeriğinin ekrandan çıkması.
Optimizasyon
Kullanıcı arayüzü öğelerini konumlandırmak için hiçbir zaman fiziksel görüntü boyutuna güvenmeyin. Verilerinizi taşıyın
aşağıdakiler de dahil olmak üzere WindowMetrics
'e dayalı olarak uygulamayı API'lere
WindowManager
API'ler:
Platform:
Jetpack:
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/misused_APIs_optimization.png?authuser=6&hl=tr)
API, uygulama aralığı metriklerini doğru şekilde hesaplar.
Uyumluluk için geçici çözüm
İki geçersiz kılma ayarı, desteği sonlandırılmış Display
API'lerini ve hatalı kullanılan View
API'leri şu amaçlarla düzenler:
uygulama sınırlarını döndürün:
Display
için ALWAYS_SANDBOX_DISPLAY_APIS
API'ler OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS
View
API için ALWAYS_SANDBOX_DISPLAY_APIS
, varsayılan olarak
uygulamalar arasında geçiş yapın.
Şeffaf etkinlikler
Şeffaf etkinlikler, şeffaf arka plan stillerinin bir sonucudur. örnek:
<style name="Transparent" parent="AppTheme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
Diyaloglarla alakalı temalar (ör. Theme.MaterialComponents.Dialog
)
gösteren stillere yer verilmelidir.
Şeffaf etkinlikler mevcut görüntüleme alanının tamamını kapsamaz. Bu durum, farklı cihazlara göre değişebileceğinden, bunları yönetmek zor olabilir. Cihaz döndürme, cihazı katlama ve açma gibi yapılandırma değişiklikleri çoklu pencere moduna girer.
Sorun
Şeffaf bir etkinlik, ilk opak etkinliğin sınırlarına uymalıdır şeffaf etkinliğin altında yer alır. Ancak opak bir izin iletişim kutusu açan etkinlik trampolin (başka bir etkinliği başlatan ve ardından kaybolan etkinlik); ve bu yüzden sistem, trambolin etkinliğinin sınırlarını belirleyemez, şeffaf izin iletişim kutusu etkinliğini başlattı.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/transparent_activities_issue.png?authuser=6&hl=tr)
Etkinlik Trambolin'den başlatıldığı için iletişim kutusu yanlış konumlandırıldı.
Optimizasyon
Şeffaf etkinlikler, kısıtlamalarını en üst opaklıktan devralır etkinliği gösterilir. Opak etkinliği, şeffaf etkinliğin tüm yaşam döngüsü için kullanılabilir yok etme sürecidir. Bu nedenle, şu kaynaklardan gelen izin isteklerini başlatmayın: trambolin aktiviteleri.
Trambolin etkinliği bir izin isteği başlatırsa kullanıcı görebileceğimiz için, trambolin etkinliği kullanıcı iletişim kutusuna yanıt vermeden önce yok olduğundan ve iletişim kutusu etkinliğinin boyutları ve konumu hesaplanmış olabilir sağlayabilir.
Uygulamalar her zaman kalan etkinliklerden izin istekleri başlatmalıdır. Kullanıcı izin kararı verene kadar görünür.
Yuvarlatılmış köşeler
Bir etkinlik, arka planı belirten bir stil nedeniyle şeffaf olabilir ya da etkinliğin içeriğinin mevcut kaynakları doldurmaması kullanabilirsiniz. Şeffaf bir etkinlik mevcut görüntüleme alanını doldurursa olarak yapılandırıldığında, sistem etkinliğe otomatik olarak yuvarlatılmış köşeler uygular cihaz üreticisi tarafından gerçekleştirilmesi gerekir. Ancak şeffaf bir etkinlik (ör. iletişim kutusu) boş alanı doldurmazsa, köşelerin yuvarlanıp uygulanmayacağı.
İzin iletişim kutuları, iletişim kutusu düzen genellikle yerine LayoutParams.WRAP_CONTENT LayoutParams.MATCH_PARENT
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/transparent_activities_optimization.png?authuser=6&hl=tr)
Görünür başlatma etkinliği üzerinde doğru şekilde yerleştirilmiş köşeleri yuvarlanmış iletişim kutusu.
Uyumluluk için geçici çözüm
İletişim kutusu etkinlikleri başlatan etkinlikleri, kullanıcı aşağıdaki işlemleri yapana kadar görünür tut: yanıt verdi.
Sistem, şeffaf bir etkinliğin etkinlik yığınındaki şeffaf etkinliğin altındaki ilk opak etkinlik, şunlarla ilgili kısıtlamalar dahil:
- Boyut uyumluluk modu
- 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 girer.
Sorun
Unity bir Resizable Window
ekledi
seçeneğini Unity 2019.4'te kullanıma sunmayı planlıyoruz. Ancak,
ilk uygulama, e-postadaki etkinlik yaşam döngüsüne
çoklu pencere modunu doğru şekilde ayarlamanıza neden olabilir.
Uygulama odağı kaybolduğunda oynatmayı askıya almak için UnityPlayer. Oynatıcı, bir
veya oyunun donmuş son karesi olabilir. Oyun yalnızca şu durumlarda devam ettirilir:
Kullanıcı ekrana dokundu. Unity motorunu kullanan birçok uygulama bu sorunla karşı karşıya kalır ve
çoklu pencere modunda siyah pencere olarak oluşturulur.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/unity_games_issue.gif?authuser=6&hl=tr)
Oyun, çoklu pencere modunda odağı kaybediyor ve siyah pencere olarak oluşturuluyor.
Optimizasyon
Unity'yi 2019.4.40 veya sonraki bir sürüme yükseltin ve oyununuzu yeniden dışa aktarın. Şunu sakla:
Resizable Window
seçeneği
Android Oynatıcı ayarları (aksi durumda)
Oyun tamamen görünür olsa da odakta değilken oyun duraklıyor
çoklu pencere moduna girer.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/unity_games_optimization.gif?authuser=6&hl=tr)
Oyun, odakta değilken bile çoklu pencere modunda içeriği doğru şekilde oluşturuyor.
Uyumluluk için geçici çözüm
Cihaz üreticileri
OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS
bir uygulamaya sahte odaklanma etkinliği sağlamak için uygulama bazında geçersiz kılma
çoklu pencere moduna girer. Geçersiz kılma, etkinliğin içeriği yeniden çizmesini ve
olmamalıdır.
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 şu kaynaklardan yararlanabilirsiniz:
- Cihaz akışı: Uygulamanızı üretim cihazlarında (ör. referans cihazları) inceleyin (bkz. Firebase tarafından desteklenen Android Cihaz Akışı
- Android Studio Hedgehog'daki emülatörler: İçerik üretme hakkında bilgi için emülatörleri için bkz. Sanal cihazlar oluşturma ve yönetme
- Android Studio yeniden boyutlandırılabilir emülatörü: Sanal ortama erişim hakkında bilgi için cihazlar için Android Emülatör'de uygulama çalıştırma konusuna bakın.
Sinemaskoplu
Her etkinliğin, uygulamanın kullanabildiği tüm görüntüleme alanını kullanabildiğini doğrulayın. Önce 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:
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 başarılı olana ve uygulamanızın ve etkinlikler, uygulamanın kullanabildiği görüntüleme alanının tamamını kaplar. Uygulamanızı test etme tüm cihaz türlerinde tutarlı bir davranışa sahip olmasını sağlayın.
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,
Örneğin, FORCE_RESIZE_APP
geçersiz kılması,
uygulamanın boyut uyumluluk modunu atlamasını ve uygulamayı ekrana sığacak şekilde yeniden boyutlandırmasını sağlayan sistem
resizeableActivity="false"
, tüm boyutları
uygulama manifest dosyasında belirtilmiştir.
Cihaz üreticileri, şurada belirli uygulamalara (veya tüm uygulamalara) geçersiz kılma işlemleri uygular cihazlardır. Android 14 (API düzeyi 34) ve sonraki sürümlerde kullanıcılar cihaz ayarları üzerinden uygulamalara geçersiz kılmalar 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 en boy oranını değiştirmesine olanak tanır. uygulamaların oranı. Örneğin, referans cihazlarda menüyü uygulayabilirsiniz.
Menü, cihazda yüklü tüm uygulamaların listesini içerir. Kullanıcılar, uygulamada en boy oranını 3:4, 1:1, tam ekran veya başka bir değere ayarlayın cihaz üreticisi tarafından yapılandırıldığından emin olun. Kullanıcılar, en boy oranını şu şekilde de sıfırlayabilir: uygulama manifestinde belirtilen uygulama varsayılanı.
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ılmayı devre dışı bırakmak için özelliği ekleyin manifest dosyanıza 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ı Sayısı uygulamanın en boy oranı geçersiz kılınamaz.
Ö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ğunun tam ekran seçeneğini devre dışı bırakmak için özelliği uygulama manifest dosyanıza ekleyin ve değeri
false
:<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ına gidin. Kullanıcılar, tam ekran geçersiz kılma ayarını en iyi şekilde yararlanabilirsiniz.
Bu özelliğin
true
olarak ayarlanmasının herhangi bir etkisi yoktur.
Uygulamanızı tüm ekranlar için optimize edin: Şurada en boy oranı kısıtlamaları belirlemeyin: en iyi şekilde yararlanabilirsiniz. Farklı alanları desteklemek için pencere boyutu sınıflarını kullanın mevcut görüntüleme alanına göre düzenler.
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ı bir varsayılan olarak kullanabilirsiniz.
Uygulamalar, çoğu geçersiz kılma işleminin kapsamı dışında kalmayı seçebilir (Uygulama bazında geçersiz kılma tablosunu inceleyin).
Uygulamanızı, uyumluluğu kullanarak geçersiz kılmaları etkinleştirerek veya devre dışı bırakarak test edebilirsiniz çerçevesini (Uyumluluk çerçevesi araçları) inceleyin. Etkinleştirildiğinde, geçersiz kılmalar uygulamanın tamamında geçerli olur.
Android Debug Bridge (adb) kullanarak geçersiz kılmaları devre dışı bırakabilir ve hangi geçersiz kılmaların uygulamanız için geçerli olduğunu belirleyebilirsiniz.
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 cihazlarda hangi geçersiz kılmaların geçerli olduğunu kontrol edin. uygulamanız:
adb shell dumpsys platform_compat | grep <package name>
Aşağıdaki tabloda, geçersiz kılmaların kullanılabilir olduğu ve bu geçersiz kılma işlemlerinin nasıl yapılacağıyla ilgili yönergeler yer almaktadır Uygulamanızı, geçersiz kılmalara bağlı kalmayacak şekilde optimize edin. Ekleyebileceğiniz: mülk işaretlerini uygulama manifestinize ekleyerek devre dışı bırakabilirsiniz.
Uygulama bazında geçersiz kılmalar | |||
---|---|---|---|
Tür | Ad | Kimlik | 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_TAM EKRAN | 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. |
KULLANICININ_OVERRIDE_ANY_ORIENTATION_KİTLESİ | 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 | HİÇBİR ZAMAN_KODU KUTUSU_DISPLAY_APIS | 184838306 | Görüntülü reklam API'lerinin davranışının değiştirilmesini engeller. |
HER ZAMAN_KUM KUTUSU_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_ODAK | 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. Şunu yapmıyor: uygulamanın çoklu pencere moduna yerleştirilip yerleştirilemeyeceğini değiştirir, ancak Ekran yeniden boyutlandırıldığında boyut uyumluluk moduna girmeden yeniden boyutlandırabilirsiniz.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
Uygulama manifest'inde
android:resizeableActivity
özelliğini true
veya
yeniden boyutlandırmayı destekler. Bu işlem sırasında çoklu pencere modunu devre dışı bırakırken
android:resizeableActivity=false
, android.supports_size_changes
ayarını yapın
meta veri işaretini true
olarak ayarlayın.
Uygulamaları optimize etme
Uygulamaların tüm ekran boyutlarına ve standartlara uymasını sağlamak için duyarlı/uyarlanabilir düzenler kullanın. en boy oranları. Görüntüleyin Farklı ekran boyutlarını destekleyin.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES
mülk bayrağını şuna ayarla:
false
.
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 zorlar ve yapılandırma değişikliklerinde boyut uyumluluk moduna girme
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
Hem android:resizeableActivity
hem de
Uygulama manifest'inde false
olarak android.supports_size_changes
meta veri işareti,
ve yön veya en boy oranı kısıtlaması beyan edin.
Uygulamaları optimize etme
Yeniden boyutlandırıldığında iyi davranan tüm uygulamalar
android:resizeableActivity
veya android.supports_size_changes
, true
olarak ayarlandı.
Diğer uygulamalar, yeniden boyutlandırıldığında iyi çalışacak şekilde geliştirilmelidir. Görüntüleyin
android:resizeableActivity değerine ayarlayın.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES
mülk bayrağını şuna ayarla:
false
.
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ına sahip olabilir. Pencere boyutu sınıflarını kullan
yardımcı olan farklı düzenleri desteklemek için
tıklayın. Compose WindowSizeClass
API'yi inceleyin
ve WindowSizeClass
API'yi görüntüleyin.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
En boy oranı kısıtlaması belirtin veya mülk işaretini ayarlayın
PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE
- false
.
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
Etkinlikler için belirli bir minimum en boy oranını zorlayan uygulama ayarlarını kısıtlar
yalnızca dikey yönde. Varsayılan olarak etkindir ve yalnızca geçerli olur
(OVERRIDE_MIN_ASPECT_RATIO
politikası da etkinleştirilmişse)
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. Uygulamalara, Bölünmüş ekran modunda, sinemaskop efektiyle uğraşmayın.
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
Tümünü kullanmak için dikey tam ekranda minimum en boy oranı geçersiz kılma ayarını devre dışı bırakır kullanılabilir.
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 yoldan biriyle yapılabilir:
uygulamayı kaldırma ve yeniden oluşturma ya da yapılandırma değişikliklerini yönetme
kendiniz. Yapılandırma değişikliklerini kendiniz yönetiyorsanız uygulama durumu
ViewModel
kullanılarak saklanmaktadır. Çok nadir durumlarda,
yalnızca küçük ekranlarda çalışır. Ancak bunu yaptığınızda, orijinal ekran
Kullanıcının uygulamayı gerektiği gibi döndürmesine izin vermek. Android 12L ve sonraki sürümlerde
sabit yön, cihaz yapılandırması tarafından geçersiz kılınabilir. Daha fazla
yapılandırma değişikliklerini ele alma ve tüm
Yapılandırma değişikliklerini işleme bölümüne bakın.
ViewModel'e genel bakış ve Uygulama yönü kısıtlandı
büyük ekranlı cihazlarda kullanmayın.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
Mülk işaretini ayarlama
PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE
Hedef: false
.
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. Tüm yönleri geçersiz kılar,
Uygulama manifest dosyasında belirtilen yeniden boyutlandırılabilirlik ve en boy oranı kısıtlamaları. Ayrıca
şu çağrıları yok sayar:
Activity#setRequestedOrientation()
.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
android:screenOrientation
manifestini ayarlamayın özelliğini kullanın veya özelliği"user"
olarak ayarlayın.android:resizeableActivity
manifestini ayarlayın özelliğinitrue
olarak değiştirin.Küçük ekranlarda, çoklu pencere devre dışı bırakılırken uygulama yeniden boyutlandırmayı desteklemek için
android:resizeableActivity=false
ile ayarlamak istiyorsanıztrue
olarakandroid.supports_size_changes
meta veri işareti. AyarlamaminAspectRatio
vemaxAspectRatio
.
Uygulamaları optimize etme
Uygulamanızın tüm yönleri desteklemesini sağlama screenOrientation
ayarlama
spesifikasyonunu kullanabilirsiniz. Uygulamanın yeniden boyutlandırılabilirliğini destekler.
çoklu pencere modunu düzenleyebilir ve tüm ekran en boy oranlarını
Uygulamanızın manifest dosyasındaki android:resizeableActivity
özelliğini true
olarak ayarlayın. Görüntüleyin
Farklı ekran boyutlarını destekleyin.
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. Aksi hâlde OVERRIDE_ANY_ORIENTATION etkinleştirildi, 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
Şuradaki tüm etkinlikler için nosensör yönünü etkinleştirir: paketinden yararlanın. OVERRIDE_ANY_ORIENTATION geçerli değilse etkinleştirildiğinde, geçersiz kılma yalnızca başka bir sabit yön kullanılmadığında kullanılır etkinliği tarafından belirtilir.
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
Şuradaki tüm etkinlikler için ters yatay yönünü etkinleştirir: teslim edilir. OVERRIDE_ANY_ORIENTATION geçerli değilse etkinleştirildiğinde, geçersiz kılma yalnızca başka bir sabit yön kullanılmadığında kullanılır etkinliği tarafından belirtilir.
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
Sınırlar OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR ve OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE geçersiz kılmaların yalnızca kamera bağlantısı etkin durumdayken geçerli olmasını sağ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şılanır:
- Etkinlik tam ekran modunda
- Bileşen özelliğini devre dışı bırak
PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE
etkin değil - Cihaz üreticisinin yönü yoksayma isteği ayarı ekran
- 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
Mülk işaretini ayarlama
PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE
Hedef: false
.
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
Uygulamaya yanıt olarak uygulama yönünü güncellemeyi atlayan uyumluluk politikasını etkinleştirir
Uygulama olduğunda Activity#setRequestedOrientation()
aranıyor
yeniden başlatılıyor veya etkin bir kamera uyumluluğu değerlendirmesi var.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
Mülk işaretini ayarla
PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION
Hedef: true
.
Uygulamaları optimize etme
OVERRIDE_ANY_ORIENTATION
başlıklı makaleyi inceleyin.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
Mülk işaretini ayarla
PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION
Hedef: false
.
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
Uyumluluk politikasını etkinleştirir.
uygulama çağrısına verilen yanıt
Activity#setRequestedOrientation()
iki kattan fazla
bir aktivite sabit yön için sinemaskop biçimine getirilmezse bir saniye içinde gösterilir.
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
Mülk işaretini ayarla
PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
-
false
.
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, etkinleştirilebilen yön yoksayma isteği davranışından hariç tutulur bir ekran alanı veya ekranın tamamı için cihaz üreticileri tarafından
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 uyumlu değilse geçersiz kılmanın devre dışı bırakılması tehlikeli olabilir Cihaz üreticisinin yön isteğini yoksaydığı bir cihazla ayarı etkin. Android Geliştiricisi ile İletişime Geçin İlişkiler'i tıklayı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 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 Display
API korumalı alanının hiçbir zaman uygulanmamasını zorunlu kılar
kullanın. Display
API'leri
alan sınırlarını belirlemeye devam edebilir.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
Şu iki ayardan birini ayarlayarak etkinlikleri yeniden boyutlandırılabilir:
android:resizeableActivity
manifest özelliğini true
olarak değiştirildi
veya android.supports_size_changes
meta veri işaretini true
olarak ayarlayın.
Uygulamaları optimize etme
Tamamen yeniden boyutlandırılabilir olduğunu belirten uygulamalar ekran boyutuna bağlı olmamalıdır.
kullanıcı arayüzü öğelerini konumlandırmak için kullanılır. Uygulamanızı, aşağıdaki özelliklere sahip güncel API'lere taşıyın:
WindowMetrics
sağlayın. Jetpack Compose kullanıyorsanız
Ekran boyutuna göre kullanıcı arayüzünü çizmek için WindowSizeClass
API'si
uygulamanın mevcut ekranda ne kadar yer kaplayacağını belirler. Görüntüleyin
Pencere boyutu sınıfları.
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
Paketlere her zaman Display
API korumalı alanının uygulanmasını zorunlu kılar
pencere modundan bağımsız olarak
değiştirebilirsiniz. Display
API'leri her zaman uygulama sınırlarını sağlar.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
Şu iki ayardan birinde etkinlikleri yeniden boyutlandıramaz:
android:resizeableActivity
özelliğini false
veya
false
olarak android.supports_size_changes
meta veri işareti.
Uygulamaları optimize etme
Tamamen yeniden boyutlandırılabilir olduğunu belirten uygulamalar için
konum kullanıcı arayüzü öğeleri. Uygulamanızı desteği sonlandırılmış API'lerden
WindowMetrics
sağlayan güncel API'ler. Görüntüleyin
WindowMetricsCalculator
.
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?
Uygulama kodundaki sorunu çözmek için uygulama penceresi ve ofsetleri, uygulama penceresine göre cihazın görüntüsüne göre değişir.
Uygulamaları optimize etme
Uygulamalar, sinemaskop efektini hesaba katarak View
API'leri kullanmalıdır.
ve uygulamaya uygulanan çoklu pencere modu. Görüntüleyin
WindowMetricsCalculator
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
Mülk işaretini ayarla
PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS
Hedef: false
.
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?
Mülk işaretini ayarla
PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION
Hedef: false
.
Uygulamaları optimize etme
Önbelleğe alınmış kamera sensörü yönüne veya cihaz bilgilerine güvenmeyin. Örneğin, kamera uyumluluğu rehberliği, bkz. Kamera Vizörü ve Destek Desteği kameranızdaki yeniden boyutlandırılabilir yüzeyler uygulamasını indirin.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
Mülk işaretini ayarla
PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION
Hedef: true
.
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. Kullanıcı deneyimini iyileştirir yenileme uygulamalarda durum kaybına neden olur.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
Mülk işaretini ayarla
PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH
Hedef: false
.
Uygulamaları optimize etme
Görüntüleyin OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
Mülk işaretini ayarla
PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH
Hedef: true
.
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
onResume()
kullanarak etkinlik yenilemesi için uygulandığı paketleri yapar
→ onResume()
yerine onPause()
→ onResume()
döngüsü →
Kamera uyumluluğu kuvvetin döndürülmesinden sonra onStop()
→ onResume()
.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
Mülk işaretini ayarla
PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
Hedef: true
.
Uygulamaları optimize etme
Görüntüleyin OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
Mülk işaretini ayarla
PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
Hedef: false
.
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 modda kamera çıkışının ters yönde kırpılmaya zorlanır kamera yönü, cihazın doğal yönüyle uyumlu değil. Birçok uygulama diğer durumlarda uzatılmış resimler gösterebilirsiniz.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
Mülk işaretini ayarla
PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT
Hedef: true
.
Uygulamaları optimize etme
Görüntüleyin OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
Mülk işaretini ayarla
PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT
Hedef: false
.
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 (bkz.
Medya projeksiyonu) tıklayın. Uygulamalar,
Zorunlu kılınacak createConfigForDefaultDisplay()
API
ve içeriği göstererek kullanıcı gizliliğini tehlikeye atabilir
tam ekranla yakalanan ancak uygulama ekranıyla yakalanmayan bildirimlerin yüzdesi
ve pencere modundan bağımsız olarak tüm uygulamalar için geçerlidir.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
Varsayılan medya projeksiyonu davranışına izin ver (Android 14, API'de uygulanır)
createScreenCaptureIntent()
ile 34. seviye),
Bu, kullanıcıların tam ekranı mı yoksa tek bir uygulamayı mı paylaşacaklarına karar vermelerine olanak tanır.
pencere modundan bağımsız olarak
değiştirebilirsiniz. Alternatif olarak arayın:
createScreenCaptureIntent(MediaProjectionConfig)
bir MediaProjectionConfig
bağımsız değişkeninden
createConfigForUserChoice()
çağrısı.
Uygulamaları optimize etme
Kullanıcıların, cihaz ekranının tamamını mı yoksa bir uygulamayı mı paylaşacaklarını seçmesine izin ver penceresi açılır. Bu, Android 14'ten itibaren varsayılan davranıştır.
Uygulamanızı şu şekilde yeniden boyutlandırılabilir (resizeableActivity="true"
) yapın:
çoklu pencere modunu destekler.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
Kullanıcı gizliliğinin ciddiyeti nedeniyle uygulamanız devre dışı bırakılamıyor veya devre dışı bırakılamıyor bir değer olacaktır.
Geçersiz kılmayı ayarlamak için özellik işaretleri
Yok.
geçersiz kılmayı test etmek için adb komutları
Geçersiz kılma işlemini uygulamak için uygulamanın kısmi ekran paylaşımını devre dışı bırakması iptal edilir (yani kısmi ekran paylaşımını etkinleştirir):
adb shell am compat enable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>
Uygulamanın kısmi ekranı devre dışı bırakmasına olanak tanıyan geçersiz kılmayı kaldırmak için paylaşma:
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. Biraz Oyun motorları, uygulamanın içeriğini çizmeden önce odaklanmayı bekler; Böylece, sahte odaklama, devam ettirildiğinde uygulamaların karar kalmasını önlemeye yardımcı olur. odaklanabillirsiniz.
Uygulamalar, geçersiz kılma ile aynı sonucu nasıl elde edebilir?
Mülk işaretini ayarla
PROPERTY_COMPAT_ENABLE_FAKE_FOCUS
-
true
.
Uygulamaları optimize etme
Uygulamanız birden fazla yönü kullanıyorsa ve iyi performans gösterdiğini görmenize yardımcı olur. Uygulamanızı büyük ekrana hazır hale getirmek için Büyük ekran uygulama kalitesi yönergeleri.
Unity oyun motorunu kullanıyorsanız 2019.4.40 veya daha yeni bir sürüme yükseltin ve
oyununuzu yeniden dışa aktarın. Resizable Window
seçeneğini kullanmaya devam et
Android Player'da kontrol edildi
Ayarlar'da devre dışı bırakabilirsiniz.
Geçersiz kılmayı devre dışı bırakma veya devre dışı bırakma
Mülk işaretini ayarla
PROPERTY_COMPAT_ENABLE_FAKE_FOCUS
-
false
.
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