Mam aplikację, która pokazuje pełnoekranowe bitmapy w działaniu. Aby zapewnić szybki czas ładowania, ładuję je do pamięci. Ale kiedy ekran zmienia orientację, chciałbym wyczyścić pamięć podręczną, aby wypełnić ją ponownie bitmapami, które mieszczą się w nowych wymiarach. Jedynym problemem jest to, że aby to zrobić, muszę wykryć, kiedy nastąpi zmiana orientacji. Czy ktoś wie, jak to wykryć?Jak wykrywać, kiedy urządzenie przełącza się z trybu portretowego na poziomy?
Odpowiedz
Zobacz oficjalną dokumentację http://developer.android.com/guide/topics/resources/runtime-changes.html
Zmiana będzie faktycznie utworzyć nowy widok i onCreate zostanie wywołana ponownie.
Ponadto można sprawdzić poprzez
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
}
Wielkie dzięki za wspaniałą odpowiedź! –
@noone: Należy zwrócić uwagę, że ta metoda zostanie WYŁĄCZNIE wybrana, jeśli wybrano konfiguracje, które mają być obsługiwane za pomocą atrybutu android.R.attr # configChanges w manifeście. Zobacz javadoc! – user504342
Dzięki stary, to działa również dla mnie. – Suniel
Zwykle wywołania zmiany orientacji OnCreate()
, chyba że zrobiłeś coś, aby inaczej.
Możesz umieścić tam logikę.
Oczywiście ma sens, ale jak upewnić się, że nie ładuję ponownie pamięci podręcznej za każdym razem, gdy jest wywoływana funkcja onCreate? Metoda onCreate może zostać wywołana bezpośrednio po odtworzeniu działania po połączeniu telefonicznym, a pamięć podręczna nie powinna być ponownie ładowana w tej sytuacji. –
@Poplitou zobacz odpowiedź Siika na temat 'onSavedInstanceState' oraz również http://stackoverflow.com/questions/4096169/onsaveinstancestate-and-onrestoreinstancestate – sealz
Wielkie dzięki za link –
Można sprawdzić onSavedInstanceState
od wybranej metody onCreate
, jeśli to nie jest null Oznacza to zmiana konfiguracji.
Dobra, rozumiem, jak to zrobić, dziękuję za wspaniałą odpowiedź! –
Innym podejściem jest używanie OrientationEventListener.
Może być stosowany tak:
OrientationEventListener mOrientationEventListener = new OrientationEventListener(
this, SensorManager.SENSOR_DELAY_NORMAL) {
@Override
public void onOrientationChanged(int orientation) {
//checking if device was rotated
if (orientationPortrait != isPortrait(orientation)) {
orientationPortrait = !orientationPortrait;
Log.d(TAG, "Device was rotated!");
}
}
};
Aby sprawdzić kierunek:
private boolean isPortrait(int orientation) {
return (orientation >= (360 - 90) && orientation <= 360) || (orientation >= 0 && orientation <= 90);
}
I nie zapomnij, aby włączać i wyłączać słuchacz:
if (mOrientationEventListener != null) {
mOrientationEventListener.enable();
}
if (mOrientationEventListener != null) {
mOrientationEventListener.disable();
}
Myślę, że zmiana konfiguracji jest jedną rzeczą, w tym przypadku naConfigurationChanged jest drogą do zrobienia. Ale jeśli masz zablokowane zmiany orientacji i nadal chcesz otrzymywać powiadomienia, najlepszym wyborem są osoby nastawione na orientację. Dzięki Bogdan. – Murciegalo84
- 1. Jak wykrywać, kiedy kończy się odtwarzanie dźwięku?
- 2. Jak sprawdzić, kiedy ładuje się urządzenie?
- 3. Jak wykrywać, kiedy laptop działa na bateriach?
- 4. Jak wykrywać, kiedy zmiana rozmiaru rozpoczyna się i kończy?
- 5. Chrome przełącza się na seryjne pobieranie skryptów
- 6. Jak wykrywać, kiedy przycisk naciśnięty i zwolniony na Androidzie
- 7. Jak wykrywać urządzenie, aby pokazać model telefonu komórkowego?
- 8. Jak wykrywać dotyk na NSTextAttachment
- 9. Co dzieje się z połączeniem TCP, gdy komputer przełącza się w tryb uśpienia?
- 10. Pole wyboru Reakcja nie przełącza się
- 11. Programowo programowo przełącza tryb samolotowy
- 12. WPF - Jak wykrywać, kiedy dodawane są nowe elementy potomne?
- 13. Jak wykrywać, kiedy Przełącznik jest przesuwany, nie kliknięty
- 14. Jak wykrywać, kiedy został wyświetlony panel dodatku SDK?
- 15. Jak wykrywać, kiedy inne rozszerzenie Chrome zastępuje tę samą stronę?
- 16. Jak wykrywać, kiedy użytkownik naciśnie Enter w polu wejściowym
- 17. Jak wykrywać obecność klawiatury sprzętowej?
- 18. Urządzenie z Androidem nie wyświetla się w DDMS
- 19. Dlaczego nie drukuje się niczego na każdej iteracji pętli, kiedy używam trybu uśpienia?
- 20. Oddzwonienie na urządzenie łączące się z Hotspotem Wifi
- 21. Jak przełączyć się na tryb VI edycji na terminalu mac
- 22. Jak wykrywać fokus przeglądarki na urządzeniach mobilnych?
- 23. Zaplanuj urządzenie, aby się obudzić.
- 24. Jak wykrywać zatrzymanie myszy
- 25. jak się dowiedzieć, kiedy kończy się ładowanie listview na Androidzie
- 26. Jak przejść z trybu użytkownika do trybu jądra?
- 27. Jak wykryć, kiedy urządzenie audio jest odłączone w CoreAudio?
- 28. Jak wykrywać zdarzenie rozłączenia na kanale z Faye
- 29. Jak wykrywać gest machnięcia na webview
- 30. Jak wykrywać kierunek myszy na konkretnym elemencie?
możliwe duplikat [ Jak wykrywać zmiany orientacji w układzie w systemie Android?] (Http://stackoverflow.com/questions/5726657/how-to-detect-orientation-change-in-layout-in -android) – Sam