J'écris une application Android qui utilise des onglets avec différents contenus (activités). Dans l'une de ces activités, je voudrais verrouiller l'orientation de l'écran en mode "Paysage", mais dans les autres activités, je veux l'orientation normale (selon le capteur).
Ce que je fais maintenant, c'est que j'appelle
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
lorsque je passe à l'activité en mode paysage, et
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
quand je repasse aux autres activités. Cependant, cela ne semble pas fonctionner, l'application entière se bloque. Quelle est l'approche normale pour résoudre ce problème ?
23 votes
Le lien "Duplicata possible" est no une question en double de celle-ci. Cette question demande comment verrouiller l'orientation afin qu'il ne puisse pas changer de paysage. La question liée est de savoir comment empêcher le redémarrage des applications lorsque l'orientation change.
0 votes
Cela semble être ce que vous voulez : Appelez
Screen.lockOrientation(this)
et plus tardScreen.unlockOrientation(this)
de github.com/delight-im/Android-BaseLib/blob/master/Source/src/im/0 votes
Mais attention, si vous utilisez ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT en ligne, cela n'est pas autorisé sous la version 4.3. Vous pouvez alors utiliser les fonctions ci-dessus ou ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT.
0 votes
Pour les futurs lecteurs, la méthode de @caw n'est pas une méthode accessible dans le contexte d'une application Android normale.
0 votes
@LoungeKatt Non, ça ne l'est pas, mais j'ai fait un lien vers la mise en œuvre, n'est-ce pas ? De toute façon, je viens de voir que le lien n'est plus valide. Voici un lien mis à jour vers la source pour les deux.
Screen.lockOrientation
yScreen.unlockOrientation
: github.com/delight-im/Android-Commons/blob/0 votes
@caw Comme vous l'avez déjà remarqué, le lien était rompu au moment de faire le commentaire. Cela semble être une solution plutôt extravagante, donc il semblait bon de signaler qu'elle ne faisait pas partie de l'API.
0 votes
@LoungeKatt Bien sûr. Mais qu'y a-t-il d'extravagant dans tout cela ? C'est une approche assez pragmatique : Elle détecte l'orientation actuelle (qui a été déterminée automatiquement par le système d'exploitation), puis définit explicitement cette orientation afin de la verrouiller.
0 votes
@caw Ce n'est pas vraiment l'endroit pour l'expliquer. Il n'est pas nécessaire de détourner la réponse de quelqu'un d'autre pour obtenir des commentaires sur la vôtre.