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>
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();
}
C'est un bon exemple pour Fade In and Fade Out Animation with Alpha Effect
MIS À JOUR :
vérifier ceci répondre que cela vous aide
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)
}
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.
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.