Android aktiviert einen Kompatibilitätsmodus für Apps, die die Ausrichtung oder Größenbeschränkungen. Der Kompatibilitätsmodus sorgt für ein akzeptables Verhalten der App Geräte mit großen Bildschirmen und faltbare Klapphandys, aber mit suboptimaler Nutzerfreundlichkeit.
Durch Überschreibungen pro App können Gerätehersteller Änderungen vornehmen. um die Nutzererfahrung zu verbessern oder zu verhindern, dass bei geräteübergreifend arbeiten.
Referenzgeräte
Für die folgenden Geräte sind aufgrund ungewöhnlicher Probleme möglicherweise Überschreibungen pro App erforderlich Konfigurationen oder Konfigurationen, die von Apps nicht gut unterstützt werden:
- Tablets:Die normale Ausrichtung einiger Tablets wie Pixel Tablet,
ist Querformat. Ein Gerät befindet sich in seiner natürlichen Ausrichtung, wenn
Display#getRotation()
RetourenSurface.ROTATION_0
Wenn Apps davon ausgehen, dassROTATION_0
im Hochformat ist, App-Layout und Kameravorschau können nicht zum Gerätedisplay passen. - Faltbare Geräte im Querformat:Einige faltbare Geräte wie Pixel Fold werden Hochformat beim Aufklappen und Querformat beim Aufklappen. Wird angenommen, dass die ausgeklappte Ausrichtung im Hochformat ist, flackert das Display Schleifen oder Layoutprobleme auftreten.
- Faltbare Smartphones:Aufgeklappte Klapphandys sind normalerweise im Hochformat zu sehen. Ausrichtung. Zugeklappt haben die Smartphones jedoch meist ein kleines Display im Querformat. Apps müssen die verschiedenen Ausrichtungen der Bildschirme.
Häufige Kompatibilitätsprobleme
Kompatibilitätsprobleme bei Apps treten am häufigsten aufgrund der Ausrichtung der App auf Einschränkungen hinsichtlich der Größe und des Seitenverhältnisses, Ausrichtung der Kameravorschau und falsch verwendete APIs.
Letterboxing
Mit Letterboxing-Balken wird die App in der Mitte des Bildschirms positioniert. für einen bequemen Zugriff auf die eine oder die andere Seite. Matt (einfarbige Balken) oder verschwommenem Hintergrund), füllen Sie den nicht genutzten Anzeigebereich an den Seiten oder oben unten in der App.
Das Letterbox-Bild tritt häufig auf Geräten mit großen Bildschirmen auf, da die Abmessungen und das Seitenverhältnis des Gerätedisplays in der Regel vom Standardformat abweichen. für die die meisten Apps entwickelt wurden.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/letterboxing.png?authuser=6&hl=de)
Abbildung 1: Die App, die auf das Hochformat beschränkt ist, wird auf Tablets im Querformat und auf faltbaren Geräten im Letterbox-Format angezeigt.
Problem
Die App unterstützt nicht alle Displaykonfigurationen, da in der App Fehler behoben wurden Ausrichtung, ein festes Seitenverhältnis oder eine Größenanpassung.
Zu den Konfigurationseinstellungen, mit denen die Ausrichtung und Größenanpassung der App gesteuert wird, gehören die Folgendes:
screenOrientation
: Gibt eine feste Ausrichtung für eine App. Apps können die Ausrichtung auch während der Laufzeit festlegen, indem sieActivity#setRequestedOrientation()
resizeableActivity
: Gibt an, ob das System App-Größe so anpassen, dass sie in Fenster mit unterschiedlichen Abmessungen passt. Android 11 (API-Level) 30) und niedriger wird angegeben, ob Apps den Mehrfenstermodus unterstützen. An Unter Android 12 (API-Level 31) und höher wird angegeben, ob Apps den Mehrfenstermodus auf kleinen Bildschirmen (kompakte Fenstergrößenklasse). Unter Android 12 und höher werden Apps unterstützen den Mehrfenstermodus auf großen Bildschirmen (mit mittlerem oder erweitertem Fenster). Größenklasse) unabhängig von dieser Einstellung.maxAspectRatio
: Gibt das maximale Seitenverhältnis an von der App unterstützt wird. Nur Apps, für dieresizeableActivity
auffalse
festgelegt ist, könnenmaxAspectRatio
festlegen.minAspectRatio
: Gibt das Mindestseitenverhältnis an von der App unterstützt wird. Nur Apps, für dieresizeableActivity
auffalse
festgelegt ist, könnenminAspectRatio
festlegen.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/letterboxing_issue.png?authuser=6&hl=de)
Die App ist auf das Hochformat beschränkt und kann auf Geräten im Querformat nicht verwendet werden.
Optimierung
Die App sollte alle Bildschirme im Mehrfenstermodus unterstützen Ausrichtungen und Größen. Alle Ausrichtungen und festes Seitenverhältnis entfernen Einschränkungen aus Ihren App-Layouts und Ihrer App-Manifestdatei.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/letterboxing_optimization.png?authuser=6&hl=de)
Die App unterstützt alle Geräteausrichtungen.
Kompatibilitäts-Problemumgehung
Wenn eine App mit fester Ausrichtung oder festem Seitenverhältnis in einem Fenster ausgeführt wird, Die App unterstützt die Fenstergröße oder -ausrichtung nicht direkt, Android Letterboxing der App, um Kontinuität zu wahren.
Ab Android 12 (API-Level 31) und 12L (API-Level 32) wendet die Plattform eine Vielzahl von Verbesserungen auf Apps im Letterbox-Format an. Gerät implementieren die Hersteller die Verbesserungen an der Benutzeroberfläche. Sie müssen nichts weiter tun, um von den Verbesserungen zu profitieren.
Mit Android 12 (API-Level 31) werden die folgenden ästhetischen Verbesserungen eingeführt: kann von Geräteherstellern konfiguriert werden:
- Abgerundete Ecken:Die Ecken des App-Fensters werden jetzt noch übersichtlicher.
- Transparenz der Systemleiste: Status- und Navigationsleisten, die über die App, sind halbtransparent, d. h., die Symbole auf den Balken sind immer über dem Letterbox-Hintergrund.
- Konfigurierbares Seitenverhältnis:Das Seitenverhältnis der App kann angepasst werden. um das Erscheinungsbild der App zu verbessern.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/enhanced_letterboxing.png?authuser=6&hl=de)
Abbildung 2: App mit Letterbox-Bild und verbesserter Benutzeroberfläche
12L (API-Level 32) bietet die folgenden Funktionsverbesserungen:
Konfigurierbare Positionierung: Auf großen Bildschirmen können Gerätehersteller platzieren Sie die App links oder rechts vom Bildschirm. die Interaktion erleichtern.
Neu gestaltete Neustart-Schaltfläche:Gerätehersteller können den Neustart durchführen, Schaltfläche für einen neuen Look für den Größenkompatibilitätsmodus für eine bessere Anerkennung von Nutzern.
Unter Android 13 (API-Level 33) wird ein Dialogfeld mit Informationen zur Positionierung des App mit Letterbox-Bild auf dem Bildschirm oder mit Letterbox-Bild im Splitscreen-Modus:
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/enhanced_letterboxing_user_dialog.png?authuser=6&hl=de)
Abbildung 3: App mit Letterbox-Bild und Dialogfeld mit Informationen für Nutzer
Größenkompatibilitätsmodus
Der Größenkompatibilitätsmodus ist das Letterbox-Verfahren, das ein Steuerelement für den Neustart enthält. Die ermöglicht es Nutzenden, die App neu zu starten und den Bildschirm neu zu zeichnen. Android-Aufrufe Größenkompatibilitätsmodus für Apps, deren Größe nicht angepasst werden kann. Wenn ein wird in einen Anzeigecontainer verschoben, der nicht mit dem der Aktivität kann das System die App anpassen, damit die Anzeige auf dem Gerät mindestens eine Dimension.
Zu den Änderungen an der Gerätekonfiguration, die den Größenkompatibilitätsmodus auslösen können, gehören: Folgendes:
- Bildschirm drehen
- Faltbares Gerät auf- oder zuklappen
- Zwischen Vollbildmodus und Splitscreen wechseln
Problem
Der Größenkompatibilitätsmodus gilt in der Regel für Aktivitäten, die in Ausrichtung oder Seitenverhältnis und sind so konfiguriert (oder vom System bestimmt), nicht in der Größe veränderbar sein.
Die Größe Ihrer App kann nicht geändert werden. Kompatibilitätsmodus – wenn eines der folgenden Kriterien erfüllt ist:
- Die Größe kann mit
resizeableActivity="true"
angepasst werden. - Unterstützt den Bild im Bild-Modus (BiB)
- Ist eingebettet
- Die
FORCE_RESIZE_APP
-Überschreibung pro App wurde angewendet von den Gerätehersteller (von der App festgelegte Eigenschaften werden ignoriert)
Wenn Ihre App keine dieser Bedingungen erfüllt, gilt sie als nicht erfüllt in der Größe veränderbar und kann in den Größenkompatibilitätsmodus verschoben werden.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/size_compatibility_mode_issue.gif?authuser=6&hl=de)
App stürzt im Mehrfenstermodus ab, wenn die Größe nicht veränderbar ist.
Optimierung
Die App sollte alle Displaygrößen unterstützen. Passen Sie die Größe Ihrer App an, indem Sie das
Attribut android:resizeableActivity
von <activity>
oder <application>
-Element auf true
im
App-Manifests. Entwerfen Sie responsive/adaptive Layouts für Ihre App. Weitere Informationen
finden Sie unter
Unterstützung verschiedener Bildschirmgrößen und Support
Mehrfenstermodus.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/size_compatibility_mode_optimization.gif?authuser=6&hl=de)
Die App funktioniert in allen Fenstergrößen.
Kompatibilitäts-Problemumgehung
Android platziert eine App in den Größenkompatibilitätsmodus, wenn das System die kann die Darstellung der App mit Letterbox-Bild verbessert werden, indem die App so skaliert wird, dass sie in mindestens einer Dimension anzeigen. Das System zeigt ein Steuerelement zum Neustart an. der den App-Prozess nachbildet, die Aktivität und den Display. Siehe auch Übersicht über Prozesse und Threads.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/size_compatibility_mode_workaround.gif?authuser=6&hl=de)
App im Hochformat mit Letterbox-Bild im Querformat, skaliert durch Neustart-Steuerung.
Flackernde Schlaufen
Wenn eine App nicht alle Bildschirmausrichtungen unterstützt, kann es wiederholt eine neue Ausrichtung anfordern, wenn eine Konfigurationsänderung erfolgt. Endlosschleife, durch die das Display flackert oder die App endlos rotiert.
Problem
Unter Android 12 (API-Level 31) und höher können Gerätehersteller
von Apps festgelegte Ausrichtungsbeschränkungen ignorieren und stattdessen
Kompatibilitätsmodi durchzusetzen. Beispielsweise kann ein faltbares Gerät
android:screenOrientation="portrait"
der Aktivität
wenn die Aktivität auf dem Tablet im Querformat angezeigt wird,
inneres Display.
Wenn die Ausrichtungsbeschränkungen einer App ignoriert werden, kann die App programmatisch
Ausrichtung festlegen, indem Sie
Activity#setRequestedOrientation()
Der Anruf
Löst einen App-Neustart aus, wenn die App Konfigurationsänderungen nicht verarbeitet (siehe
Konfigurationsänderungen verarbeiten. Nach dem
neu starten, werden die Ausrichtungsbeschränkungen der App wieder ignoriert, die App wiederholt
dem Aufruf von setRequestedOrientation()
, löst der Aufruf einen Neustart der App aus und
in einer sich selbst fortlaufenden Schleife.
Eine weitere Möglichkeit ist,
natürliche Ausrichtung (die gewöhnliche Ausrichtung als
von Android) eines Gerätebildschirms im Querformat ist, d. h.
Display#getRotation()
-Rückgaben
Surface.ROTATION_0
, während das Gerät im Querformat ist
Seitenverhältnis). Bisher wurde in Apps davon ausgegangen, dass Display.getRotation() =
Surface.ROTATION_0
bedeutet, dass das Gerät im Hochformat gezeigt wird. Das ist aber nicht der Fall.
z. B. auf dem inneren Display einiger faltbarer Geräte und
auf einigen Tablets.
Eine App im Querformat auf einem faltbaren inneren Display
Bildschirmdrehung, Wert ROTATION_0
erhalten, natürliche Ausrichtung annehmen
des Geräts im Hochformat angezeigt wird und
setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
)
, um das App-Layout neu zu konfigurieren. Nach dem Neustart der App (im Querformat)
Ausrichtung), wird möglicherweise die Bildschirmdrehung erneut überprüft, es wird der Wert
ROTATION_0
, Anruf
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
und
die Endlosschleife fortsetzen.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/flickering_loops_issue.gif?authuser=6&hl=de)
Die App, die auf einem Display im Hochformat verwendet wird, ruft Activity#setRequestedOrientation()
wiederholt auf.
Optimierung
Folgendes sollte in Apps nicht ausgeführt werden:
- Legen Sie mit
Activity#setRequestedOrientation()
im FeldonCreate()
-Aktivitätsmethode liegt, weil die Ausrichtungsanfrage so aussehen kann, Unerwartete Auslösung durch unbehandelte Konfigurationsänderungen - Ausgehend von der natürlichen Ausrichtung des Geräts (
ROTATION_0
) im Hochformat annehmen - Legen Sie die Ausrichtung anhand von Signalen fest, die nicht mit der aktuellen Fenstergröße zusammenhängen, z. B.
als
Display#getRotation()
, bei vorhandenemFoldingFeature
oder eingestellte APIs.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/flickering_loops_optimization.gif?authuser=6&hl=de)
Die App verarbeitet Konfigurationsänderungen und hat keine Ausrichtungsbeschränkungen, sodass keine flackernden Schleifen entstehen.
Kompatibilitäts-Problemumgehung
Android ignoriert Activity#setRequestedOrientation()
-Aufrufe in den folgenden
Situationen:
Die Aktivität wurde bereits von einem vorherigen Aufruf der Methode oder ist die Kompatibilitätsbehandlung der Kamera aktiviert (siehe Kamera- Vorschau unten).
Gerätehersteller können dieses Verhalten auf eine App anwenden,
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION
Durch die Aktivität wurden mehr als zwei Ausrichtungsanfragen in einer Sekunde gestellt, was zeigt an, dass eine Schleife aufgetreten ist. Von den beiden Anfragen in der Schleife verwendet Android mit der der Anzeigebereich der App maximiert wird.
Gerätehersteller können dieses Verhalten auf eine App anwenden,
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
Kameravorschau
Die Kameravorschau (oder der Sucher) von Kamera-Apps ist möglicherweise falsch ausgerichtet oder verzerrt auf Tablets, Laptops und faltbaren Displays.
Problem
Im Android-Kompatibilitätsdefinitionsdokument steht, dass ein Kamera-Bildsensor "MÜSSEN so ausgerichtet sein, dass die lange Seite der Kamera zur Länge des Bildschirms passt.“
Apps gehen oft davon aus, dass die Ausrichtung des Geräts und des Kamerasensors korrekt ist Hochformat – eine vernünftige Annahme auf Standardhandys. Die die natürliche Ausrichtung von Tablets und Laptops sowie deren Kamerasensoren zu verbessern. Neue Formfaktoren wie faltbare Geräte können außerdem mehrere Ausrichtungen und mehrere Kamerasensoren mit unterschiedlicher Ausrichtung.
Starten einer Aktivität mit einer Kameraausrichtung, die die App nicht erwartet, oder kann der Wechsel zwischen verschiedenen Kameras oder Bildschirmen (bei faltbaren Geräten) zu eine falsch ausgerichtete oder verzerrte Kameravorschau.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/camera_preview_issue.png?authuser=6&hl=de)
Falsch ausgerichtete und verzerrte Kameravorschau auf einem faltbaren großen Display.
Optimierung
Kamera-Apps müssen die Ausrichtung des Geräts und die Kamera korrekt identifizieren und verwalten Sensorausrichtung, um eine korrekt ausgerichtete und skalierte Kameravorschau anzuzeigen. Apps müssen die Gerätedrehung, die Sensordrehung und den Bildschirm oder das Fenster berechnen Seitenverhältnis und wenden die Ergebnisse dann auf die Kameravorschau an. Ausführliche Informationen finden Sie unter Kameravorschau und Einführung in die Kamera Sucher.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/camera_preview_optimization.png?authuser=6&hl=de)
Die Kameravorschau wurde in allen Geräteausrichtungen korrekt ausgerichtet und skaliert.
Kompatibilitäts-Problemumgehung
Ein Gerät befindet sich in natürlicher Ausrichtung, wenn Display#getRotation()
gibt Surface.ROTATION_0
zurück. Das System berechnet
CameraCharacteristics.SENSOR_ORIENTATION
aus der natürlichen Ausrichtung des Geräts heraus. Android richtet das Fenster im Hochformat
Apps im Hochformat mit der natürlichen Ausrichtung des Geräts,
was die meisten Apps erwarten. Android schneidet das Bild des Kamerasensors auch zu, wenn die
Die Sensorausrichtung ist im Querformat und die Kameravorschau im Hochformat. Die spezifischen
So können Sie das Problem umgehen:
Drehen der Kameravorschau für Apps mit eingeschränktem Hochformat erzwingen:Apps nur im Hochformat gezeigt werden, rechnen Sie mit der natürlichen Ausrichtung des Geräts, und die Ausrichtung des Kamerasensors auf Hochformat. Unter Android 12 (API-Level 31) und höher können Apps in verschiedenen Geräteausrichtungen ausgeführt werden, Gerätehersteller die Ausrichtungsangabe ignorieren.
Wenn eine App mit eingeschränktem Hochformat mit der Kamera verbunden ist, erzwingt Android Dreht die App, sodass das App-Fenster im Hochformat an der natürlichen Ausrichtung des Geräts.
Auf einigen Tablets (siehe Referenzgeräte) wird die App Fenster im Hochformat wird zum Vollbild-Hochformat gedreht, um es natürliche Ausrichtung des Geräts. Die App belegt den gesamten Bildschirm nach dem Erzwingen. Rotation.
Tablet: Drehung der App im Hochformat erzwingen.
Auf dem inneren Display im Querformat bei faltbaren Geräten (siehe Referenz Geräte) werden Aktivitäten im Hochformat so gedreht, dass Querformat so, dass es an der aufgeklappten natürlichen Ausrichtung ausgerichtet ist. Die App ist mit Letterbox-Bild nach der erzwungenen Drehung.
Faltbar: Drehen der App im Hochformat erzwingen. Die App hat außerdem Letterboxing-Balken.
Innerer Frontkamera zugeschnitten:Der Sensor der inneren Frontkamera ist bei einigen faltbares Smartphone im Querformat. Zusätzlich zum Drehen des Kameravorschau auf dem faltbaren inneren Display, Android passt die Vorderseite zu (Querformat) des Kamera-Sichtfelds, sodass der Sensor die gegenüberliegende Ansicht erfasst Ausrichtung des Geräts ändern.
Aktualisierung der Kameravorschau erzwingen:Das System durchläuft die Aktivität. Methoden
onStop()
undonStart()
(standardmäßig) oderonPause()
undonResume()
(angewendet vom KAMERA_KOMPAT_AKTIVIEREN_ÜBERARBEITEN_VIA_PAUSE App-spezifische Überschreibung) nach der erzwungenen Drehung, um sicherzustellen, dass die Kameravorschau richtig dargestellt werden.Seitenverhältnisskalierung:Das System ändert dynamisch das Seitenverhältnis des wurde die Kameravorschau auf ein höheres Mindestseitenverhältnis gedreht, sorgt dafür, dass die Kameravorschau richtig skaliert wird.
App-Entwickler können diese Problemumgehungen überschreiben, wenn die Apps die Kameravorschau verarbeiten korrekt sind. Siehe Überschreibungen pro App.
Häufig missbrauchte APIs
Da Android nun auch Funktionen wie den Mehrfenstermodus und wie faltbare Geräte, wurden Legacy-APIs eingestellt und durch Aktuelle APIs, die für alle Display- und Gerätegrößen funktionieren Faktoren. Die eingestellten APIs sind jedoch weiterhin für rückwärtskompatible Kompatibilität.
Einige View
APIs wurden für besondere Zwecke entwickelt, die nicht immer gut funktionieren
die von den Entwicklern verstanden werden.
Problem
Entwickler verwenden weiterhin eingestellte Display
APIs und gehen fälschlicherweise davon aus, dass die
APIs geben die App-Grenzen statt der Display-Bereichsgrenzen der Geräte zurück. Oder Entwickler
verwenden Sie fälschlicherweise spezielle View APIs, um allgemeine Messwerte für Displayanzeigen abzurufen.
Es kommt zu Fehlkalkulationen, wenn UI-Elemente nach dem App-Fenster neu positioniert werden.
Größenänderung von Ereignissen, was zu Layout-Problemen führt.
Eingestellte und häufig missbrauchte Display-APIs:
Weitere Informationen finden Sie unter Biete Unterstützung für den Mehrfenstermodus.
Falsch verwendete Ansichts-APIs:
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/misused_APIs_issue.png?authuser=6&hl=de)
Die verworfene API berechnet die Anwendungsgrenzen falsch. App-Inhalte verschwinden.
Optimierung
Verlassen Sie sich bei der Positionierung von UI-Elementen niemals auf die physische Anzeigegröße. Migrieren Sie Ihre
App zu APIs basierend auf WindowMetrics
, einschließlich der folgenden
WindowManager
-APIs:
Plattform:
Jetpack:
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/misused_APIs_optimization.png?authuser=6&hl=de)
Die API berechnet die Messwerte des App-Fensters korrekt.
Kompatibilitäts-Problemumgehung
Durch zwei Überschreibungen werden die eingestellten Display
APIs und die missbräuchlich verwendeten View
APIs angepasst, um
Anwendungsgrenzen zurückgeben:
ALWAYS_SANDBOX_DISPLAY_APIS
für Display
APIs OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS
für View
APIs. ALWAYS_SANDBOX_DISPLAY_APIS
wird standardmäßig auch auf
Apps, die für den Größenkompatibilitätsmodus infrage kommen.
Transparente Aktivitäten
Transparente Aktivitäten entstehen durch transparente Hintergrundstile. Beispiel:
<style name="Transparent" parent="AppTheme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
Designs für Dialogfelder, z. B. Theme.MaterialComponents.Dialog
, können
Stile verwenden, die Aktivitäten transparent machen.
Transparente Aktivitäten decken nicht den gesamten verfügbaren Platz ein. schwierig zu verwalten, da sich der verfügbare Anzeigebereich je nach Konfigurationsänderungen wie Gerätedrehung, Auf- und Zuklappen des Geräts Mehrfenstermodus.
Problem
Eine transparente Aktivität muss den Grenzen der ersten undurchsichtigen Aktivität entsprechen. unterhalb der transparenten Aktivität im Aufgaben-Aktivitätsstack. Eine opake kann eine Aktivität, bei der ein Berechtigungsdialogfeld geöffnet wird, Trampolin (eine Aktivität, die eine andere Aktivität startet und dann wieder verschwindet); und Das System kann also die Grenzen der Trampolinaktivität nicht bestimmen, die Dialogfeldaktivität "Transparentes Berechtigungsdialogfeld" gestartet.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/transparent_activities_issue.png?authuser=6&hl=de)
Dialogfeld ist falsch positioniert, weil die Aktivität von einem Trampolin aus gestartet wurde.
Optimierung
Transparente Aktivitäten übernehmen ihre Einschränkungen von der obersten undurchsichtigen Farbe welche Aktivitäten im Aktivitäten-Stack einer Aufgabe angezeigt werden. Die opake Aktivität muss der transparenten Aktivität verfügbar ist, von der Schöpfung bis zur Vernichtung. Starte daher keine Berechtigungsanfragen von Trampolinaktivitäten.
Wenn eine Trampolinaktivität eine Berechtigungsanfrage startet, ist der Benutzer möglicherweise kann ich den Dialog mit den Berechtigungen sehen, da die Trampolinaktivität bevor die Nutzenden auf das Dialogfeld reagieren konnten, und der Die Dimensionen und die Position der Dialogaktivität wurden möglicherweise berechnet falsch.
Apps sollten immer Berechtigungsanfragen von Aktivitäten starten, die noch sichtbar sind, bis der Nutzer eine Berechtigungsentscheidung getroffen hat.
Abgerundete Ecken
Eine Aktivität kann aufgrund eines Stils, der den Hintergrund vorgibt, transparent sein oder weil der Inhalt der Aktivität die verfügbaren Werbefläche. Wenn eine transparente Aktivität die verfügbare Anzeigefläche ausfüllt, wendet das System automatisch abgerundete Ecken auf die Aktivität an, wenn vom Gerätehersteller. Wenn jedoch eine transparente Aktivität (z. B. nicht den verfügbaren Platz ausfüllt, müssen Sie entscheiden, ob abgerundete Ecken verwendet werden sollen.
Berechtigungsdialogfelder füllen nicht den verfügbaren Platz, da das Dialogfeld für das Layout wird in der Regel LayoutParams.WRAP_CONTENT verwendet, LayoutParams.MATCH_PARENT.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/transparent_activities_optimization.png?authuser=6&hl=de)
Dialogfeld mit abgerundeten Ecken, die korrekt über der sichtbaren Startaktivität positioniert sind.
Kompatibilitäts-Problemumgehung
Aktivitäten zum Starten von Dialogaktivitäten sichtbar lassen, bis der Nutzer hat auf den Dialog geantwortet.
Das System stellt sicher, dass eine transparente Aktivität alle Einschränkungen vom unter der transparenten Aktivität im Aktivitäten-Stack einschließlich Einschränkungen hinsichtlich Folgendem:
- Größenkompatibilitätsmodus
- Ausrichtung
- Seitenverhältnis
Unity-Spiele
Unity-Spiele laufen auf Android-Geräten im Vollbildmodus oder im Mehrfenstermodus. Sie können jedoch viele Unity-Spiele verlieren den Fokus und zeichnen keine Inhalte mehr, wenn die App Mehrfenstermodus.
Problem
Unity hat einen Resizable Window
hinzugefügt
in Unity 2019.4 ein, um den Mehrfenstermodus unter Android zu unterstützen. Sie können jedoch
Die ursprüngliche Implementierung reagierte nicht auf den Aktivitätslebenszyklus in
Mehrfenstermodus korrekt funktioniert,
UnityPlayer hält die Wiedergabe an, wenn die App den Fokus verliert. Der Player rendert
oder der letzte eingefrorene Frame des Spiels. Gameplay wird nur fortgesetzt, wenn
auf den Bildschirm getippt hat. Bei vielen Apps, die die Unity Engine nutzen, tritt dieses Problem auf.
werden im Mehrfenstermodus
als schwarzes Fenster gerendert.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/unity_games_issue.gif?authuser=6&hl=de)
Das Spiel verliert im Mehrfenstermodus den Fokus und wird als schwarzes Fenster gerendert.
Optimierung
Führe ein Upgrade von Unity auf Version 2019.4.40 oder höher durch und exportiere dein Spiel noch einmal. Behalten Sie die
Die Option Resizable Window
wurde im
Android Player-Einstellungen, andernfalls
Das Spiel wird angehalten, wenn es nicht im Fokus ist, obwohl es vollständig zu sehen ist.
Mehrfenstermodus.
![](https://developer.android.com/static/images/guide/practices/compatibility-mode/unity_games_optimization.gif?authuser=6&hl=de)
Das Spiel rendert Inhalte im Mehrfenstermodus auch dann korrekt, wenn sie nicht im Fokus sind.
Kompatibilitäts-Problemumgehung
Gerätehersteller können die
OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS
Überschreibung pro App, um einer App in
Mehrfenstermodus. Die Überschreibung ermöglicht es der Aktivität,
Inhalte neu zu zeichnen und
nicht geschwärzt werden.
App auf Kompatibilitätsprobleme testen
Um deine App zu testen und zu verstehen, wie sie sich bei verschiedenen Formfaktoren verhält, nutzen Sie die folgenden Ressourcen:
- Gerätestreaming:Wenn Sie Ihre App auf Produktionsgeräten testen möchten, z. B. Referenzgeräte), die in Google-Rechenzentren gehostet werden, siehe Streaming von Android-Geräten mit Firebase
- Emulatoren in Android Studio Hedgehog:Informationen zum Erstellen Emulatoren für Referenzgeräte, siehe Virtuelle Geräte erstellen und verwalten
- Emulator mit anpassbarer Größe für Android Studio:Informationen zum Zugriff auf virtuelle -Geräte finden Sie unter Apps im Android-Emulator ausführen.
Mit Letterbox-Bild
Stellen Sie sicher, dass jede Aktivität den gesamten für die App verfügbaren Anzeigeraum nutzen kann. Geben Sie zuerst den folgenden Code in Ihrem Testordner an:
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(); }
Führen Sie dann einen Test durch, um das Verhalten zu bestätigen, und stellen Sie sicher, dass die Zielaktivität nicht Letterbox-Bild:
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(); }); } }
Führen Sie diese Art von Test im Idealfall nur so lange durch, bis die App erfolgreich ist und Aktivitäten belegen den gesamten für die App verfügbaren Platz. App testen auf allen Gerätetypen an, um ein einheitliches Verhalten zu gewährleisten.
Überschreibungen pro App
Android bietet Überschreibungen, die das konfigurierte Verhalten von Apps ändern. Für
Beispiel: Die Überschreibung FORCE_RESIZE_APP
weist den
um den Größenkompatibilitätsmodus zu umgehen und die App an die Displaygröße anzupassen
auch wenn resizeableActivity="false"
gleich
die im App-Manifest angegeben sind.
Gerätehersteller wenden Überschreibungen auf ausgewählte oder alle Apps auf Geräten mit großem Bildschirm entwickelt. Unter Android 14 (API-Level 34) und höher können Überschreibungen auf Apps über die Geräteeinstellungen anwenden.
Überschreibungen für Nutzer pro App
Unter Android 14 und höher können Nutzer über ein Einstellungsmenü das Seitenverhältnis ändern. Verhältnis von Apps. Geräte mit großem Bildschirm wie die Referenz Geräte implementieren, um das Menü zu implementieren.
Das Menü enthält eine Liste aller auf dem Gerät installierten Apps. Nutzer wählen ein App und legen Sie dann das Seitenverhältnis der App auf 3:4, 1:1, Vollbild oder einen anderen Wert fest. vom Gerätehersteller konfiguriert wurde. Nutzer können das Seitenverhältnis auch auf Der App-Standardwert, der im App-Manifest angegeben ist.
Apps können die Kompatibilitätsüberschreibung deaktivieren, indem Sie die folgenden PackageManager.Property
-Tags festlegen:
PROPERTY_KOMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE
Fügen Sie die Property hinzu, um die Überschreibung der Kompatibilität mit dem Seitenverhältnis des Nutzers zu deaktivieren in Ihr App-Manifest ein und legen Sie den Wert auf
false
fest:<application> <property android:name="android.window. PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE" android:value="false" /> </application>
Ihre App wird aus der Liste der Apps in den Geräteeinstellungen ausgeschlossen. Nutzer*innen das Seitenverhältnis der App nicht überschreiben.
Das Festlegen des Attributs auf
true
hat keine Auswirkungen.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE
Option zum Deaktivieren der Vollbildoption mit Seitenverhältnis-Kompatibilität überschreiben, fügen Sie die Eigenschaft zu Ihrem App-Manifest hinzu und legen Sie den Wert auf
false
:<application> <property android:name="android.window.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE" android:value="false" /> </application>
Die Vollbildoption wird aus der Liste der Seitenverhältnisoptionen in Geräteeinstellungen. Nutzer können die Vollbildüberschreibung nicht auf für Ihre App.
Das Festlegen dieses Attributs auf
true
hat keine Auswirkungen.
Optimieren Sie Ihre App für alle Bildschirme:Legen Sie in den für Ihre App. Verwenden Sie Fenstergrößenklassen, um verschiedene je nach verfügbarer Displayfläche anpassen.
Überschreibungen pro App des Geräteherstellers
Gerätehersteller wenden Überschreibungen für einzelne Apps auf ausgewählten Geräten an. Die Referenzgeräte können einige der Überschreibungen auf einen für eine Vielzahl von Apps.
Für Apps können die meisten Überschreibungen deaktiviert werden (siehe den Abschnitt Pro App Überschreibungen unten) angezeigt.
Sie können Ihre App mit aktivierten oder deaktivierten Überschreibungen testen. Verwenden Sie dazu die (siehe Kompatibilitäts-Framework-Tools). Wenn diese Option aktiviert ist, gelten Überschreibungen für die gesamte App.
Sie können auch die Android Debug Bridge (ADB) verwenden, um deaktivieren Sie Überschreibungen und legen Sie fest, welche Überschreibungen für Ihre App gelten.
So aktivieren oder deaktivieren Sie Überschreibungen:
adb shell am compat enable/disable <override name/id> <package>
Prüfen Sie unter Referenzgeräte, welche Überschreibungen für Ihre App:
adb shell dumpsys platform_compat | grep <package name>
In der folgenden Tabelle sind die verfügbaren Überschreibungen zusammen mit einer Anleitung zum Optimieren Sie Ihre App, damit sie nicht auf Überschreibungen angewiesen ist. Sie können Property-Flags in Ihrem App-Manifest an, um einige Überschreibungen zu deaktivieren.
Überschreibungen pro App | |||
---|---|---|---|
Typ | Name | ID | Beschreibung |
Größenanpassung | <ph type="x-smartling-placeholder"></ph> APP_RESIZE_APP_ERZIEHEN | 174042936 | Umgeht den Größenkompatibilitätsmodus für die App bei Konfigurationsänderungen. |
<ph type="x-smartling-placeholder"></ph> APP_NICHT_RESIZE_APP_ERZWINGEN | 181136395 | Erzwingt die App bei Konfigurationsänderungen in den Größenkompatibilitätsmodus. | |
Seitenverhältnis | <ph type="x-smartling-placeholder"></ph> ÜBERSCHREIBUNG_MIN_ASPECT_RATIO | 174042980 | Gatekeeper-Überschreibung, die aktiviert werden muss, um andere Seitenverhältnisüberschreibungen anzuwenden. |
<ph type="x-smartling-placeholder"></ph> OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY | 203647190 | Wenn diese Option aktiviert ist (Standardeinstellung), wird der Überschreibungsbereich auf Aktivitäten beschränkt, die nur im Hochformat möglich sind. | |
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREIBUNG_MIN_ASPECT_RATIO_MITTEL | 180326845 | Ändert das Mindestseitenverhältnis in 3:2. | |
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREITUNG_MIN_ASPECT_RATIO_GROß | 180326787 | Ändert das Mindestseitenverhältnis in 16:9. | |
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREITUNG_MIN_DER_ASPECT_RATIO_TO_ALIGN_MIT_SPLIT_SCREEN | 208648326 | Ändert das Mindestseitenverhältnis, sodass es für 50% der Bildschirmgröße passt (oder das Seitenverhältnis im geteilten Bildschirm). | |
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREIBUNG_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_VOLLBILD | 218959984 | Hiermit wird die Überschreibung des Mindestseitenverhältnisses deaktiviert, sodass Apps im Hochformat angezeigt werden. | |
Ausrichtung | <ph type="x-smartling-placeholder"></ph> ÜBERSCHREIBUNG_ANY_ORIENTATION | 265464455 | Ermöglicht das Überschreiben einer Ausrichtung. |
<ph type="x-smartling-placeholder"></ph> JEDER_ORIENTATION_AN_NUTZER_ÜBERSCHREIBEN | 310816437 | Überschreibt die Einschränkungen für Ausrichtung, Größenänderung und Seitenverhältnis. | |
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREITUNG_UNDEFINIERTER_ORIENTATION_ZU_PORTRAIT | 265452344 | Wenn eine Aktivität eine nicht definierte Ausrichtung hat, wird das Hochformat als Ausrichtung überschrieben. | |
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREITUNG_UNDEFINIERTER_ORIENTATION_TO_NOSENSOR | 265451093 | Wenn eine Aktivität eine nicht definierte Ausrichtung hat, wird die Ausrichtung mit nosensor überschrieben (natürliche Ausrichtung des Geräts verwenden). |
|
<ph type="x-smartling-placeholder"></ph> ÜBERSICHT_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE | 266124927 | Dreht sich nur Apps im Querformat um 180 Grad. | |
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREIBUNG_NUR_FÜR_KAMERA | 265456536 | Beschränkt den Bereich zum Überschreiben der Ausrichtung auf den Bereich, wenn die App mit der Kamera verbunden ist. | |
<ph type="x-smartling-placeholder"></ph> OVERRIDE_USE_DISPLAY_LANDSCHAFT_NATURAL_ORIENTATION | 255940284 | Setzt die Anzeige auf eine feste, natürliche Ausrichtung im Querformat, wenn eine Aufgabe im Vollbildmodus angezeigt wird (auch im Letterbox-Format). | |
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREIBUNG_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION | 254631730 | Ignoriert Ausrichtungsanfragen von der App, um Endlosschleifen für die Drehung zu vermeiden. | |
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREIBUNG_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED | 273509367 | Ignoriert wiederholte Ausrichtungsanfragen, während eine Aktivität neu gestartet wird. Wenn Android erkennt, dass eine App innerhalb einer Sekunde mindestens zwei Neuausrichtungen anfordert, betrachtet das System dies als Endlosschleife und wendet die Überschreibung an. | |
<ph type="x-smartling-placeholder"></ph> OVERRIDE_RESPECT_REQUESTED_ORIENTATION | 236283604 | Verhindert Letterbox-Bild, indem die Einstellung zum Ignorieren der Ausrichtungsanfrage durch den Gerätehersteller deaktiviert wird. | |
Sandbox-APIs | <ph type="x-smartling-placeholder"></ph> NEVER_SANDBOX_DISPLAY_APIS | 184838306 | Verhindert eine Änderung des Verhaltens von Display-APIs. |
<ph type="x-smartling-placeholder"></ph> ALWAYS_SANDBOX_DISPLAY_APIS | 185004937 | Erzwingt, dass die Display APIs in der App App-Grenzen zurückgeben. Display -APIs geben logische Darstellungsbereichgrenzen zurück, aber manchmal geht die App davon aus, dass Display -APIs App-Grenzen zurückgeben, was zu Problemen mit der Benutzeroberfläche führt. |
|
<ph type="x-smartling-placeholder"></ph> OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS | 237531167 | Erzwingt, dass die in der App verwendeten View APIs App-Grenzen zurückgeben. View -APIs geben logische Darstellungsbereichgrenzen zurück, aber manchmal geht die App davon aus, dass View -APIs App-Grenzen zurückgeben, was zu Problemen mit der Benutzeroberfläche führt. |
|
Kamerakompatibel | <ph type="x-smartling-placeholder"></ph> ÜBERSCHREIBUNG_KAMERA_KOMPAT_DISABLE_FORCE_ROTATION | 263959004 | Deaktiviert die erzwungene Drehung. Standardmäßig werden alle Kamera-Apps mit fester Ausrichtung erzwungen, wenn die Kameravorschau geöffnet ist. |
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREIBEN_KAMERA_KOMPAT_DEAKTIVIERT_AKTUALISIEREN | 264304459 | Die standardmäßige Hartaktualisierung, die angewendet wird, wenn eine Kameravorschau erzwungen wird, wird entfernt. | |
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREIBEN_KAMERA_KOMPAT_AKTIVIERT_ÜBERARBEITEN_VIA_PAUSE | 264301586 | Schaltet die feste Aktualisierung auf eine weiche Aktualisierung um, wenn eine Kameravorschau erzwungen wird. Dadurch wird der Zustand während der erzwungenen Drehung beibehalten. Standardmäßig führt Android eine vollständige Aktualisierung durch, wenn die Kameravorschau erzwungen wird. Die vollständige Aktualisierung kann dazu führen, dass Apps den Status verlieren oder schwärzen, je nachdem, wie die Apps ihren vorherigen Status im Cache gespeichert haben. | |
<ph type="x-smartling-placeholder"></ph> ÜBERSCHREITUNG_KAMERA_LANDSCHAFT_ZU_PORTRAIT | 250678880 | Beschneidet den Bildpuffer der inneren Frontkamera. Ist das Überschreiben deaktiviert, wird der Zuschnitt der inneren Frontkamera entfernt und das Sichtfeld der Kameravorschau wird vergrößert. Auf einigen faltbaren Geräten (siehe Referenzgeräte) wird die Kameravorschau aller Kamera-Apps standardmäßig zugeschnitten, wenn die innere Frontkamera verwendet wird. | |
Sonstiges | <ph type="x-smartling-placeholder"></ph> ÜBERSCHREIBEN_ENABLE_KOMPAT_FAKE_FOCUS | 263259275 | Verhindert, dass die App geschwärzt wird, wenn sie im Splitscreen-Modus den Fokus verliert. Die App wartet auf den Fokus, bevor sie den App-Inhalt zeichnet. Dies kann dazu führen, dass die App einfriert oder geschwärzt wird. Die Überschreibung ermöglicht es Android, ein falsches Fokusereignis an die App zu senden, das der App signalisiert, wieder mit dem Zeichnen von Inhalten zu beginnen. |
APP_RESIZE_APP_ERZIEHEN
Erzwingt, dass die Größe der Pakete, auf die die Überschreibung angewendet wird, geändert werden kann. Nicht festlegen, ob die App in den Mehrfenstermodus versetzt werden kann, aber die App die Größe anpassen, ohne in den Größenkompatibilitätsmodus zu wechseln, wenn die Bildschirmgröße angepasst wird.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Legen Sie im App-Manifest entweder den Parameter
Attribut android:resizeableActivity
auf true
oder an,
unterstützen Größenanpassung bei deaktiviertem Mehrfenstermodus mit
android:resizeableActivity=false
, lege android.supports_size_changes
fest
Metadaten-Flag auf true
.
Apps optimieren
Nutzen Sie responsive/adaptive Layouts, damit sich Apps an alle Displaygrößen und Seitenverhältnissen. Weitere Informationen finden Sie unter Unterstützen Sie unterschiedliche Bildschirmgrößen.
Überschreiben deaktivieren oder deaktivieren
Legen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES
auf
false
.
Property-Flags zum Anpassen der Überschreibung
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES"
android:value="true|false"/>
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an und ändern die Größe der App:
adb shell am compat enable FORCE_RESIZE_APP <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable FORCE_RESIZE_APP <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
APP_NICHT_RESIZE_APP_ERZWINGEN
Erzwingt, dass die Größe der Pakete, auf die die Überschreibung angewendet wird, nicht geändert werden kann bei Konfigurationsänderungen den Kompatibilitätsmodus für die Größe aufrufen.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Legen Sie sowohl das Attribut android:resizeableActivity
als auch
android.supports_size_changes
-Metadaten-Flag auf false
im App-Manifest
und geben Sie entweder eine Ausrichtung oder Einschränkung des Seitenverhältnisses an.
Apps optimieren
Alle Apps, die sich gut verhalten, wenn ihre Größe angepasst wird, sollten entweder
android:resizeableActivity
oder android.supports_size_changes
auf true
festgelegt.
Andere Apps sollten verbessert werden, damit sie auch bei Größenänderung gut funktionieren. Weitere Informationen finden Sie unter
android:resizeableActivity verwenden.
Überschreiben deaktivieren oder deaktivieren
Legen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES
auf
false
.
Property-Flags zum Anpassen der Überschreibung
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES"
android:value="true|false"/>
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an und legen fest, dass die Größe der App nicht geändert werden kann:
adb shell am compat enable FORCE_NON_RESIZE_APP <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable FORCE_NON_RESIZE_APP <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
ÜBERSCHREIBUNG_MIN_ASPECT_RATIO
Entspricht dem Gatekeeper für alle Überschreibungen, die ein bestimmtes minimales Seitenverhältnis erzwingen.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Lege android:minAspectRatio
auf Aktivitäts- oder App-Ebene fest.
Apps optimieren
Legen Sie in Ihrer App keine Einschränkungen des Seitenverhältnisses fest. Achten Sie darauf, dass Ihre App
unterschiedliche Bildschirmgrößen. Fenstergrößenklassen verwenden
um verschiedene Layouts zu unterstützen, je nachdem, wie viel Platz Ihre App auf der
Bildschirm. Weitere Informationen finden Sie in der Compose WindowSizeClass
API.
und View WindowSizeClass
API.
Überschreiben deaktivieren oder deaktivieren
Geben Sie eine Einschränkung des Seitenverhältnisses an oder legen Sie das Attribut-Flag fest
PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE
in false
.
Property-Flags zum Anpassen der Überschreibung
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE"
android:value="false"/>
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
ÜBERSCHREIBUNG_MIN_ASPECT_RATIO_PORTRAIT_ONLY
Beschränkt App-Einstellungen, die ein bestimmtes Mindestseitenverhältnis für Aktivitäten erzwingen
im Hochformat. Standardmäßig aktiviert und nur wirksam
OVERRIDE_MIN_ASPECT_RATIO
ist ebenfalls aktiviert.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.
Überschreiben deaktivieren oder deaktivieren
Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.
Property-Flags zum Anpassen der Überschreibung
Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
ÜBERSCHREIBUNG_MIN_ASPECT_RATIO_MITTEL
Legt das minimale Seitenverhältnis der Aktivität auf einen mittleren Wert (3:2) fest
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.
Überschreiben deaktivieren oder deaktivieren
Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.
Property-Flags zum Anpassen der Überschreibung
Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_MEDIUM <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_MEDIUM <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
ÜBERSCHREITUNG_MIN_ASPECT_RATIO_GROß
Legt das minimale Seitenverhältnis der Aktivität auf einen hohen Wert (16:9) fest
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.
Überschreiben deaktivieren oder deaktivieren
Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.
Property-Flags zum Anpassen der Überschreibung
Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_LARGE <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_LARGE <package>`
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
ÜBERSCHREIBEN_MIN_ASPECT_RATIO_TO_ALIGN_MIT_SPLIT_SCREEN
Dadurch kann das Seitenverhältnis für geteilten Bildschirm verwendet werden. Ermöglicht einer App, alle im Split-Screen-Modus verfügbar, sodass Letterboxing-Balken vermieden werden.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.
Überschreiben deaktivieren oder deaktivieren
Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.
Property-Flags zum Anpassen der Überschreibung
Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
ÜBERSCHREIBUNG_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_VOLLBILD
Deaktiviert die Überschreibung des Mindestseitenverhältnisses im Hochformat im Vollbildmodus zur Verwendung aller auf dem Bildschirm verfügbar ist.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.
Überschreiben deaktivieren oder deaktivieren
Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.
Property-Flags zum Anpassen der Überschreibung
Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
ÜBERSCHREIBUNG_ANY_ORIENTATION
Aktiviert die folgenden Überschreibungen zum Überschreiben einer Ausrichtung:
- ÜBERSCHREITUNG_UNDEFINIERTER_ORIENTATION_ZU_PORTRAIT
- ZU_NOSENSOR_ÜBERSCHREIBEN
- ÜBERSCHREIBUNG_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Legen Sie das Manifestattribut activity:screenOrientation
fest.
oder die Activity#setRequestedOrientation()
API verwenden.
Apps optimieren
Deine App sollte alle Ausrichtungen unterstützen. Eine Änderung der Ausrichtung ist ein
Konfigurationsänderung, die auf zwei Arten vorgenommen werden kann:
System löschen und neu erstellen oder Konfigurationsänderungen verwalten
selbst. Wenn Sie Konfigurationsänderungen selbst verwalten, kann der App-Status
mit ViewModel
beibehalten werden. In sehr seltenen Fällen können Sie das
Ausrichtung nur auf kleinen Displays, auch wenn dies möglicherweise nicht so gut skaliert wird
So kann der Nutzer die App nach Bedarf drehen. Unter Android 12L und höher
feste Ausrichtung kann durch die Gerätekonfiguration überschrieben werden. Weitere Informationen
Informationen zum Umgang mit Konfigurationsänderungen
und zur Unterstützung aller
siehe Konfigurationsänderungen verarbeiten.
ViewModel-Übersicht und App-Ausrichtung eingeschränkt aktiviert
Smartphones, aber nicht auf Geräten mit großen Bildschirmen.
Überschreiben deaktivieren oder deaktivieren
Attribut-Flag festlegen
PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE
an false
.
Property-Flags zum Anpassen der Überschreibung
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE"
android:value="true|false"/>
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_ANY_ORIENTATION <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_ANY_ORIENTATION <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
JEDE_ORIENTATION_AN_NUTZER_ÜBERSCHREITEN
Ermöglicht der App, den verfügbaren Anzeigebereich zu füllen. Alle Ausrichtungen,
Einschränkungen hinsichtlich der Größe und des Seitenverhältnisses, die im App-Manifest angegeben sind. Ebenfalls
ignoriert alle Aufrufe von
Activity#setRequestedOrientation()
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Legen Sie nicht das
android:screenOrientation
-Manifest fest. oder legen Sie das Attribut auf"user"
fest.android:resizeableActivity
-Manifest festlegen Attribut zutrue
.Auf kleinen Bildschirmen, um die Größenanpassung von Apps zu unterstützen und gleichzeitig den Mehrfenstermodus zu deaktivieren mit
android:resizeableActivity=false
verwenden, legen Sie Metadaten-Flagandroid.supports_size_changes
auftrue
. Nicht festlegenminAspectRatio
undmaxAspectRatio
.
Apps optimieren
Deine App muss alle Ausrichtungen unterstützen. screenOrientation
nicht festlegen
im Manifest deiner App angegeben. Unterstützen Sie
die Größenanpassung von Apps,
des Mehrfenstermodus und aller Anzeigeseitenverhältnisse durch Festlegen der
android:resizeableActivity
im Manifest deiner App zu true
. Weitere Informationen finden Sie unter
Unterstützen Sie unterschiedliche Bildschirmgrößen.
Überschreiben deaktivieren oder deaktivieren
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION
.
Property-Flags zum Anpassen der Überschreibung
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION
.
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_ANY_ORIENTATION_TO_USER <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_ANY_ORIENTATION_TO_USER <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
ÜBERSCHREITUNG_UNDEFINIERTER_ORIENTATION_ZU_PORTRAIT
Aktiviert das Hochformat für alle Aktivitäten im Paket. Es sei denn, OVERRIDE_ANY_ORIENTATION aktiviert ist, wird die Überschreibung wird nur verwendet, wenn von der Aktivität keine andere feste Ausrichtung angegeben wurde.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION
.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION
.
Überschreiben deaktivieren oder deaktivieren
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION
.
Property-Flags zum Anpassen der Überschreibung
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION
.
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
ÜBERSCHREIBEN
Aktiviert die nosensor-Ausrichtung für alle Aktivitäten im Paket. Es sei denn, OVERRIDE_ANY_ORIENTATION ist aktiviert ist, wird die Überschreibung nur verwendet, wenn keine andere feste Ausrichtung festgelegt wurde. die durch die Aktivität angegeben wird.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION
.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION
.
Überschreiben deaktivieren oder deaktivieren
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION
.
Property-Flags zum Anpassen der Überschreibung
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION
.
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
ÜBERSCHREIBUNG_LANDSCHAFT_ORIENTATION_ZU_REVERSE_LANDSCHAFT
Aktiviert die Ausrichtung reverseLandscape (rückwärts) für alle Aktivitäten in für das Paket. Es sei denn, OVERRIDE_ANY_ORIENTATION ist aktiviert ist, wird die Überschreibung nur verwendet, wenn keine andere feste Ausrichtung festgelegt wurde. die durch die Aktivität angegeben wird.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION
.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION
.
Überschreiben deaktivieren oder deaktivieren
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION
.
Property-Flags zum Anpassen der Überschreibung
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION
.
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
ÜBERSCHREIBUNG_NUR_FÜR_KAMERA
Beschränkungen OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR, und ÜBERSCHREIBUNG_LANDSCHAFT_ORIENTATION_ZU_REVERSE_LANDSCHAFT werden nur wirksam, wenn die Kameraverbindung aktiv ist.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION
.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION
.
Überschreiben deaktivieren oder deaktivieren
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION
.
Property-Flags zum Anpassen der Überschreibung
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION
.
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
OVERRIDE_USE_DISPLAY_LANDSCHAFT_NATURAL_ORIENTATION
Beschränkt die Anzeigeausrichtung auf das Querformat, wenn das erfüllt sind:
- Aktivität wird im Vollbildmodus angezeigt
- Eigenschaft der Komponente „Deaktivieren“
PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE
ist nicht aktiviert - Die Einstellung zum Ignorieren der Ausrichtungsanfrage des Geräteherstellers ist aktiviert für Display
- Natürliche Ausrichtung der Anzeige im Querformat
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Nicht zutreffend Das Problem sollte in der Anwendungslogik gelöst werden.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION
.
Überschreiben deaktivieren oder deaktivieren
Attribut-Flag festlegen
PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE
an false
.
Property-Flags zum Anpassen der Überschreibung
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE"
android:value="true|false"/>
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
ÜBERSCHREIBEN_ENABLE_KOMPAT_IGNORE_REQUESTED_ORIENTATION
Aktiviert eine kompatible Richtlinie, die das Aktualisieren der App-Ausrichtung als Reaktion auf die App überspringt
Activity#setRequestedOrientation()
wird angerufen, wenn App
den Neustart durchführt oder eine aktive Kamerakompatibilität aufweist.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Property-Flag festlegen
PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION
an true
.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION
.
Überschreiben deaktivieren oder deaktivieren
Property-Flag festlegen
PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION
an false
.
Property-Flags zum Anpassen der Überschreibung
<property android:name="android.window.PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION"
android:value="true|false"/>
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
ÜBERSCHREIBUNG_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
Aktiviert die Kompatibilitätsrichtlinie, die die angeforderte Ausrichtung einer App in
Antwort auf den App-Aufruf
Activity#setRequestedOrientation()
mehr als zweimal
in einer Sekunde, wenn eine Aktivität nicht für die feste Ausrichtung im Letterbox-Format verwendet wird.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Nicht zutreffend Das Problem sollte in der Anwendungslogik gelöst werden.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION
.
Überschreiben deaktivieren oder deaktivieren
Property-Flag festlegen
PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
bis
false
.
Property-Flags zum Anpassen der Überschreibung
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED"
android:value="false"/>
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
ÜBERSCHREIBUNG_RESPECT_ANGEBOTSORIENTATION
Schließt Pakete vom Ignorieren der Ausrichtungsanfrage aus, das aktiviert werden kann von Geräteherstellern für einen Bildschirmbereich oder das gesamte Display.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Nicht zutreffend Das Problem sollte in der Anwendungslogik gelöst werden.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION
.
Überschreiben deaktivieren oder deaktivieren
Keine Deaktivierung. Das Deaktivieren der Überschreibung kann gefährlich sein, wenn die App nicht kompatibel ist mit einem Gerät, bei dem der Gerätehersteller die Ausrichtungsanfrage ignoriert aktiviert ist. Android-Entwickler kontaktieren Beziehungen, um das Überschreiben zu deaktivieren.
Property-Flags zum Anpassen der Überschreibung
Keine Property-Flags für diese Überschreibung.
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_RESPECT_REQUESTED_ORIENTATION <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_RESPECT_REQUESTED_ORIENTATION <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
NEVER_SANDBOX_DISPLAY_APIS
Erzwingt, dass für Pakete nie eine Display
-API-Sandbox angewendet wird
für eine Aktivität im Letterbox- oder
Größenkompatibilitätsmodus. Die Display
-APIs
die Darstellungsbereichgrenzen angeben.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Sie können Aktivitäten angeben, deren Größe angepasst werden kann, indem Sie
Manifest-Attribut android:resizeableActivity
für true
oder das Metadaten-Flag android.supports_size_changes
auf true
.
Apps optimieren
Bei Apps, für die angegeben wird, dass ihre Größe vollständig angepasst werden kann, sollte sich nie auf die Anzeigegröße verlassen werden.
um UI-Elemente zu positionieren. Migrieren Sie Ihre App zu aktuellen APIs, die
stellen Sie WindowMetrics
bereit. Wenn Sie Jetpack Compose verwenden, nutzen Sie die
WindowSizeClass
API zum Zeichnen der Benutzeroberfläche je nach Bildschirmgröße
Bereich, den die App auf dem aktuellen Display hat. Weitere Informationen finden Sie unter
Fenstergrößenklassen:
Überschreiben deaktivieren oder deaktivieren
Keine Deaktivierung. Von verworfenen APIs migrieren.
Property-Flags zum Anpassen der Überschreibung
Keine Property-Flags für diese Überschreibung.
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable NEVER_SANDBOX_DISPLAY_APIS <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable NEVER_SANDBOX_DISPLAY_APIS <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
ALWAYS_SANDBOX_DISPLAY_APIS
Erzwingt, dass für Pakete immer die API-Sandbox von Display
angewendet wird
unabhängig vom Fenstermodus. Die Display
APIs stellen immer die Anwendungsgrenzen bereit.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Sie können Aktivitäten deklarieren, deren Größe nicht geändert werden kann, indem Sie
android:resizeableActivity
-Attribut auf false
oder den
android.supports_size_changes
-Metadaten-Flag auf false
.
Apps optimieren
Apps, für die angegeben wird, dass ihre Größe vollständig angepasst werden kann, sollten sich niemals auf die Anzeigegröße verlassen,
Position von UI-Elementen. Anwendung von verworfenen APIs zu verworfenen APIs migrieren
aktuelle APIs, die WindowMetrics
bereitstellen. Weitere Informationen finden Sie unter
WindowMetricsCalculator
Überschreiben deaktivieren oder deaktivieren
Keine Deaktivierung. Von verworfenen APIs migrieren.
Property-Flags zum Anpassen der Überschreibung
Keine Property-Flags für diese Überschreibung.
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable ALWAYS_SANDBOX_DISPLAY_APIS <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable ALWAYS_SANDBOX_DISPLAY_APIS <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS
Erzwingt, dass Pakete für die folgenden View
APIs eine Sandbox mit Aktivitätsgrenzen ausführen:
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Beheben Sie das Problem im Anwendungscode mithilfe von APIs, die die Grenzen der das App-Fenster und die Offsets relativ zum App-Fenster und nicht Geräteanzeige und die Offsets relativ zum Gerätedisplay
Apps optimieren
Apps sollten View
-APIs verwenden und dabei die Möglichkeit des Letterbox-Bilds berücksichtigen
und der Mehrfenstermodus
wird auf die App angewendet. Weitere Informationen finden Sie unter
WindowMetricsCalculator
Überschreiben deaktivieren oder deaktivieren
Property-Flag festlegen
PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS
an false
.
Property-Flags zum Anpassen der Überschreibung
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS"
android:value="false"/>
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
ÜBERSCHREIBUNG_KAMERA_KOMPAT_DEAKTIVIERT_FORCE_ROTATION
Deaktiviert die erzwungene Drehung. Verbessert die Nutzerfreundlichkeit einiger Apps.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Property-Flag festlegen
PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION
an false
.
Apps optimieren
Verlassen Sie sich nicht auf die im Cache gespeicherte Ausrichtung des Kamerasensors oder auf Geräteinformationen. Für Informationen zur Kamerakompatibilität, siehe Jetzt neu: Kamerasucher und Unterstützung Oberflächen in der Kamera, deren Größe veränderbar ist App.
Überschreiben deaktivieren oder deaktivieren
Property-Flag festlegen
PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION
an true
.
Property-Flags zum Anpassen der Überschreibung
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION"
android:value="true|false"/>
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an, mit der die erzwungene Drehung entfernt wird:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>
So entfernen Sie die Überschreibung, die eine erzwungene Drehung ermöglicht:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
ÜBERSCHREIBEN_KAMERA_KOMPAT_DEAKTIVIERT_AKTUALISIEREN
Deaktiviert die Aktualisierung von Aktivitäten nach erzwungener Rotation. Verbessert die User Experience wenn eine Aktualisierung zu einem Zustandsverlust in Apps führt.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Property-Flag festlegen
PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH
an false
.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION
Überschreiben deaktivieren oder deaktivieren
Property-Flag festlegen
PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH
an true
.
Property-Flags zum Anpassen der Überschreibung
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH"
android:value="true|false"/>
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an, mit der die Aktivitätsaktualisierung entfernt wird:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>
So entfernen Sie die Überschreibung, die das Aktualisieren von Aktivitäten ermöglicht:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
ÜBERSCHREIBEN_KAMERA_KOMPAT_AKTIVIERT_ÜBERARBEITEN_VIA_PAUSE
Sorgt dafür, dass die Pakete, auf die die Aktivitäten angewendet werden, mit einem onResume()
aktualisiert werden
→ onPause()
→ onResume()
-Zyklus anstelle von onResume()
→
onStop()
→ onResume()
, nachdem Kamerakompatibilität erzwungen wird, Drehung zu erzwingen.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Property-Flag festlegen
PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
an true
.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION
Überschreiben deaktivieren oder deaktivieren
Property-Flag festlegen
PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
an false
.
Property-Flags zum Anpassen der Überschreibung
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE"
android:value="true|false"/>
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
ÜBERSCHREIBUNG_KAMERA_LANDSCHAFT_ZU_PORTRAIT
Erzwingt, dass die Kameraausgabe im Hochformat in die entgegengesetzte Ausrichtung zugeschnitten wird Kameraausrichtung stimmt nicht mit der natürlichen Geräteausrichtung überein. Viele Apps können Sie mit dieser Situation nicht umgehen und zeigen Sie ansonsten gestreckte Bilder an.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Property-Flag festlegen
PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT
an true
.
Apps optimieren
Weitere Informationen finden Sie unter OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION
Überschreiben deaktivieren oder deaktivieren
Property-Flag festlegen
PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT
an false
.
Property-Flags zum Anpassen der Überschreibung
<property android:name="android.camera.PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT"
android:value="true|false"/>
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an, mit der das Zuschneiden der Frontkamera auf die innere Kamera angewendet wird:
adb shell am compat enable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>
So entfernen Sie die Überschreibung, wodurch das Zuschneiden der Frontkamera entfernt wird:
adb shell am compat disable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION
Verhindert, dass Apps die App-Bildschirmfreigabe deaktivieren (siehe
Medienprojektion). Wird implementiert, wenn Apps das
Erzwungene createConfigForDefaultDisplay()
API
Vollbildaufnahme zu erstellen und die Privatsphäre der Nutzer zu gefährden, indem die Inhalte
von Benachrichtigungen, die im Vollbildmodus aufgenommen werden, aber nicht im App-Bildschirm
und alle Apps unabhängig vom Fenstermodus nutzen können.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Standardverhalten für die Medienprojektion zulassen (in Android 14, API implementiert)
Ebene 34 mit createScreenCaptureIntent()
)
Nutzer können entscheiden, ob sie den ganzen Bildschirm oder nur eine App
unabhängig vom Fenstermodus. Oder rufen Sie uns an:
createScreenCaptureIntent(MediaProjectionConfig)
mit dem Argument MediaProjectionConfig
, das von einem
Anruf an createConfigForUserChoice()
.
Apps optimieren
Nutzer können auswählen, ob sie das gesamte Display des Geräts oder eine App teilen möchten während der Medienprojektion, was ab Android 14 das Standardverhalten ist.
Die Größe der App (resizeableActivity="true"
) anpassen auf
unterstützen den Mehrfenstermodus.
Überschreiben deaktivieren oder deaktivieren
Da der Datenschutz für Nutzer sehr ernst ist, kann Ihre App die Funktion nicht deaktivieren oder deaktivieren. dieser Überschreibung.
Property-Flags zum Anpassen der Überschreibung
Keine.
ADB-Befehle zum Testen der Überschreibung
Um die Überschreibung anzuwenden, wodurch die Deaktivierung der Teilfreigabe des Bildschirms durch die App abgebrochen wird (d. h. aktiviert die Teilfreigabe des Bildschirms):
adb shell am compat enable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>
Um die Überschreibung zu entfernen, die es der App ermöglicht, einen Teilbildschirm zu deaktivieren Teilen:
adb shell am compat disable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.
ÜBERSCHREIBEN_ENABLE_KOMPAT_FAKE_FOCUS
Aktiviert das Senden eines gefälschten Fokus für Apps ohne Fokus im Splitscreen-Modus. Einige Die Spiel-Engines warten darauf, dass sie sich konzentrieren, bevor sie den Inhalt der App zeichnen. und so: Mit falschem Fokus können Apps vermeiden, dass sie geschwärzt bleiben, wenn sie fortgesetzt werden und nicht aber im Fokus stehen.
Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können
Property-Flag festlegen
PROPERTY_COMPAT_ENABLE_FAKE_FOCUS
bis
true
.
Apps optimieren
Du kannst dieses Problem vermeiden, wenn deine App mehrere Ausrichtungen und Konfigurationsänderungen. Bereiten Sie Ihre App auf einen großen Bildschirm vor, indem Sie der Qualitätsrichtlinien für Apps mit großen Bildschirmen
Wenn du die Unity-Spiel-Engine verwendest, führe ein Upgrade auf Version 2019.4.40 oder höher durch und
exportieren Sie Ihr Spiel noch einmal. Option Resizable Window
beibehalten
im Android Player aktiviert
Einstellungen.
Überschreiben deaktivieren oder deaktivieren
Property-Flag festlegen
PROPERTY_COMPAT_ENABLE_FAKE_FOCUS
bis
false
.
Property-Flags zum Anpassen der Überschreibung
<property android:name="android.window.PROPERTY_COMPAT_ENABLE_FAKE_FOCUS"
android:value="true|false"/>
ADB-Befehle zum Testen der Überschreibung
So wenden Sie die Überschreibung an:
adb shell am compat enable OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS <package>
So entfernen Sie die Überschreibung:
adb shell am compat disable OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS <package>
Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.