Comment puis-je désactiver le changement d'orientation sur Android?
J'ai une application que je tiens à utiliser en mode portrait, j'ai donc défini
android:screenOrientation="portrait" dans le manifeste XML. Cela fonctionne bien pour les HTC Magic de téléphone (et empêche les changements d'orientation sur d'autres téléphones).
Mais j'ai un problème avec le HTC G1 téléphone que j'ai ouvert le matériel Clavier QWERTY (pas le clavier virtuel). Mon activité reste en mode portrait, mais il semble avoir redémarré et perd tous ses états. Ce n'est pas le cas HTC Hero version.
Ma demande est assez grande, donc je n'ai pas envie de le redémarrer et de perdre tous ses états lorsque le clavier est ouvert. Comment puis-je éviter cela?
- Essayez de regarder ici aussi: stackoverflow.com/questions/2366706/...
- double possible de Comment faire une demande d'ignorer complètement l'orientation de l'écran de changement dans Android?
Vous devez vous connecter pour publier un commentaire.
Mise à jour avril 2013: à ne pas faire. Ce n'était pas une bonne idée, en 2009, lorsque j'ai d'abord répondu à la question et il n'est vraiment pas une bonne idée maintenant. Voir cette réponse par hackbod pour des raisons:
Rechargement de l'activité avec asynctask sur changement d'orientation dans android
Ajouter
android:configChanges="keyboardHidden|orientation"
à votre AndroidManifest.xml. Cela indique au système que les modifications de configuration que vous allez vous gérer - dans ce cas, en ne faisant rien.Voir la référence du Développeur configChanges pour plus de détails.
Toutefois, votre demande peut être interrompu à tout moment, par exemple par un appel téléphonique, vous devez ajouter le code pour enregistrer l'état de votre application lorsqu'elle est en pause.
Mise à jour: Comme d'Android 3.2, vous devez également ajouter "screenSize":
De guide du Développeur La manipulation de la Configuration de Modifier Vous-même
Vous avez besoin de modifier AndroidManifest.xml comme Intrications (précédemment Ashton) mentionné et assurez-vous que les poignées de l'activité de la onConfigurationChanged événement que vous souhaitez qu'elle a manipulé. C'est comment il devrait ressembler à:
setRequestedOrientation()
dansonCreate()
.onConfigurationChanged()
appelée avantonCreate()
si oui réglage de l'orientation avant de contentViews dans oncreate est mieux approche, réglage de la configuration dans laquelle elle appartient est également nettoyeur donc, cette réponse tient toujours bon.J'ai toujours trouvé que vous avez besoin de
Comme l'a dit, de définir
android:configChanges
de votre Activité (dans le fichier de manifeste) àkeyboardHidden|orientation
et puis:1) Remplacer
onConfigurationChanged()
2) Ajouter cette ligne à votre activité
onCreate()
C'est mieux que d'ajouter de la même ligne pour
onConfigurationChanged
, parce que votre application va tourner en mode portrait, et puis de nouveau le paysage (il va se produire une seule fois, mais c'est ennuyeux).Vous pouvez également définir le
android:screenOrientation="nosensor"
pour votre activité (dans le manifeste). Mais à l'aide de cette façon, vous êtes pas capable de gérer les changements d'orientation à tous.Utiliser cette..
Dans la méthode OnCreate de votre activité, utilisez ce code:
Maintenant votre orientation sera mis à portrait et ne changera jamais.
Dans le AndroidManifest.xml fichier, pour chaque activité que vous souhaitez verrouiller ajouter la dernière
screenOrientation
ligne:Ou android:screenOrientation="paysage".
Dans votre androidmanifest.xml fichier:
ou
Pour verrouiller l'écran par le code, vous devez utiliser le réel de la rotation de l'écran (0, 90, 180, 270), et vous devez connaître la position naturelle de l'être, un smartphone de la position naturelle sera portrait et dans une tablette, il sera le paysage.
Voici le code (verrouiller et déverrouiller les méthodes), il a été testé dans certains appareils (smartphones et tablettes) et il fonctionne très bien.
Dans Visual Studio Xamarin:
using Android.Content.PM;
à vous de l'activité de l'espace de noms de la liste.[Activity(ScreenOrientation = Android.Content.PM.ScreenOrientation.Portrait)]
comme un attribut de vous en classe, comme ça:
Ajouter
à votre manifeste.
Veuillez noter, aucune des méthodes semble fonctionner maintenant!
Dans Android Studio 1 un moyen simple est d'ajouter
android:screenOrientation="nosensor"
.Efficacement les verrous de l'orientation de l'écran.