J'ai une de mes activités que j'aimerais empêcher de tourner car je démarre une tâche AsyncTask, et la rotation de l'écran la fait redémarrer.
Existe-t-il un moyen de dire à cette activité "NE PAS TOURNER l'écran même si l'utilisateur secoue son téléphone comme un fou"?
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
Réponses:
Ajouter
ou
à l'
<activity>
élément / s dans le manifeste et vous avez terminé.la source
Vous pouvez suivre la logique ci-dessous pour empêcher la rotation automatique de l'écran pendant que vous
AsyncTask
exécutez:getRequestedOrientation()
.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR)
.AsyncTask
.AsyncTask
restauration de votre état d'orientation précédent à l'aide desetRequestedOrientation(oldOrientation)
.Veuillez noter qu'il existe plusieurs façons d'accéder
Activity
(qui s'exécute sur le thread d'interface utilisateur) à l'intérieur d'unAsyncTask
. Vous pouvez implémenter votre enAsyncTask
tant que classe interne ou utiliser un messageHandler
qui pique votreActiviy
classe.la source
Dans votre fichier manifeste, pour chaque activité dont vous souhaitez verrouiller la rotation d'écran, ajoutez: si vous souhaitez la verrouiller en mode horizontal:
ou si vous souhaitez le verrouiller en mode vertical:
la source
La façon la plus simple que j'ai trouvée de le faire était de mettre
dans onCreate, juste après
alors...
la source
Plutôt que d'entrer dans le AndroidManifest, vous pouvez simplement faire ceci:
Le seul inconvénient ici est qu'il nécessite un niveau d'API 18 ou supérieur. Donc, fondamentalement, c'est la pointe de la lance.
la source
Activity.java
AndroidManifest.xml
la source
L'attribut suivant sur l'activité dans AndroidManifest.xml est tout ce dont vous avez besoin:
Ainsi, le nœud d'activité complet serait:
la source
Ajouter:
la source
Ajoutez ce qui suit à votre AndroidManifest.xml
[app> src> main> AndroidManifest.xml]
Exemple:
la source
Si vous utilisez les outils de développement Android (ADT) et Eclipse, vous pouvez accéder à votre AndroidManifest.xml -> onglet Application -> descendre et sélectionner votre activité. Enfin, sélectionnez votre orientation préférée. Vous pouvez sélectionner l'une des nombreuses options.
la source
Vous devez ajouter le code suivant dans le fichier manifest.xml. L'activité pour laquelle il ne doit pas tourner, dans cette activité ajouter cet élément
Ensuite, il ne tournera pas.
la source
Vous pouvez essayer de cette façon
la source
Utilisez AsyncTaskLoader pour protéger vos données même si l'activité change, au lieu d'utiliser AsyncTask qui est un meilleur moyen de créer des applications que d'empêcher la rotation de l'écran.
la source
Empêchez la rotation de l'écran, ajoutez simplement cette ligne suivante dans vos manifestes.
Cela fonctionne pour moi.
la source
L'utilisateur
"portrait"
dans votre fichier AndroidManifest.xml peut sembler une bonne solution. Mais cela oblige certains appareils (qui fonctionnent mieux en paysage) à passer en mode portrait, sans obtenir la bonne orientation. Sur la dernière version d'Android, vous obtiendrez une erreur. Donc, ma suggestion est préférable d'utiliser"nosensor"
.la source