Android-Start-Layout mit der aktuellen Orientierung, nach der Deaktivierung der Rotation
-
29-10-2019 - |
Frage
Ich möchte die Verwendung einer Aktivität im Quer- / Hochformat ermöglichen. Die Aktivität beginnt mit dem Layout für die aktuelle Ausrichtung (dh vor dem Start der Aktivität). Danach muss es daran festhalten und darf nicht auf Orientierungsänderungen reagieren.
Ich habe versucht zu setzen
android:configChanges="orientation"
im Manifest der Aktivität und überschreiben
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
}
nichts zu tun (versuchte auch den Superanruf zu kommentieren, aber dies führte zu einer Ausnahme) Dies hat jedoch nicht den Effekt, dass die Rotationsänderung deaktiviert wird. Die Änderung wird verarbeitet und das Layout rekonstruiert. Es wird einfach nicht das richtige verwendet.
Und ich kann nicht verwenden
android:screenOrientation
Weil ich anscheinend immer nur einen Modus angeben muss und das auch nicht brauche. Und wenn ich dort etwas spezifiziere, wird die Aktivität beim Drehen rekonstruiert. Versucht mit
android:screenOrientation="nosensor"
das macht nichts
Hier gibt es eine Sperre der aktuellen Ausrichtung mit Code http://www.samcoles.co.uk/ Handy / Android-Lock-and-Unlock-Bildschirm-Orientierung /
Es erzielt jedoch den gleichen Effekt wie das Festlegen der Ausrichtung in XML (behält das Layout bei, rekonstruiert jedoch die Aktivität). Es ist etwas näher an dem, was ich will (behält die Orientierung von Anfang an bei), rekonstruiert aber die Aktivität und ich möchte nicht, dass sie überhaupt reagiert.
Lösung
Android: configchanges="Orientierung" funktioniert überhaupt nicht auf dem Emulator, aber es funktioniert gut auf Geräten.
Andere Tipps
versuchen Sie generasacodicetagpre.
Fügen Sie dies zu onCreate hinzu
if (this.getResources().getConfiguration().orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);}
else {setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);}