1058 Stimmen

Wie kann ich den Querformatmodus in Android deaktivieren?

Wie kann ich den Querformatmodus für einige Ansichten in meiner Android-App deaktivieren?

1819voto

Yoni Samlan Punkte 37475

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 als portrait para Android 2.3 (Gingerbread) und später; dies ermöglicht das Hochformat, das bei der Verwendung von Tablets sehr üblich ist.

120voto

Rich Punkte 4029

Ich war mir nicht bewusst, dass die AndroidManifest.xml Dateiwechsel, bis ich diesen Beitrag gelesen habe, also habe ich in meinen Anwendungen stattdessen dies verwendet:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // Fixed portrait orientation

53voto

Deepak Swami Punkte 3848

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() .

32voto

Mike Weir Punkte 2917

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.

22voto

IntelliJ Amiya Punkte 72793

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);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X