web-dev-qa-db-fra.com

Utilisation de l'animation en fondu pour une vue

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

34
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

26
Timo Ohr

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.

126
Tanmay Mandal

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.

3
OrangeCMS