web-dev-qa-db-fra.com

Quelle est la différence entre un animateur et une animation?

Il semble que Animations et Animators me permettent d'animer des propriétés (position, opacité, échelle, rotation, etc.) sur des objets, et j'ai du mal à faire la différence entre le cas d'utilisation pour les deux. Quand dois-je utiliser un animateur par rapport à une animation et vice versa?

59
adamdport

Animations sont des versions plus anciennes de Animators. Les animateurs ont été introduits dans la version 3.0 pour aider à surmonter certaines lacunes des animations.

Animations modifie uniquement la représentation visuelle d'un objet. C'est bien si vous modifiez simplement l'opacité, mais cela pose des problèmes lorsque vous traduisez, faites pivoter ou mettez à l'échelle des objets. Autrefois, avant Animators, si vous traduisiez l'objet, vous deviez effectuer une nouvelle présentation avec les nouvelles coordonnées. Cela pourrait être assez difficile selon l'endroit où l'objet s'est déplacé.

Les animateurs quant à eux modifient les propriétés physiques des objets. Cela signifie que si vous déplacez une vue vers un nouvel emplacement, les coordonnées tactiles seront mappées au nouvel emplacement sans aucune autre intervention.

Personnellement, je n'utilise plus beaucoup les animations, sauf si je développe avec l'API 2.3 ou moins. Heureusement, cela devient de moins en moins un problème. Il existe également certaines anciennes classes qui utilisent toujours l'API Animations, en particulier lorsqu'il s'agit d'utiliser des ressources xml telles que Android.support.v4.app.FragmentTransaction class (le FragmentTransaction normal prend en charge les animateurs à la place).

En remarque, le projet NineOldAndroids a été développé pour imiter la fonctionnalité des animateurs mais en utilisant des animations afin que vous puissiez créer des applications qui fonctionnent jusqu'à 1.6.

85
DeeV

Un objet Animation anime l'image de la vue. Si vous l'utilisez par exemple, pour déplacer un bouton sur l'écran, vous ne le ferez pas pourrez cliquer dessus à la nouvelle position visible car il n'a pas été vraiment déplacé, mais seule sa représentation bitmap a été traduite. Vous ne pourrez pas non plus en modifier les proportions puisque vous apportez des modifications à un bitmap. Si vous utilisez des fichiers xml, placez-les dans le dossier anim.

Un objet Animator anime la propriété de la vue (comme la marge ou la largeur). Si vous l'utilisez pour déplacer un bouton sur l'écran, vous serez capable de capturer des clics sur celui-ci dans les nouvelles positions visibles. Si vous utilisez des fichiers xml, placez-les dans le dossier animator.

Si vous n'avez besoin que d'effets cosmétiques, comme un fondu ou une traduction de petite apparence, l'utilisation d'un Animation sera plus efficace car il n'appelle pas les méthodes layout() ou measure(). Si vous devez capturer des actions telles que des événements de clic, utilisez un Animator.

2
Allan Veloso