Je veux avoir un View
qui est initialement invisible et quand j'appuie sur un bouton, il devient visible avec un fondu d'animation. J'utilise AlphaAnimation
pour l'effet de fondu. Le problème est que si je rend la vue invisible, l'animation ne peut pas être vue.
Merci beaucoup,
Gratzi
Fournissez un AnimationListener
à l'animation et rendez la vue visible dès le début de l'animation.
http://developer.Android.com/reference/Android/view/animation/Animation.AnimationListener.html
Supposons que vous ayez un ImageView
nommé imageView
et un fichier d'animation your_fade_in_anim.xml
dans votre dossier res\anim \:
ImageView imageView = (ImageView) findViewById(R.id.imageView);
Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.your_fade_in_anim);
// Now Set your animation
imageView.startAnimation(fadeInAnimation);
Votre XML
<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android">
<alpha
Android:fromAlpha="0.0"
Android:toAlpha="1.0"
Android:interpolator="@Android:anim/accelerate_interpolator"
Android:duration="[duration (in milliseconds)]"
Android:repeatCount="infinite" />
</set>
Remplacez les supports par votre durée réelle.
Au lieu du nombre de répétitions infini et du masquage/affichage de votre vue, je suggère de ne pas répéter l'animation et de commencer par le canal alpha réglé au maximum. Ensuite, vous pouvez utiliser:
<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android">
<alpha
Android:fromAlpha="0.0"
Android:toAlpha="1.0"
Android:interpolator="@Android:anim/accelerate_interpolator"
Android:duration="[duration (in milliseconds)]"
Android:repeatCount="0" />
</set>
Et tu as fini. Pas besoin d'auditeur, de cacher ou de montrer. Tout aussi simple.