Mam jedno z moich działań, których nie chciałbym obracać, ponieważ uruchamiam AsyncTask, a obracanie ekranu powoduje jego ponowne uruchomienie.
Czy istnieje sposób, aby powiedzieć tej czynności „NIE OBRACAJ ekranu, nawet jeśli użytkownik trzęsie swoim telefonem jak szalony”?
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
Odpowiedzi:
Dodaj
lub
do
<activity>
elementu / ów w manifeście i gotowe.źródło
Możesz śledzić poniżej logikę, aby zapobiec Automatyczne obracanie ekranu podczas swojej
AsyncTask
jest uruchomiony:getRequestedOrientation()
.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR)
.AsyncTask
.AsyncTask
przywróć poprzedni status orientacji za pomocąsetRequestedOrientation(oldOrientation)
.Należy pamiętać, że istnieje kilka sposobów dostępu do
Activity
właściwości (które działają w wątku interfejsu użytkownika) w plikuAsyncTask
. Możesz wdrożyć swojąAsyncTask
klasę wewnętrzną lub użyć wiadomości,Handler
która szturcha twojąActiviy
klasę.źródło
W pliku manifestu do każdego działania, które chcesz zablokować obrót ekranu, dodaj: jeśli chcesz zablokować go w trybie poziomym:
lub jeśli chcesz zablokować go w trybie pionowym:
źródło
Najłatwiejszym sposobem było to zrobić
w ramach onCreate, zaraz po
więc...
źródło
Zamiast wchodzić w AndroidManifest, możesz po prostu to zrobić:
Jedyną wadą jest to, że wymaga interfejsu API na poziomie 18 lub wyższym. Więc w zasadzie jest to czubek włóczni.
źródło
Activity.java
AndroidManifest.xml
źródło
Wystarczy następujący atrybut w AKTYWNOŚCI w AndroidManifest.xml:
Zatem pełny węzeł aktywności byłby:
źródło
Dodaj:
źródło
Dodaj następujące elementy do pliku AndroidManifest.xml
[app> src> main> AndroidManifest.xml]
Przykład:
źródło
Jeśli używasz Android Developer Tools (ADT) i Eclipse , możesz przejść do AndroidManifest.xml -> zakładka Aplikacja -> zejść w dół i wybrać swoją aktywność. Na koniec wybierz preferowaną orientację. Możesz wybrać jedną z wielu opcji.
źródło
Musisz dodać następujący kod w pliku manifest.xml. Aktywność, dla której nie powinna się obracać, w tej aktywności dodaj ten element
Wtedy się nie obraca.
źródło
Możesz spróbować w ten sposób
źródło
Użyj AsyncTaskLoader, aby zachować bezpieczeństwo danych, nawet jeśli aktywność ulegnie zmianie, zamiast AsyncTask, który jest lepszym sposobem na tworzenie aplikacji niż zapobieganie obracaniu ekranu.
źródło
Zapobiegaj rotacji ekranu, po prostu dodaj następujący wiersz do swoich manifestów.
To działa dla mnie.
źródło
Użytkownik
"portrait"
w pliku AndroidManifest.xml może wydawać się dobrym rozwiązaniem. Wymusza jednak na niektórych urządzeniach (które działają najlepiej w krajobrazie) przejście do pionu, nie uzyskując właściwej orientacji. W najnowszej wersji Androida wystąpi błąd. Więc moja sugestia jest lepsza w użyciu"nosensor"
.źródło