Android: Vorübergehend deaktivieren Sie die Ausrichtung in einer Aktivität
Meine Haupttätigkeit hat einige code, der macht einige Datenbank-änderungen, die sollte nicht unterbrochen werden. Ich bin tun, die schweres heben in einem anderen thread, und mit einer Fortschrittsanzeige, die ich als nicht erlassen werden. Allerdings ist mir aufgefallen, dass wenn ich wechsle mein Handy startet die Aktivität, die ist WIRKLICH schlecht für den Prozess, der ausgeführt wurde, und bekomme ich einen Force Close.
Was ich tun möchte, ist programmgesteuert deaktivieren Sie änderungen der Bildschirmausrichtung bis mein Prozess abgeschlossen ist, an die Zeit, Orientierung, änderungen sind aktiviert.
InformationsquelleAutor der Frage Christopher Perry | 2010-08-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als erklärt von Chris in seinem selbst-Antwortruft
dann
wirklich funktioniert wie Charme... auf echten Geräten !
Glaube nicht, dass es kaputt ist, beim Test auf dem emulator, die Tastenkombination Strg+F11 Verknüpfung jederzeit ändern der Ausrichtung des Bildschirms, ohne Emulation-sensoren bewegt.
EDIT: das war nicht die beste mögliche Antwort. Wie bereits in den Kommentaren gibt es Probleme mit dieser Methode. Die richtige Antwort ist hier.
InformationsquelleAutor der Antwort Kevin Gaudin
Keiner der anderen Antworten hat den trick perfekt für mich, aber hier ist was ich gefunden habe, die funktioniert.
Sperren der Ausrichtung auf die aktuellen...
Als Orientierung ändern sollte wieder erlaubt werden, wieder auf die default...
InformationsquelleAutor der Antwort Pilot_51
Hier ist eine vollständige und up-to-date-Lösung, die funktioniert für API 8+, funktioniert die umgekehrte hoch-und Querformat, und funktioniert auf einem Galaxy-tab, wo die "Natürliche" Orientierung der Landschaft (nennen
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
zum entsperren der Orientierung):InformationsquelleAutor der Antwort Roy
Zu verwalten, um auch die umgekehrte Orientierung Modi, die ich verwendet habe, die code zu beheben, die Handlungsorientierung:
Zuzulassen und wieder die Orientierung:
InformationsquelleAutor der Antwort Ivan BASART
Fand ich die Antwort. Um dies zu tun, in einer Tätigkeit, die Sie anrufen können
setRequestedOrientation(int)
mit einem der hier angegebenen Werte: http://developer.android.com/reference/android/R.attr.html#screenOrientationBevor ich gekickt aus meinem thread, ich rief
setRequestedOrientation(OFF)
(OFF = nosensor) und wenn der thread fertig war rief ichsetRequestedOrientation(ON)
(=sensor). Funktioniert wie ein Charme.InformationsquelleAutor der Antwort Christopher Perry
Verwenden
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
fürVerriegelung aktuellen Ausrichtung sein, ob es im hoch-oder Querformat.
Verwenden
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
für das entsperren Orientierung.InformationsquelleAutor der Antwort Sudhir Sinha
Danke an alle. Ich veränderte Pilot_51 Lösung, um sicherzustellen, dass ich im vorherigen Zustand wiederhergestellt. Ich warf auch in einer Veränderung der für die Unterstützung von nicht-Querformat und nicht hochformat-Bildschirme (aber noch nicht getestet, es auf einem solchen Bildschirm).
Dann wiederherstellen
InformationsquelleAutor der Antwort ProjectJourneyman
Hier ist eine Lösung, die funktioniert zu jeder Zeit und bewahrt aktuellen Ausrichtung (mit
Activity.Info.SCREEN_ORIENTATION_PORTRAIT
setzt auf 0° zum Beispiel, aber Benutzer kann eine 180° - Orientierung als aktuellen).InformationsquelleAutor der Antwort Adrien Cadet
InformationsquelleAutor der Antwort tdjprog
Funktioniert dies perfekt für mich. Es löst problem mit verschiedenen "Natürliche Orientierung" von tablet/Telefon 😉
InformationsquelleAutor der Antwort Naxos
verwenden
ActivityInfo.SCREEN_ORIENTATION_USER
wenn Sie wollen, drehen Sie den Bildschirm nur zu, wenn seine aktivierten Gerät.InformationsquelleAutor der Antwort Pawan M
Habe ich mit einer Lösung kommen, die abhängig von der display-rotation und dann entscheidet die Ausrichtung des Geräts. Aus der Kenntnis der Orientierung, wir können die Ausrichtung sperren, und geben Sie es später, wenn nötig. Diese Lösung kann auch feststellen, ob das Gerät in reverse-Landschaft - Modus.
Dann später, wenn wir müssen, lassen Sie die Ausrichtung können wir diese Methode aufrufen:
InformationsquelleAutor der Antwort Mansour Fahad
Ich denke dieser code ist einfacher zu Lesen.
InformationsquelleAutor der Antwort nor_miya
Fand ich dann eine Kombination der bestehenden rotation/Orientierung-Werte sind erforderlich, um die vier Möglichkeiten; es gibt die hochformat/Querformat-Werte und der natürlichen Ausrichtung des Geräts. Lassen Sie uns sagen, dass die Geräte " Natürliche Orientierung wird ein Wert für Drehung von 0 Grad, wenn der Bildschirm ist in seiner "natürlichen" Ausrichtung hochformat oder Querformat. Ähnlich, es wird ein Wert für Drehung von 90 Grad, wenn es im landscape-oder portrait (beachte, dass es gegenüber von der orientation bei 0 Grad). Also die rotation Werte, die nicht 0 oder 90 Grad bedeutet, dass "Reverse" - Orientierung. Ok, hier einige code:
InformationsquelleAutor der Antwort Magic Hands Pellegrin
Ich wusste nicht, wie die meisten Antworten hier, da in der unlock setzen Sie es weder als Gegensatz zu dem vorherigen Zustand. ProjectJourneyman hast, nehmen Sie es in Betracht, das war toll, aber ich bevorzugte den Sperrcode von Roy. Also, meine Empfehlung wäre eine Mischung aus den beiden:
InformationsquelleAutor der Antwort Gadzair
Können Sie
InformationsquelleAutor der Antwort moviehay0032
verwenden, die code-Zeile
in ur activity oncreate-Methode
InformationsquelleAutor der Antwort Zeeshan Akhter