Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
272 L’art du développement Android
Rotation maison
Ceci dit, même cette approche peut être trop intrusive pour votre application. Supposons,
par exemple, que vous développiez un jeu en temps réel, comme un FPS (First Person
Shooter). Les "ralentissements" (lags) que vos utilisateurs constateront lorsque l’activité
est supprimée et recréée peuvent leur suffire à se faire tuer, ce qu’ils n’apprécieront sûrement pas. Bien que ce soit moins un problème avec le G1 puisqu’une rotation implique
d’ouvrir le clavier – chose que l’utilisateur ne fera pas au milieu d’un jeu –, d’autres terminaux effectuent une rotation simplement en fonction des informations de leurs accéléromètres.
La troisième possibilité pour gérer les rotations consiste donc à indiquer à Android que
vous vous en occuperez vous-même et que vous ne voulez pas que le framework vous aide.
Pour ce faire :
1. Utilisez l’attribut android:configChanges de l’élément activity dans votre fichier
AndroidManifest.xml pour énumérer les modifications de configuration que vous
voulez gérer vous-même.
2. Dans votre classe Activity, implémentez la méthode onConfigurationChanged(),
qui sera appelée lorsque l’une des modifications énumérées dans android:configChanges aura lieu.
Vous pouvez désormais outrepasser tout le processus de suppression d’activité pour
n’importe quelle modification de configuration et simplement laisser une méthode de
rappel vous prévenir de cette modification.
Le projet Rotation/RotationThree utilise cette technique. Là encore, les fichiers de
description sont les mêmes que précédemment et l’application aura donc le même aspect
que RotationOne et RotationTwo. Le code Java est en revanche assez différent car nous
nous préoccupons non plus de sauvegarder l’état mais plutôt de mettre à jour l’interface
utilisateur pour gérer les changements d’orientation.
Nous devons d’abord ajouter une petite modification à notre manifeste :

package="com.commonsware.android.rotation.three"
android:versionCode="1"
android:versionName="1.0.0">

android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation">




Livre Android.book Page 272 Dimanche, 8. novembre 2009 12:23 12
Précédent

- 287/391

Suivant