Schauen Sie sich die AndroidManifest.xml ( Link ) in Zeile 9 an:
<activity android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden" android:name="VncCanvasActivity">
Diese Zeile gibt die screenOrientation
Landschaft als Querformat an, aber der Autor überschreibt alle Änderungen der Bildschirmausrichtung mit configChanges="orientation|keyboardHidden"
. Dies weist auf eine überschriebene Funktion in VncCanvasActivity.java hin.
Wenn Sie sich VncCanvasActivity ansehen, steht in Zeile 109 die überschriebene Funktion:
@Override
public void onConfigurationChanged(Configuration newConfig) {
// ignore orientation/keyboard change
super.onConfigurationChanged(newConfig);
}
Der Autor hat ausdrücklich einen Kommentar abgegeben, um Änderungen an Tastatur oder Ausrichtung zu ignorieren.
Wenn Sie dies ändern möchten, können Sie zur oben gezeigten Datei AndroidManifest.xml zurückkehren und die Zeile in Folgendes ändern:
<activity android:screenOrientation="sensor" android:name="VncCanvasActivity">
Dies sollte das Programm so ändern, dass beim Drehen des Geräts vom Hoch- zum Querformat gewechselt wird.
Dies funktioniert möglicherweise, kann jedoch das Aussehen der Benutzeroberfläche beeinträchtigen, je nachdem, wie das Layout erstellt wurde. Sie müssen das berücksichtigen. Abhängig davon, wie die Aktivitäten codiert sind, stellen Sie möglicherweise fest, dass beim Ändern der Bildschirmausrichtung die Werte, die in Eingabefelder eingegeben wurden, verschwinden. Dies muss möglicherweise auch behandelt werden.
configChanges
Attribut benötigt? Es scheint auf meinem Nicht-Tastatur-Telefon ohne es zu funktionieren ... In welchen Situationen ändert sich die Ausrichtung in Hochformat, wenn Sie dasscreenOrientation="landscape"
aber weglassenconfigChanges
?If your application targets API level 13 or higher (as declared by the minSdkVersion and targetSdkVersion attributes), then you should also declare the "screenSize" configuration, because it also changes when a device switches between portrait and landscape orientations.
Sie können dieselben Daten auch in Ihrem Java-Code festlegen.
Mit anderen Werten in ActivityInfo können Sie das sensorgesteuerte oder gesperrte Porträt wiederherstellen. Persönlich möchte ich es auf etwas im Manifest setzen, wie in einer anderen Antwort auf diese Frage vorgeschlagen, und es später mit dem obigen Aufruf im Android SDK ändern, wenn es nötig ist.
quelle
If the activity is currently in the foreground or otherwise impacting the screen orientation, the screen will immediately be changed (possibly causing the activity to be restarted)
In meinem
OnCreate(Bundle)
Fall mache ich im Allgemeinen Folgendes:quelle
Sie können die Ausrichtung einer Aktivität im Manifest angeben. Siehe hier .
quelle
Im Manifest:
In Ihrer Tätigkeit:
quelle
Das Folgende ist der Code, mit dem ich alle Aktivitäten im Querformat angezeigt habe:
quelle
Eine schnelle und einfache Lösung besteht darin, für die Datei AndroidManifest.xml für jede Aktivität, die Sie in den Querformatmodus zwingen möchten, Folgendes hinzuzufügen:
quelle
Dies funktioniert für Xamarin.Android. In OnCreate ()
quelle
Das ist es!! Ich warte lange auf dieses Update.
Ich habe ein altes Android-Problem über den Doppelstart einer Aktivität, für die ein (programmgesteuerter) Querformatmodus erforderlich ist:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
Jetzt macht Android den Landschaftsmodus beim Start.
quelle
Arslan, warum willst du die Orientierung programmatisch erzwingen, obwohl es bereits einen Weg im Manifest gibt?
<activity android:name=".youractivityName" android:screenOrientation="portrait" />
quelle
Es ist IMO falsch, es im Code zu tun, und noch mehr, wenn Sie es in onCreate einfügen. Tun Sie es im Manifest und das "System" kennt die Ausrichtung vom Start der App. Und diese Art von Meta oder Top-Level "Anleitung" sollte im Manifest sein. Wenn Sie es sich selbst beweisen möchten, setzen Sie eine Unterbrechung in onCreate der Aktivität. Wenn Sie es dort im Code tun, wird es zweimal aufgerufen: Es startet im Hochformat und wird dann auf Querformat umgeschaltet. Dies geschieht nicht, wenn Sie dies im Manifest tun.
quelle
Fügen Sie die folgenden Zeilen in Aktivität hinzu
Sie müssen an jeder Aktivität teilnehmen
für die Landschaft
für Porträt
Hier das Beispiel für MainActivity
quelle
Für Android 4.0 (Ice Cream Sandwich) und höher musste ich diese neben dem
landscape
Wert hinzufügen .Nur zu verwenden
keyboardHidden|orientation
würde immer noch zu Speicherverlusten und zur Wiederherstellung meiner Aktivitäten führen, wenn der Netzschalter gedrückt wird.quelle
orientation|screensize
nicht in allen Fällen ausreichend. Es würde automatisch zum Porträt zurückkehren.Verwenden Sie ActivityInfo (android.content.pm.ActivityInfo) in Ihrer onCreate-Methode, bevor Sie die setLayout-Methode wie folgt aufrufen
quelle
Nur
Android verwenden: screenOrientation = "Porträt" Tools: ignore = "LockedOrientationActivity"
quelle
Drücken Sie
CTRL+F11
, um den Bildschirm zu drehen.quelle