Date de publication : 5 dcembre 2011 Le but de ce tutoriel est d'expliquer comment grer la rotation de l'cran dans vos applications Android. Gestion de la rotation sous Android par Nazim Benbourahla - nbenbourahla - 2 - Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2011 Benbourahla Nazim. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD. http://nbenbourahla.developpez.com/tutoriels/java/gestion-rotation-android/ 1 - Philosophie de la rotation...................................................................................................................................... 3 2 - Cration des nouvelles vues................................................................................................................................. 3 3 - Tester sur l'mulateur.............................................................................................................................................3 4 - Sauvegarde de l'tat.............................................................................................................................................. 3 5 - Limitation................................................................................................................................................................ 3 6 - Surcharger la rotation............................................................................................................................................ 4 7 - Bloquer la vue........................................................................................................................................................4 8 - Best Practice - Grer les tablettes........................................................................................................................ 4 9 - Conclusion..............................................................................................................................................................4 10 - Remerciements.................................................................................................................................................... 5 11 - Liens..................................................................................................................................................................... 5 Gestion de la rotation sous Android par Nazim Benbourahla - nbenbourahla - 3 - Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2011 Benbourahla Nazim. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD. http://nbenbourahla.developpez.com/tutoriels/java/gestion-rotation-android/ 1 - Philosophie de la rotation Lors d'une rotation de l'cran, Android supprimera et recrera toutes les activits en cours d'excution ou en pause. Ce comportement est celui par dfaut ; vous pouvez adapter la rponse de vos activits aux changements d'orientation. Finalement, c'est aux dveloppeurs de vrifier et corriger l'affichage de votre application dans le mode portrait et landscape. 2 - Cration des nouvelles vues Pour crer vos nouvelles vues qui seront affiches en mode landscape, il suffit de crer un nouveau dossier dans le dossier res : ce dossier se nommera layout-land. Vous devez donc repenser votre interface pour que la vue en mode landscape soit agrable utiliser sans surcharger l'cran. 3 - Tester sur l'mulateur Pour simuler la rotation de l'cran sur l'mulateur, il faut utiliser le raccourci CTRL + F12. 4 - Sauvegarde de l'tat Comme prcis plus haut, Android dtruit votre vue en cas de changement d'orientation pour construire la nouvelle vue. Vous souhaiterez donc peut-tre sauvegarder des donnes avant le changement d'orientation, par exemple si l'utilisateur a commenc saisir du texte. Pour rsoudre ce problme, il suffit d'utiliser la mthode onSaveInstanceState(). Cette mthode est appele chaque fois que votre activit est dtruite. Grce cette mthode vous pouvez sauvegarder les donnes que vous souhaitez dans un Bundle afin de pouvoir rcuprer l'tat de votre activit. Cette rcupration est possible car dans le onCreate, la mthode onRestoreInstanceState() est appele afin de rcuprer l'tat de votre vue. Ainsi, dans cette mthode vous pouvez utiliser toutes les valeurs que vous avez stockes dans la mthode prcdente. 5 - Limitation La mthode onSaveInstanceState a ses limites : un Bundle ne permet qu'un stockage limit lorsque l'on peut avoir besoin de stocker bien davantage. On peut contourner ce problme en utilisant la mthode onRetainNonConfigurationInstance() qui vous permet de renvoyer un objet que vous pouvez rcuprer grce la mthode getLastNonConfigurationInstance(). Gestion de la rotation sous Android par Nazim Benbourahla - nbenbourahla - 4 - Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2011 Benbourahla Nazim. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD. http://nbenbourahla.developpez.com/tutoriels/java/gestion-rotation-android/ 6 - Surcharger la rotation Dans certains cas, il est indispensable de surcharger le comportement par dfaut de la rotation sur votre application. Pour cela vous devez simplement : utiliser l'attribut android:configChanges de l'lment activity dans le fichier AndroidManifest.xml pour citer les modifications de configuration que vous voulez grer. Il peut prendre les valeurs suivantes : dans votre activit, implmenter la mthode onConfigurationChanged() pour grer les configurations que vous avez cites dans votre fichier AndroidManifest.xml. 7 - Bloquer la vue Pour finir, vous pouvez bloquer votre vue dans un mode ou un autre. Cette mthode est dconseille par Google car bloquer une vue en portrait rduit significativement l'exprience utilisateur. Cette rduction est d'autant plus significative pour les tablettes puisque, pour celles-ci, la vue par dfaut est landscape et non portrait. Pour utiliser cette manipulation, il suffit d'ajouter android:screenOrientation=portrait ou landscape. Cela permet de verrouiller votre activit dans le sens souhait. 8 - Best Practice - Grer les tablettes Si vous souhaitez grer la rotation dans tous les cas, afin que votre application s'affiche naturellement pour les utilisateurs (de tablette ou de tlphone), vous pouvez utiliser le code suivant : int x = AXIS_X; int y = AXIS_Y; case(Display.getRotation()) Surface.ROTATION_0: //Ici votre code break; Surface.ROTATION_90: x=AXIS_Y; y = AXIS_MINUS_X; //Ici votre code break; Surface.ROTATION_180: y=AXIS_MINUS_Y; //Ici votre code break; Surface.ROTATION_270: x=AXIS_MINUS_Y; y = AXIS_X; //Ici votre code break; 9 - Conclusion Merci d'avoir lu ce tutoriel, en esprant qu'il vous ait facilit la comprhension de la gestion de la rotation de l'cran dans vos applications. Gestion de la rotation sous Android par Nazim Benbourahla - nbenbourahla - 5 - Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2011 Benbourahla Nazim. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD. http://nbenbourahla.developpez.com/tutoriels/java/gestion-rotation-android/ 10 - Remerciements Je tiens remercier tout particulirement djibril qui a mis ce tutoriel au format Developpez.com. Merci galement Kaera et jacques_jean d'avoir pris le temps de le relire et de le corriger. 11 - Liens Tutoriel origine sur Tutos-Android