09.02.2017 Views

creez-des-applications-pour-android

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

3 Création d’interfaces graphiques<br />

<br />

<br />

<br />

<br />

<br />

Un dernier détail. Une animation permet de donner du dynamisme à une vue, mais elle n’effectuera<br />

pas de changements réels sur l’animation : l’animation effectuera l’action, mais uniquement<br />

sur le plan visuel. Ainsi, si vous essayez ce code, Android affichera un mouvement, mais<br />

une fois l’animation finie, les vues redeviendront exactement comme elles étaient avant le début<br />

de l’animation. Heureusement, il est possible de demander à votre animation de changer les vues<br />

<strong>pour</strong> qu’elles correspondent à leur état final à la fin de l’animation. Il suffit de rajouter les deux<br />

attributs <strong>android</strong>:fillAfter="true" et <strong>android</strong>:fillEnabled="true".<br />

Enfin je ne vais pas abuser de votre patience, je comprendrais que vous ayez envie d’essayer votre<br />

nouveau joujou. Pour ce faire, c’est très simple, utilisez la classe AnimationUtils.<br />

// On crée un utilitaire de configuration <strong>pour</strong> cette animation<br />

Animation animation = AnimationUtils.loadAnimation(contexte_dans_lequel_se_situe_la_vue<br />

// On l'affecte au widget désiré, et on démarre l'animation<br />

le_widget.startAnimation(animation);<br />

3.4.5.1.6 Pour un layout Si vous effectuez l’animation sur un layout, alors vous aurez une<br />

petite manipulation à faire. En fait, on peut très bien appliquer une animation normale à un layout<br />

avec la méthode que nous venons de voir, mais il se trouve qu’on voudra parfois faire en sorte que<br />

l’animation se propage parmi les enfants du layout <strong>pour</strong> donner un joli effet.<br />

Tout d’abord, il vous faut créer un nouveau fichier XML, toujours dans le répertoire res/anim,<br />

mais la racine de celui-ci sera un nœud de type (attention au « l » minuscule<br />

!). Ce nœud peut prendre trois attributs. Le plus important est <strong>android</strong>:animation puisqu’il<br />

faut y mettre l’identifiant de l’animation qu’on veut passer au layout. On peut ensuite définir<br />

le délai de propagation de l’animation entre les enfants à l’aide de l’attribut <strong>android</strong>:delay.<br />

Le mieux est d’utiliser un <strong>pour</strong>centage, par exemple 100% <strong>pour</strong> attendre que l’animation soit finie<br />

ou 0% <strong>pour</strong> ne pas attendre. Enfin, on peut définir l’ordre dans lequel l’animation s’effectuera<br />

parmi les enfants avec <strong>android</strong>:animationOrder, qui peut prendre les valeurs : normal <strong>pour</strong><br />

l’ordre dans lequel les vues ont été ajoutées au layout, reverse <strong>pour</strong> l’ordre inverse et random<br />

<strong>pour</strong> une distribution aléatoire entre les enfants.<br />

On obtient alors :<br />

152

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!