web-dev-qa-db-fra.com

Les animations apparaissent et disparaissent

En utilisant ce code, je n'ai qu'un fondu entrant, je cherche aussi à ajouter un fondu. J'ai ajouté un autre xml appelé "fadeout" mais je ne peux pas l'intégrer dans mon code.

ImageView imageView = (ImageView)findViewById(R.id.imageView);
Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fadein);
imageView.startAnimation(fadeInAnimation);

button1.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        imageView.startAnimation(fadeInAnimation);
    }
}

fadein.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="Your Duration(in milisecond)"
    Android:repeatCount="infinite"/>
 </set>
25
Pol Hallen

Voici ma solution. Il utilise AnimatorSet. La bibliothèque AnimationSet était trop boguée pour fonctionner. Cela permet des transitions transparentes et infinies entre les fondus en entrée et en sortie.

public static void setAlphaAnimation(View v) {
    ObjectAnimator fadeOut = ObjectAnimator.ofFloat(v, "alpha",  1f, .3f);
    fadeOut.setDuration(2000);
    ObjectAnimator fadeIn = ObjectAnimator.ofFloat(v, "alpha", .3f, 1f);
    fadeIn.setDuration(2000);

    final AnimatorSet mAnimationSet = new AnimatorSet();

    mAnimationSet.play(fadeIn).after(fadeOut);

    mAnimationSet.addListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationEnd(Animator animation) {
            super.onAnimationEnd(animation);
            mAnimationSet.start();
        }
    });
    mAnimationSet.start();
}
38
TWilly

C'est un bon exemple pour Fade In and Fade Out Animation with Alpha Effect

Animate Fade In Fade Out

MIS À JOUR :

vérifier ceci répondre que cela vous aide

20
SilentKiller

Je travaille à Kotlin (à recommander à tout le monde), donc la syntaxe est peut-être un peu décalée ..__

v.animate().alpha(0f).duration = 200

Je pense que, en Java, ce serait le suivant:

v.animate().alpha(0f).setDuration(200)

Essayer:

private void hide(View v, int duration) {
    v.animate().alpha(0f).setDuration(duration)
}

private void show(View v, int duration) {
    v.animate().alpha(1f).setDuration(duration)
}
2
Ícaro Mota

Selon la documentation AnimationSet

Représente un groupe d'animations qui doivent être lues ensemble. Le transformation de chaque animation individuelle sont composées ensemble en une seule transformation. Si AnimationSet définit les propriétés ayant la valeur Les enfants définissent également (par exemple, duration ou fillBefore) les valeurs de AnimationSet remplace les valeurs enfants

AnimationSet mAnimationSet = new AnimationSet(false); //false means don't share interpolators

Passez true si toutes les animations de cet ensemble doivent utiliser le fichier interpolateur associé à cet AnimationSet. Passe faux si chacun l'animation doit utiliser son propre interpolateur.

ImageView imageView= (ImageView)findViewById(R.id.imageView);
Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_in);
Animation fadeOutAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_out);
mAnimationSet.addAnimation(fadeInAnimation);
mAnimationSet.addAnimation(fadeOutAnimation);
imageView.startAnimation(mAnimationSet);

J'espère que cela t'aidera.

2
Mina Fawzy

nous pouvons simplement utiliser:

public void animStart(View view) {
    if(count==0){
        Log.d("count", String.valueOf(count));
        i1.animate().alpha(0f).setDuration(2000);
        i2.animate().alpha(1f).setDuration(2000);
        count =1;
    }
    else if(count==1){
        Log.d("count", String.valueOf(count));
        count =0;
        i2.animate().alpha(0f).setDuration(2000);
        i1.animate().alpha(1f).setDuration(2000);
    }
}

où i1 et i2 sont définis dans onCreateView () comme:

    i1 = (ImageView)findViewById(R.id.firstImage);
    i2 = (ImageView)findViewById(R.id.secondImage);

count est une variable de classe initialisée à 0.

Le fichier XML est:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
        xmlns:app="http://schemas.Android.com/apk/res-auto"
        xmlns:tools="http://schemas.Android.com/tools"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        tools:context=".MainActivity">
        <ImageView
            Android:id="@+id/secondImage"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:onClick="animStart"
            Android:src="@drawable/second" />
      <ImageView
          Android:id="@+id/firstImage"
          Android:layout_width="match_parent"
          Android:layout_height="wrap_content"

          Android:onClick="animStart"
          Android:src="@drawable/first" />
    </RelativeLayout>

@ tirable/premier et @ tirable/seconde sont les images dans le dossier pouvant être dessiné en res.