En regardant le AndroidManifest.xml ( lien ), à la ligne 9:
<activity android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden" android:name="VncCanvasActivity">
Cette ligne spécifie le screenOrientation
comme paysage, mais l'auteur va plus loin en remplaçant les changements d'orientation de l'écran avec configChanges="orientation|keyboardHidden"
. Cela pointe vers une fonction remplacée dans VncCanvasActivity.java.
Si vous regardez VncCanvasActivity, à la ligne 109 se trouve la fonction remplacée:
@Override
public void onConfigurationChanged(Configuration newConfig) {
// ignore orientation/keyboard change
super.onConfigurationChanged(newConfig);
}
L'auteur a spécifiquement mis un commentaire pour ignorer tout changement de clavier ou d'orientation.
Si vous souhaitez modifier cela, vous pouvez revenir au fichier AndroidManifest.xml illustré ci-dessus et modifier la ligne en:
<activity android:screenOrientation="sensor" android:name="VncCanvasActivity">
Cela devrait changer le programme pour passer du portrait au paysage lorsque l'utilisateur fait pivoter l'appareil.
Cela peut fonctionner, mais peut gâcher l'apparence de l'interface graphique, selon la façon dont la mise en page a été créée. Vous devrez en rendre compte. En outre, 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é remplies dans les zones de saisie disparaissent. Cela peut également devoir être traité.
configChanges
attribut est-il nécessaire? Il semble fonctionner sur mon téléphone sans clavier sans lui ... Dans quelles situations l'orientation changera-t-elle en portrait si vous avezscreenOrientation="landscape"
omis leconfigChanges
?If your application targets API level 13 or higher (as declared by the minSdkVersion and targetSdkVersion attributes), then you should also declare the "screenSize" configuration, because it also changes when a device switches between portrait and landscape orientations.
Vous pouvez également définir les mêmes données dans votre code java.
D'autres valeurs sur ActivityInfo vous permettront de le remettre en mode portrait verrouillé ou piloté par capteur. Personnellement, j'aime le définir sur quelque chose dans le manifeste comme suggéré dans une autre réponse à cette question, puis le modifier plus tard en utilisant l'appel ci-dessus dans le SDK Android s'il y a un besoin.
la source
If the activity is currently in the foreground or otherwise impacting the screen orientation, the screen will immediately be changed (possibly causing the activity to be restarted)
Dans mon
OnCreate(Bundle)
, je fais généralement ce qui suit:la source
Vous pouvez spécifier l'orientation d'une activité dans le manifeste. Regardez ici .
la source
Dans le manifeste:
Dans votre activité:
la source
Voici le code que j'ai utilisé pour afficher toutes les activités en mode paysage:
la source
Une solution rapide et simple est pour le fichier AndroidManifest.xml, ajoutez ce qui suit pour chaque activité que vous souhaitez forcer en mode paysage:
la source
Cela fonctionne pour Xamarin.Android. Dans OnCreate ()
la source
C'est tout!! Longue attente pour ce correctif.
J'ai un vieux problème Android concernant le double démarrage d'une activité qui nécessitait (par programmation) le mode paysage:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
Maintenant, Android active le mode Paysage au démarrage.
la source
Arslan, pourquoi voulez-vous forcer l'orientation de manière programmatique, bien qu'il existe déjà un moyen de manifester
<activity android:name=".youractivityName" android:screenOrientation="portrait" />
la source
Le faire dans le code est une erreur IMO et encore plus si vous le mettez dans onCreate. Faites-le dans le manifeste et le "système" connaît l'orientation depuis le démarrage de l'application. Et ce type de méta ou de "guidage" de niveau supérieur DEVRAIT être dans le manifeste. Si vous voulez vous le prouver, définissez une pause dans onCreate de l'activité. Si vous le faites en code là, il sera appelé deux fois: il démarre en mode Portrait puis passe en Paysage. Cela ne se produit pas si vous le faites dans le manifeste.
la source
Pour Android 4.0 (Ice Cream Sandwich) et versions ultérieures, je devais les ajouter, en plus de la
landscape
valeur.Utiliser uniquement
keyboardHidden|orientation
entraînerait toujours des fuites de mémoire et une recréation de mes activités lorsque j'appuyais sur le bouton d'alimentation.la source
orientation|screensize
n'était pas suffisante dans tous les cas. Il reviendrait automatiquement au portrait.Utilisez ActivityInfo (android.content.pm.ActivityInfo) dans votre méthode onCreate avant d'appeler la méthode setLayout comme ceci
la source
utiliser uniquement
android: screenOrientation = "portrait" tools: ignore = "LockedOrientationActivity"
la source
Ajouter les lignes suivantes dans l'activité
Vous devez entrer dans chaque activité
pour le paysage
pour portrait
Voici l'exemple de MainActivity
la source
Appuyez
CTRL+F11
pour faire pivoter l'écran.la source