2013-02-14 14 views
30

voglio cambiare l'orientamento a livello di codice durante l'esecuzione di mio app Android, con queste righe di codice:cambiare l'orientamento dello schermo in Android senza ricaricare l'attività

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

Lavorano fino ad ora, ma il problema principale è che la tutta l'attività viene ricaricata quando l'orientamento dello schermo cambia, e non lo voglio. È possibile? Grazie.

EDIT: OK, dopo che ho scoperto quello che mi mancava. Ho dovuto includere anche "Screensize" nella proprietà configChanges, in modo da avere

android:configChanges="orientation|screenSize" 

risolto il tutto.

+0

Credo che si dovrebbe verificare la terza scelta in questa risposta. Credo che sia così che PhoneGap gestisce i cambiamenti di orientamento http://stackoverflow.com/questions/5913130/dont-reload-application-when-orientation-changes – MikeIsrael

risposta

4

È necessario eseguire l'override onSaveInstanceState (Bundle savedInstanceState) e scrivere i valori dello stato di applicazione che si desidera modificare il parametro Bundle

+0

+1, questa è la risposta corretta => ciò che ha chiesto non è posible , solo con questa soluzione può fare quello che vuole, solo con API sopra 13 android: configChanges = "orientation | screenSize" –

1

In AndroidManifest file di aggiungere android:configChanges="orientation" per l'attività che si desidera gestire questo orientamento

Nell'attività utilizzare il metodo sovrascritto suConfigurationChange. Compito che si desidera gestire nel cambio di orientamento.

+0

Grazie, ma ancora non funziona. Potrebbe essere perché sto usando Phonegap/HTML5 nell'attività? Grazie. – luisfer

+0

puoi aggiungere altro codice? –

+0

@RajShah per cosa serve più codice? hai letto la domanda? che ne dici del titolo? –

1

chiamare questo metodo e impostare file manifesto

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(); 
     } 
    } 
Problemi correlati