Ich möchte eine 2-Sekunden-Animation einer ImageView haben, die 1000 ms einblendet und dann 1000 ms ausblendet.
Folgendes habe ich bisher in meinem ImageView-Konstruktor:
Animation fadeIn = new AlphaAnimation(0, 1);
fadeIn.setDuration(1000);
Animation fadeOut = new AlphaAnimation(1, 0);
fadeOut.setStartOffset(1000);
fadeOut.setDuration(1000);
AnimationSet animation = new AnimationSet(true);
animation.addAnimation(fadeIn);
animation.addAnimation(fadeOut);
this.setAnimation(animation);
Wenn ich diese Animation ausführe, wird nichts angezeigt. Wenn ich jedoch eine der Alpha-Animationen entferne, funktioniert das Verhalten wie erwartet.
Dinge, die ich bereits versucht habe:
- Jede denkbare Kombination aus
setFillBefore
,setFillAfter
undsetFillEnabled
. - Hinzufügen eines
LinearInterpolator
zumAnimationSet
.
Antworten:
Ich habe mein eigenes Problem herausgefunden. Die Lösung basierte schließlich auf Interpolatoren.
Wenn Sie Kotlin verwenden
quelle
Ich weiß, dass dies bereits beantwortet wurde, aber .....
Schnelle und einfache Möglichkeit zum schnellen Ein- und Ausblenden mit einer Selbstwiederholung. Genießen
BEARBEITEN : Fügen Sie in Ihrer Aktivität Folgendes hinzu:
quelle
alpha
Wie kann ich diese Ressource nach der Deklaration verwenden? DankeviewToAnimate.startAnimation(AnimationUtils.loadAnimation(context, R.anim.fade_in_out)
Wo befindet sich eine Datei fade_in_out.xml im Animationsordner unter res.quelle
Hier ist meine Lösung mit AnimatorSet, die etwas zuverlässiger zu sein scheint als AnimationSet.
quelle
Eine andere Alternative:
Für fadeIn und fadeOut müssen keine 2 Animationen definiert werden . fadeOut ist umgekehrt zu fadeIn .
So können Sie dies mit Animation.REVERSE wie folgt tun :
dann onAnimationEnd :
quelle
Da ich an die Leistungsfähigkeit von XML (für Layouts) glaube, entspricht dies der akzeptierten Antwort , jedoch nur als Animationsressource:
Damit
fillAfter
soll die Überblendung nach Abschluss der Animation erhalten bleiben. Dieinterpolator
Handles Interpolation der Animationen, wie Sie sich vorstellen können. Sie können auch andere Arten von Interpolatoren verwenden, z. B. Linear oder Overshoot.Stellen Sie sicher, dass Sie Ihre Animation in Ihrer Ansicht starten:
quelle
Hier ist, was ich verwendet habe, um Ansichten ein- und auszublenden. Ich hoffe, dies hilft jemandem.
quelle
AnimationSets scheinen überhaupt nicht wie erwartet zu funktionieren. Am Ende gab ich auf und benutzte das postDelayed () der Handler-Klasse, um Animationen zu sequenzieren.
quelle
Wenn Sie Animator zum Erstellen von Animationen verwenden, können Sie dies tun
anim (Verzeichnis) -> fade_out.xml
In Java
Eine andere Möglichkeit, Animationen nur mit Java-Code auszublenden, ist
quelle
Sie können auch animationListener verwenden, ungefähr so:
quelle
Ich mag die Vitaly Zinchenkos- Lösung sehr, da sie kurz war.
Hier ist eine noch kürzere Version in Kotlin zum einfachen Ausblenden
quelle