156 votes

La Force d'android activité de toujours utiliser le mode paysage

J'utilise android vnc viewer sur mon G1. Mais pour une raison quelconque, cette application toujours en mode paysage, malgré mon G1 est en mode portrait. Depuis android vnc viewer est open source, je voudrais savoir comment est-il possible de coder en dur une activité de "paysage". Je voudrais le changer pour le respect de l'orientation du téléphone.

Je vous remercie.

alt text

199voto

Pulkit Sethi Points 1221

En regardant les AndroidManifest.xml (lien), sur la ligne 9:

<activity android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden" android:name="VncCanvasActivity">

Cette ligne indique l' screenOrientation comme paysage, mais l'auteur va plus loin en remplaçant toute l'orientation de l'écran change avec configChanges="orientation|keyboardHidden". Ceci conduit à un substituée fonction dans VncCanvasActivity.java.

Si vous regardez VncCanvasActivity, sur la ligne 109 est la fonction surdéfinie:

@Override
public void onConfigurationChanged(Configuration newConfig) {
  // ignore orientation/keyboard change
  super.onConfigurationChanged(newConfig);
}

L'auteur spécifiquement mis un commentaire à ignorer n'importe quel clavier ou de changements d'orientation.


Si vous voulez changer cela, vous pouvez revenir à l'AndroidManifest.xml fichier indiqué ci-dessus, et modifiez la ligne:

<activity android:screenOrientation="sensor" android:name="VncCanvasActivity">

Cela devrait changer le programme pour basculer du mode portrait au mode paysage lorsque l'utilisateur fait pivoter l'appareil.

Cela peut fonctionner, mais pourrait gâcher la façon dont l'interface graphique semble, en fonction de la façon dont la mise en page ont été créés. Vous devrez tenir compte de cela. Aussi, selon la façon dont les activités sont codées, vous pouvez remarquer que lorsque l'orientation de l'écran est modifiée, les valeurs qui ont été remplis dans toutes les zones de saisie de disparaître. Cela peut également être traités.

122voto

haseman Points 6071

Vous pouvez définir les mêmes données dans votre code java.

myActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

D'autres valeurs sur ActivityInfo vous permettra de définir à capteur de conduit ou verrouillé portrait. Personnellement, j'aime bien le configurer quelque chose dans le Manifeste, comme l'a suggéré dans une autre réponse à cette question et ensuite de le modifier plus tard à l'aide de l'appel ci-dessus dans le SDK Android si il y a un besoin.

44voto

anwarma Points 387

Dans mon OnCreate(Bundle), je fais généralement les suivantes:

this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

Espérons que cette aide.

Merci,

33voto

Michael Krauklis Points 2145

Vous pouvez définir l'orientation de l'activité dans le manifeste. Voir ici.

<activity android:allowTaskReparenting=["true" | "false"]
...
          android:screenOrientation=["unspecified" | "user" | "behind" |
                                     "landscape" | "portrait" |
                                     "sensor" | "nosensor"]
...
                                       "adjustResize", "adjustPan"] >  

11voto

Megha Points 772
following is code which i used to display all activity into landscape mode

<activity android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden"  android:name="abcActivty"/>

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