it-swarm.com.de

Bildschirmausrichtung sperren (Android)

Mögliches Duplikat:
So deaktivieren Sie die Änderung der Ausrichtung in Android?

Ich schreibe eine Android Anwendung, die Tabs mit unterschiedlichen Inhalten (Aktivitäten) verwendet. In einer dieser Aktivitäten möchte ich die Bildschirmausrichtung auf "Querformat" sperren, aber im bei anderen aktivitäten möchte ich die normale ausrichtung (laut sensor).

Was ich jetzt tue, ist, dass ich anrufe

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

wenn ich in den Querformatmodus wechsle, und

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

wenn ich zu den anderen Aktivitäten zurückschalte. Dies scheint jedoch nicht zu funktionieren, da die gesamte Anwendung abstürzt. Was ist der normale Ansatz für dieses Problem?

143
user573536

Im Manifest können Sie die screenOrientation auf Querformat einstellen. In XML würde das ungefähr so ​​aussehen:

<activity Android:name="MyActivity"
Android:screenOrientation="landscape"
Android:configChanges="keyboardHidden|orientation|screenSize">
...
</activity>

Wobei MyActivity diejenige ist, die Sie in der Landschaft bleiben möchten.

Die Zeile Android:configChanges=... Verhindert, dass onResume(), onPause() aufgerufen wird, wenn der Bildschirm gedreht wird. Ohne diese Leitung bleibt die Rotation wie gewünscht, aber die Anrufe werden trotzdem getätigt.

Hinweis: keyboardHidden und orientation sind für <Android 3.2 (API-Stufe 13) erforderlich, und alle drei Optionen sind für 3.2 oder höher erforderlich, nicht nur für orientation.

238
Kevin Dion

Ich hatte ein ähnliches Problem.

Als ich eintrat

<activity Android:name="MyActivity" Android:screenOrientation="landscape"></activity>

In der Manifestdatei führte dies dazu, dass diese Aktivität im Querformat angezeigt wurde. Als ich jedoch zu früheren Aktivitäten zurückkehrte, wurden sie in lanscape angezeigt, obwohl sie auf Hochformat eingestellt waren. Jedoch durch Hinzufügen

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

unmittelbar nachdem der OnCreate-Abschnitt der Zielaktivität das Problem behoben hat. Also verwende ich jetzt beide Methoden.

57
Alan Cartwright

suchen Sie in der Android Manifest-Datei Ihres Projekts die Aktivitätserklärung, deren Ausrichtung Sie korrigieren möchten, und fügen Sie den folgenden Code hinzu:

Android:screenOrientation="landscape"

für Querformat und Hochformat den folgenden Code hinzufügen,

Android:screenOrientation="portrait"
32
HjK