it-swarm.dev

Cambia l'orientamento dello schermo in Android senza ricaricare l'attività

Voglio cambiare l'orientamento a livello di codice mentre eseguo la mia app per Android, con queste righe di codice:

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

Funzionano così tanto, ma il problema principale è che l'intera attività viene ricaricata quando cambia l'orientamento dello schermo, e non lo voglio. È possibile? Grazie.

EDIT: OK, dopo che ho scoperto quello che mi mancava. Dovevo includere anche "screenSize" nella proprietà configChanges, quindi avere

Android:configChanges="orientation|screenSize"

risolto tutto.

30
luisfer

Vedi la modifica di @luisfer. Per il targeting di Android 3.2 e versioni successive, è necessario ENTRAMBI

Android:configChanges="orientation|screenSize"

http://developer.Android.com/guide/topics/resources/runtime-changes.html#HandlingTheChange

27
larham1

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

4
Martin

Nel file AndroidManifest aggiungi Android:configChanges="orientation" per l'attività che vuoi gestire con questo orientamento

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

1
Raj Shah
1
inigoD

Chiama questo metodo e imposta il file manifest 

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();
        }
    }
1
ashah