L'application successive des animations pour ImageView dans Android
Je voudrais appliquer plusieurs animations (dire ScaleAnimation) à une ImageView montrant une image de ressource. L'animation est déclenchée par un bouton. Par exemple, je voudrais progressivement agrandir une image sur chaque clic sur le bouton.
J'ai mis fillAfter="true" sur l'animation. Cependant, toutes les animations commencent à partir de l'état initial de l'ImageView. Il me semble que si l'ImageView réinitialise son état et l'animation est toujours le même, au lieu de partir de l'état final de l'animation précédente.
Ce que je fais mal?
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button)findViewById(R.id.Button01);
button.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
animate();
}});
}
private void animate() {
ImageView imageView = (ImageView) findViewById(R.id.ImageView01);
ScaleAnimation scale = new ScaleAnimation((float)1.0, (float)1.5, (float)1.0, (float)1.5);
scale.setFillAfter(true);
scale.setDuration(500);
imageView.startAnimation(scale);
}
Vous devez vous connecter pour publier un commentaire.
Précisément! Je suis sûr qu'il ya une utilisation de
fillAfter="true"
, mais je n'ai pas compris le point pour l'instant.Ce que vous devez faire est de mettre en place un
AnimationListener
sur chaqueAnimation
de pertinence, et de faire quelque chose à l'auditeuronAnimationEnd()
à fait persister la fin de l'état de votre animation. Je n'ai pas joué avecScaleAnimation
donc je ne suis pas tout à fait sûr de ce que le moyen de "persistent à la fin de l'état" serait. Si c'était unAlphaAnimation
, passant de1.0
à0.0
, vous vous le widgetINVISIBLE
ouGONE
dansonAnimationEnd()
, par exemple.TranslateAnimation
, vous devez adapter votreLayoutParams
à influer sur le changement (par exemple, modifier les marges) ou éventuellement déplacer le widget à partir d'un parent à l'autre (viaremoveView()
etaddView()
).ScaleAnimation
...encore une fois, je ne l'ai pas utilisé, donc je n'ai pas de conseil en particulier ici. Désolé!J'ai eu le même problème et a créé le code suivant pour utiliser facilement les différentes animations. Il ne prend en charge la traduction et de l'alpha pour le moment car je n'ai pas utilisé de mise à l'échelle, mais pourrait facilement être étendu pour prendre en charge davantage de fonctionnalités.
- Je réinitialiser le défilement et la visibilité avant de commencer l'animation, mais c'est juste parce que j'avais besoin/désactiver les animations.
Et le "doEnd" booléen est là pour éviter un débordement de la pile sur la récursivité (scrollTo appels onAnimationEnd pour une raison obscure...)