Orientation de l'écran de verrouillage (Android) [dupliquer]

Double Possible:

Comment désactiver le changement d'orientation dans Android?

j'écris une application android qui utilise des onglets avec différents contenus (activités). Dans l'une de ces activités, je voudrais verrouiller l'orientation de l'écran de "Paysage"-mode, mais dans les autres activités, je veux l'orientation normale (selon le capteur).

ce que je fais maintenant c'est que j'appelle

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

quand je passe en mode paysage, et

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

quand je reviens aux autres activités. Toutefois, cela ne semble pas fonctionner, toute l'application est verrouillée. Quelle est l'approche normale de ce problème?

133
demandé sur Community 2011-01-13 03:54:36

3 réponses

dans le Manifeste, vous pouvez définir l'orientation de l'écran au paysage. Cela ressemblerait à ceci dans le XML:

<activity android:name="MyActivity"
android:screenOrientation="landscape"
android:configChanges="keyboardHidden|orientation|screenSize">
...
</activity>

MyActivity est celui que vous voulez rester dans le paysage.

la ligne android:configChanges=... empêche onResume() , onPause() d'être appelée lorsque l'écran est tourné. Sans cette ligne, la rotation va rester comme vous l'avez demandé, mais les appels seront encore effectués.

Note: keyboardHidden et orientation sont nécessaires pour < Android 3.2 (niveau API 13), et les trois options sont nécessaires 3.2 ou plus, pas seulement orientation .

229
répondu Kevin Dion 2012-09-19 05:51:25

j'ai eu un problème similaire.

quand j'ai entré

<activity android:name="MyActivity" android:screenOrientation="landscape"></activity>

dans le fichier manifest, cela a provoqué l'affichage de cette activité dans landscape. Cependant quand je retournai aux activités précédentes elles s'affichaient dans lanscape même si elles étaient mises en portrait. Toutefois, en ajoutant

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

immédiatement après la section Oncrée de l'activité cible a résolu le problème. Donc j'utilise maintenant les deux méthodes.

54
répondu Alan Cartwright 2012-10-11 23:20:40

dans le fichier manifeste Android de votre projet, trouver la déclaration d'activité de dont vous voulez fixer l'orientation et ajouter le morceau de code suivant,

android:screenOrientation="landscape"

pour l'orientation paysagère et pour le portrait ajouter le code suivant,

android:screenOrientation="portrait"
27
répondu HjK 2017-06-13 03:39:15