Question Android - désactiver le mode paysage?


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


796
2018-02-24 15:29


origine


Réponses:


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

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

EDIT: Puisque c'est devenu une réponse très populaire, je me sens très coupable car forcer le portrait est rarement la bonne solution aux problèmes auxquels elle est fréquemment appliquée.
Les principales mises en garde avec le portrait forcé:

  • Cela ne vous absout pas d'avoir à penser à l'activité événements de cycle de vie ou état d'enregistrement / restauration correct. Il y a beaucoup de choses en plus de la rotation de l'application qui peut déclencher une activité destruction / loisirs, y compris des choses inévitables comme le multitâche. Il n'y a pas de raccourci; apprendre à utiliser des bundles et retainInstance fragments.
  • Gardez à l'esprit que, contrairement à l'expérience iPhone assez uniforme, il existe de nombreux appareils où le portrait n'est pas l'orientation clairement populaire. Lorsque les utilisateurs sont sur des appareils avec des claviers ou des manettes de jeu à la Droid 1-4, Xperia Play ou Nvidia Shield, forcer le portrait peut faire de votre application un problème d'ergonomie (surtout sur le Shield). Si votre application ne présente pas un cas d'utilisation extrêmement spécifique qui entraînerait une expérience totalement négative pour soutenir d'autres orientations, vous ne devriez probablement pas forcer le paysage. Je parle de choses comme, "ceci est une application de contrôle à distance pour un téléphone avec un blaster IR sur un seul côté de l'appareil", ou "c'est une application de caisse enregistreuse pour un modèle spécifique de tablette toujours utilisé dans un fixe quai matériel. "

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

  • Si votre principale préoccupation est une modification accidentelle de l'orientation à mi-activité que vous pensez que les capteurs et le logiciel de l'appareil ne peuvent pas gérer correctement (par exemple, dans un jeu à inclinaison), envisagez de prendre en charge le paysage et le portrait. 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 recommande toujours pas cela pour la plupart des applications "normales" (certains utilisateurs aiment saisir le clavier logiciel du paysage sur leurs téléphones et beaucoup d'utilisateurs en mode portrait). vous devriez les laisser).
  • Si vous encore besoin de forcer le portrait pour une raison quelconque, sensorPortrait peut-être mieux que portrait pour Android 2.3+; cela permet un portrait à l'envers, ce qui est assez commun dans l'utilisation de la tablette.

1401
2018-02-24 17:04



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

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

97
2017-10-18 14:53



Ajoute ça android:screenOrientation="portrait" dans votre fichier manifeste où vous déclarez votre activité comme celle-ci

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

Si vous voulez faire en utilisant le code java, essayez

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

avant d'appeler setContentView méthode pour votre activité dans onCreate().

J'espère que cette aide et facilement compréhensible pour tous ...


32
2017-09-27 09:47



Beaucoup de réponses suggèrent d'utiliser "portrait"dans votre fichier AndroidManifest.xml. Cela peut sembler être une bonne solution - mais comme indiqué dans la documentation, vous distinguez les périphériques qui n'ont que du paysage. Vous forcez également certains appareils (qui fonctionnent le mieux dans le paysage) à passer en mode portrait, sans avoir la bonne orientation.

Ma suggestion est d'utiliser "nosensor" au lieu. Cela permettra à l'appareil d'utiliser son orientation préférée par défaut, ne bloquera aucun achat / téléchargement sur Google Play et garantira que le capteur ne gâchera pas votre jeu (NDK, dans mon cas).


19
2017-08-21 14:41



Si vous voulez des paramètres d'utilisateur,

alors je recommanderais setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

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

J'en ai besoin car mes timers doivent correspondre à ce qui est sur l'écran, et tourner l'écran détruira l'activité en cours.


9
2018-02-10 04:46



Ajoutez juste comme cette ligne dans votre manifeste

android: screenOrientation = "portrait"

<manifest
    package="com.example.speedtestmeter"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity
            android:name="MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

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

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

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

    </application>

</manifest>   

8
2018-02-05 09:30



Ajoutez simplement cet attribut dans votre tag d'activité.

 android:screenOrientation="portrait"

5
2017-10-01 07:00



tu devrais changer android:screenOrientation="sensorPortait" dans AndroidManifest.xml


5
2018-01-03 06:04



Utilisez ceci dans onCreate () de l'activité

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

5
2018-05-06 09:59



Si vous ne voulez pas vous tromper en ajoutant de l'orientation dans chaque entrée manifeste de l'activité, créez une classe BaseActivity (hérite de 'Activity' ou 'AppCompatActivity') qui sera héritée par chaque activité de votre application au lieu de 'Activity 'ou' AppCompatActivity 'et ajoutez juste le morceau de code suivant dans votre BaseActivity:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    // rest of your code......
}

5
2018-04-22 17:51



Ajoutez l'extrait suivant dans votre fichier manifeste.

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

Ce soutien uniquement en mode portrait


4
2017-08-16 10:11