2013-02-14 15 views
30

Chcę zmienić orientację programowo podczas uruchamiania mojego Android App, z tych linii kodu:zmienić orientację ekranu w Androidzie bez przeładowywania aktywność

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); 

Działają one tak daleko, ale głównym problemem jest to, że cała aktywność jest ponownie ładowana po zmianie orientacji ekranu i nie chcę tego. Czy to możliwe? Dzięki.

EDYCJA: OK, po tym, jak dowiedziałem się, czego mi brakowało. Musiałem to także „Rozmiar ekranu” w nieruchomości configChanges, więc uwzględniając

android:configChanges="orientation|screenSize" 

rozwiązać całą sprawę.

+0

myślę, że należy sprawdzić trzeci wybór w tej odpowiedzi. Wierzę, że w ten sposób PhoneGap obsługuje zmiany orientacji http://stackoverflow.com/questions/5913130/dont-reload-application-when-orientation-changes – MikeIsrael

Odpowiedz

4

Trzeba zastąpić onSaveInstanceState (Bundle savedInstanceState) i zapisywać wartości stanu aplikacji, które chcesz zmienić parametr Bundle

+0

+1, to jest poprawna odpowiedź => to, o co prosi, nie jest posible , dzięki temu rozwiązaniu może robić, co chce, tylko z API powyżej 13 android: configChanges = "orientation | screenSize" –

1

W AndroidManifest pliku dodać android:configChanges="orientation" dla aktywności chcesz obsługiwać tej orientacji

W działaniu użyj metody overConnectedConfigurationChange. Wykonaj zadanie, które chcesz obsłużyć podczas zmiany orientacji.

+0

Dziękuję, ale nadal nie działa. Czy to możliwe, ponieważ używam Phonegap/HTML5 w działaniu? Dziękuję Ci. – luisfer

+0

możesz dodać więcej kodu? –

+0

@RajShah dla czego potrzebujesz więcej kodu? Czytałeś to pytanie? co powiesz o tytule? –

1

wywołać tę metodę i ustawić plik manifestu

android:configChanges="orientation|screenSize|keyboardHidden" 

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(); 
     } 
    } 
Powiązane problemy