Comment puis-je désactiver le mode paysage pour certains points de vue dans mon application Android?
Réponses
Trop de publicités?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.
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..
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.
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.