Wie kann ich den Querformatmodus für einige Ansichten in meiner Android-App deaktivieren?
Antworten
Zu viele Anzeigen?Hinzufügen android:screenOrientation="portrait"
zu der Aktivität in der AndroidManifest.xml. Zum Beispiel:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" />
Da dies zu einer sehr beliebten Antwort geworden ist, fühle ich mich sehr schuldig, denn ein erzwungenes Porträt ist selten die richtige Lösung für die Probleme, auf die es häufig angewandt wird.
Die wichtigsten Vorbehalte gegen ein erzwungenes Porträt:
- Dies entbindet Sie nicht davon, sich über die Ereignisse im Lebenszyklus von Aktivitäten Lebenszyklus-Ereignisse oder die ordnungsgemäße Speicherung/Wiederherstellung des Zustands. Es gibt viele Dinge außer der Rotation einer Anwendung, die eine Aktivität auslösen können Zerstörung/Wiederherstellung auslösen können, einschließlich unvermeidbarer Dinge wie Multitasking. Es gibt keine Abkürzungen; lernen Sie die Verwendung von Bundles und
retainInstance
Fragmente. - Denken Sie daran, dass es im Gegensatz zum iPhone einige Geräte gibt, bei denen das Hochformat nicht die gängige Ausrichtung ist. Wenn Benutzer Geräte mit Hardware-Tastaturen oder Gamepads wie das Nvidia Shield verwenden, wird auf Chromebooks an. Faltbares oder am Samsung DeX Wenn Sie das Hochformat erzwingen, kann das Ihre App-Erfahrung entweder einschränken oder zu einem großen Problem für die Benutzerfreundlichkeit werden. Wenn Ihre App kein starkes UX-Argument hat, das zu einer negativen Erfahrung für die Unterstützung anderer Ausrichtungen führen würde, sollten Sie wahrscheinlich nicht das Querformat erzwingen. Ich spreche von Dingen wie "dies ist eine Kassen-App für ein bestimmtes Tablet-Modell, das immer in einem festen Hardware-Dock verwendet wird".
Daher sollten die meisten Anwendungen die Sensoren, die Software und die physische Konfiguration des Telefons selbst entscheiden lassen, wie der Benutzer mit Ihrer Anwendung interagieren möchte. Es gibt jedoch ein paar Fälle, über die Sie nachdenken sollten, wenn Sie mit dem Standardverhalten der App nicht zufrieden sind sensor
Orientierung in Ihrem Anwendungsfall:
- Wenn Ihr Hauptanliegen versehentliche Ausrichtungsänderungen während der Aktivität sind, mit denen die Sensoren und die Software des Geräts nicht gut zurechtkommen (z. B. bei einem neigungsbasierten Spiel), sollten Sie die Unterstützung von Quer- und Hochformat in Betracht ziehen, aber mit
nosensor
für die Orientierung. Dies erzwingt das Querformat auf den meisten Tablets und das Hochformat auf den meisten Telefonen, aber ich würde dies trotzdem nicht für die meisten "normalen" Anwendungen empfehlen (einige Benutzer tippen einfach gerne im Querformat auf dem Softkeyboard ihres Telefons, und viele Tablet-Benutzer lesen im Hochformat - und Sie sollten sie lassen). - Wenn Sie todavía aus irgendeinem Grund ein Porträt erzwingen müssen,
sensorPortrait
kann besser sein alsportrait
para Android 2.3 (Gingerbread) und später; dies ermöglicht das Hochformat, das bei der Verwendung von Tablets sehr üblich ist.
Hinzufügen android:screenOrientation="portrait"
in Ihrer Manifestdatei, wo Sie Ihre Aktivität deklarieren. Zum Beispiel so:
<activity
android:name=".yourActivity"
....
android:screenOrientation="portrait" />
Wenn Sie es mit Java-Code machen wollen, versuchen Sie es:
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
bevor Sie anrufen setContentView
Methode für Ihre Aktivität in onCreate()
.
Viele der hier gegebenen Antworten schlagen vor, Folgendes zu verwenden "portrait"
in Ihrer AndroidManifest.xml-Datei. Dies scheint eine gute Lösung zu sein, aber wie in der Dokumentation erwähnt, werden Geräte, die nur im Querformat funktionieren, ausgesondert. Sie zwingen auch bestimmte Geräte (die am besten im Querformat funktionieren) in das Hochformat zu gehen, nicht immer die richtige Ausrichtung.
Mein Vorschlag ist die Verwendung von "nosensor"
stattdessen. Dadurch wird das Gerät seine bevorzugte Standardausrichtung verwenden, keine Käufe/Downloads bei Google Play blockieren und sicherstellen, dass der Sensor Ihr Spiel (in meinem Fall NDK) nicht stört.
Wenn Sie Folgendes deaktivieren möchten Landscape mode for your Android app
(oder eine einzelne Aktivität) müssen Sie nur noch hinzufügen:
android:screenOrientation="portrait"
mit dem Aktivitäts-Tag in AndroidManifest.xml
Datei.
Wie:
<activity
android:name="YourActivityName"
android:icon="@drawable/ic_launcher"
android:label="Your App Name"
android:screenOrientation="portrait">
Eine andere Möglichkeit: Ein programmatischer Ansatz.
Wenn Sie dies programmatisch, d. h. mit Java-Code, tun möchten. Sie können dies tun, indem Sie den folgenden Code in die Java-Klasse der Aktivität einfügen, die nicht im Querformat angezeigt werden soll.
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
- See previous answers
- Weitere Antworten anzeigen