1061 votes

Paysage

Comment puis-je désactiver le mode paysage pour certains points de vue dans mon application Android?

1822voto

Yoni Samlan Points 21748

Ajouter android:screenOrientation="portrait" de l'activité dans le AndroidManifest.xml. Par exemple:

        <activity android:name=".SomeActivity"
              android:label="@string/app_name"
              android:screenOrientation="portrait">

EDIT: Depuis, c'est devenu un super-populaire réponse, je me sens très coupable que de forcer portrait est rarement la bonne solution aux problèmes, il est souvent appliqué.
Les principales mises en garde forcé portrait:

  • Cela ne vous dégage pas de devoir penser à propos de l'activité événements de cycle de vie ou bien de la sauvegarde/restauration de l'état. Il ya beaucoup de de choses en plus de l'app de rotation qui peut déclencher une activité destruction/de loisirs, y compris inévitable des choses telles que le multitâche. Il n'y a pas de raccourcis; apprendre à utiliser des faisceaux et retainInstance des fragments.
  • Gardez à l'esprit que, contrairement aux assez uniforme iPhone expérience, il existe de nombreux dispositifs où le portrait n'est pas clairement populaires de l'orientation. Lorsque les utilisateurs sont sur les appareils équipés d'un matériel de claviers ou de jeu de plaquettes de un la le Droid 1 À 4, Xperia Play, ou la Nvidia Shield, forçant le portrait de rendre votre application un géant de la convivialité sans problème (en particulier sur le Bouclier). Si votre application ne dispose pas d'une extrêmement cas d'utilisation spécifiques qui conduirait à une véritable expérience négative pour soutenir d'autres orientations, vous ne devriez probablement pas la force paysage. Je parle de choses comme, "c'est une application de télécommande pour un téléphone avec un IR blaster sur un seul côté de l'appareil", ou "c'est une caisse enregistreuse app pour un modèle spécifique de la tablette toujours utilisé dans un matériel fixe dock".

Donc, la plupart des applications doivent laissez juste le téléphone de capteurs, des logiciels et de la configuration physique de faire leur propre décision au sujet de la façon dont l'utilisateur veut interagir avec votre application. Quelques cas, vous pourriez encore envie d'y penser, cependant, si vous n'êtes pas heureux avec le comportement par défaut de sensor orientation dans votre cas d'utilisation:

  • Si votre principale préoccupation est accidentelle, les changements d'orientation de la mi-activité que vous pensez que l'appareil de capteurs et de logiciels ne pas y faire face (par exemple, dans une inclinaison de la base de jeu) envisager de soutenir portrait et paysage, mais l'utiliser nosensor pour l'orientation. Cette forces de paysage sur la plupart des tablettes et portrait sur la plupart des téléphones, mais je ne le recommande pas, pour la plupart des "normale" apps (certains utilisateurs n'type dans le paysage softkeyboard sur leurs téléphones, et de nombreux utilisateurs de tablettes de lecture en mode portrait, et vous devriez le laisser).
  • Si vous avez encore besoin de la force de portrait pour une raison quelconque, sensorPortrait peut-être mieux que d' portrait pour Android 2.3+, ce qui permet à l'envers portrait, ce qui est assez fréquent dans l'utilisation des tablettes.

120voto

Rich Points 1385

Je n'étais pas au courant de l' AndroidManifest.xml le fichier switch jusqu'à ce que la lecture de ce post, donc dans mes applications, j'ai utilisé ceci à la place:

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);     //  Fixed Portrait orientation

53voto

Deepak Swami Points 2403

ajouter cette Ajouter android:screenOrientation="portrait" dans votre fichier de manifeste où vous déclarez votre activité de ce genre

<activity android:name=".yourActivity"
          ....
          android:screenOrientation="portrait"/>

si vous voulez le faire à l'aide de code java essayez

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

avant d' setContentView de votre activité en onCreate() l'espoir de l'aide et facile à comprendre pour quelqu'un..

32voto

PhoenixX_2 Points 1471

Un grand nombre de réponses ici sont ce qui suggère d'utiliser "portrait" dans votre AndroidManifest.xml fichier. Cela peut sembler une bonne solution, mais comme indiqué dans la documentation, vous êtes de distinguer les appareils qui ne peuvent avoir de paysage. Vous êtes également de forcer certains dispositifs (qui fonctionnent le mieux dans le paysage) pour entrer dans le portrait, de ne pas obtenir la bonne orientation.

Ma suggestion est d'utiliser "nosensor" à la place. Cela permettra de laisser l'appareil utilise par défaut d'orientation privilégiée, ne va pas bloquer les achats/téléchargements sur Google Play, et s'assurer que le capteur ne pas gâcher votre (NDK, dans mon cas) jeu.

15voto

Stephen Points 71

Si vous voulez paramètres utilisateur,

alors je vous recommande setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

Vous pouvez modifier les paramètres à partir d'un menu de paramètres.

J'ai besoin de cela parce que mon chronométreurs doivent correspondre à ce qui est sur l'écran, et la rotation de l'écran va détruire l'activité en cours.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X