Comment faire en sorte qu’une application ignore le changement d’orientation de l’écran?

Y a-t-il un moyen de faire en sorte qu’une application ignore complètement un changement d’orientation de l’écran?

Il est possible, très facilement, de remplacer le comportement par défaut et d’interdire un changement d’orientation de l’écran lorsque le clavier est ouvert / fermé.

Modifier le manifeste

Ouvrez le manifeste, passez à l’onglet Application et sélectionnez l’activité souhaitée que vous souhaitez remplacer pour le comportement de changement d’orientation.

  1. Dans les atsortingbuts, vous devez modifier deux champs: Orientation de l’écran: sélectionnez un portrait ou un paysage, selon vos souhaits. Ce sera la mise en page par défaut.

  2. Sélectionnez les événements pour les changements de configuration que vous souhaitez remplacer: dans ce cas, ils sont masqués et orientés.

Modification de la mise en œuvre de l’activité

Maintenant, vous devez remplacer une seule fonction dans l’activité souhaitée.

Ajoutez simplement la fonction ci-dessous à la classe de votre activité.

 @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); } 

Il s’agit de l’implémentation par défaut si vous utilisez l’option de menu Source->Override/Implement Methods .

C’est tout! Maintenant, votre orientation sera toujours conservée.

N’oubliez pas que ce paramètre est par activité – vous devez donc répéter cette étape pour chaque activité que vous souhaitez interdire le changement d’orientation!

(Basé sur le SDK 1.1)

Vous pouvez effectuer le même changement de code avec la ligne suivante (appelée dans une activité):

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

Une fois cet appel effectué, votre application restra en mode paysage (ou portrait). Vous pouvez utiliser le même appel (avec un énumérateur ActivityInfo différent) pour le rendre sensible au changement d’orientation.

Il existe un article complet sur DevX dans la rubrique Développer des applications Android orientées orientation .

(ATTENTION: depuis que j’ai posté ce lien, DevX a mis en place un mur d’enregistrement.)

Si vous définissez soit par AndroidManifest.xml ou avec setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); vous allez rencontrer des problèmes avec les tablettes . Leur orientation naturelle / par défaut est le paysage.

Si vous voulez vraiment ignorer complètement les changements d’orientation de l’écran, j’utiliserais setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); valeur. Je parle plus à ce sujet dans Stack Overflow question Aide à l’orientation des capteurs naturels Android .

Voici le xml:

  

Vous pouvez définir votre activité dans le fichier AndroidManifest.xml comme AndroidManifest.xml :

 ` 

Dans ce cas, vous devez définir la propriété pour chaque activité. Je n’ai pas trouvé de solution en ligne pour toutes les applications.

  

Ajoutez ceci à l’activité:

android:configChanges="orientation|screenSize"

Vous voulez lire l’orientation actuelle et la conserver de cette manière tout au long de la vie de l’activité, ce que j’ai fait à la fin d’onCreate:

 // choose an orientation and stay in it if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); else if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);