Comment désactiver le mode paysage dans Android ?

Comment désactiver le mode paysage pour certaines vues de mon application Android ?

Solution

Ajoutez android:screenOrientation="portrait" à l'activité dans le fichier AndroidManifest.xml. Par exemple :

EDIT : Depuis que cette réponse est devenue super-populaire, je me sens très coupable car forcer le portrait est rarement la bonne solution aux problèmes auxquels il est fréquemment appliqué.
Les principales mises en garde avec le portrait forcé :

  • Cela ne vous absout pas d'avoir à penser à l'activité événements du cycle de vie ou de sauvegarder/restaurer correctement l'état. Il y a beaucoup de de choses, en plus de la rotation de l'application, qui peuvent destruction/recréation d'activité, y compris des choses inévitables comme le multitâche. Il n'y a pas de raccourcis ; apprenez à utiliser les bundles et les fragments retainInstance.
  • Gardez à l'esprit que, contrairement à l'expérience assez uniforme de l'iPhone, il existe des appareils sur lesquels l'orientation portrait n'est pas la plus populaire. Lorsque les utilisateurs se trouvent sur des appareils dotés d'un clavier matériel ou d'une manette de jeu, comme le Nvidia Shield, sur des [Chromebooks] (https://support.google.com/chromebook/answer/7021273?hl=en), sur des [foldables] (https://android-developers.googleblog.com/2018/11/get-your-app-ready-for-foldable-phones.html) ou sur [Samsung DeX] (https://www.samsung.com/global/galaxy/apps/samsung-dex/), le fait de forcer l'orientation portrait peut rendre l'expérience de votre application soit limitative, soit très pénible à utiliser. Si votre application n'a pas d'argument UX fort qui conduirait à une expérience négative pour le support d'autres orientations, vous ne devriez probablement pas forcer le paysage. Je parle de choses comme "c'est une application de caisse enregistreuse pour un modèle spécifique de tablette toujours utilisé dans un dock matériel fixe".

La plupart des applications doivent donc laisser les capteurs du téléphone, le logiciel et la configuration physique décider eux-mêmes de la manière dont l'utilisateur souhaite interagir avec votre application. Il y a cependant quelques cas auxquels vous pouvez penser si vous n'êtes pas satisfait du comportement par défaut de l'orientation du sensor dans votre cas d'utilisation :

  • Si votre principale préoccupation concerne les changements d'orientation accidentels en cours d'activité, que vous pensez que les capteurs et le logiciel de l'appareil ne géreront pas bien (par exemple, dans un jeu basé sur l'inclinaison), envisagez de supporter le paysage et le portrait, mais en utilisant nosensor pour l'orientation. Cela force le paysage sur la plupart des tablettes et le portrait sur la plupart des téléphones, mais je ne recommanderais toujours pas cela pour la plupart des applications "normales" (certains utilisateurs aiment juste taper dans le clavier logiciel en paysage sur leurs téléphones, et beaucoup d'utilisateurs de tablettes lisent en portrait - et vous devriez les laisser faire).
  • Si vous avez encore besoin de forcer le portrait pour une raison ou une autre, sensorPortrait peut être meilleur que portrait pour Android 2.3+ ; cela permet de faire un portrait à l'envers, ce qui est assez commun dans l'utilisation des tablettes.
Commentaires (12)

Je n'étais pas au courant du changement de fichier AndroidManifest.xml avant de lire ce post, donc dans mes applications j'ai utilisé ceci à la place :

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

Dans le répertoire /platform/android, créez AndroidManifest.xml (en le copiant depuis celui généré). Ajoutez ensuite android:screenOrientation="portrait&quot ; à TOUS les éléments de l'activité.

Commentaires (0)