Je souhaite modifier l'orientation par programme lors de l'exécution de mon application Android, avec les lignes de code suivantes:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
Ils fonctionnent jusqu'à présent, mais le problème principal est que toute l'activité est rechargée lorsque l'orientation de l'écran change. C'est possible? Merci.
EDIT: OK, après avoir découvert ce qui me manquait. Je devais également inclure "screenSize" dans la propriété configChanges, donc
Android:configChanges="orientation|screenSize"
résolu le tout.
Voir l'édition par @luisfer. Pour cibler Android 3.2 et les versions ultérieures, vous avez besoin des deux.
Android:configChanges="orientation|screenSize"
http://developer.Android.com/guide/topics/resources/runtime-changes.html#HandlingTheChange
Vous devez remplacer onSaveInstanceState (Bundle savedInstanceState) et écrire les valeurs d'état de l'application à modifier pour le paramètre Bundle.
Dans le fichier AndroidManifest, ajoutez Android:configChanges="orientation"
pour l'activité que vous souhaitez gérer.
En activité, utilisez la méthode surchargée onConfigurationChange. Effectuez la tâche que vous souhaitez gérer lors du changement d’orientation.
Ansewered ici:
Android, comment ne pas détruire l'activité lorsque je fais pivoter l'appareil?
Ajouter:
Android:configChanges="orientation"
Pour votre androidmanifest.
voir:
http://developer.Android.com/guide/topics/manifest/activity-element.html#config
Appelez cette méthode et définissez le fichier manifeste
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();
}
}