Dieses Tutorial beschreibt eine Methode, die XML verwendet. Wissen Sie, wie Sie dasselbe mit Java erreichen können?
– Pflüger
23. Juli 11 um 0:30 Uhr
Nun, ich bin nicht neben meinem Programmiercomputer, also kann ich diesen Code nicht testen, aber Sie können XML-Attribute in Java setzen. das ist der Originalcode: android:interpolator=”@android:anim/accelerate_interpolator” android:fromAlpha=”0.0″ android:toAlpha=”1.0″ android:duration=”300″ /> n also kannst du wahrscheinlich MyTween.setDurationg (300) MyTween.fromAlpha(0.0) MyTween(1.0)
– Adam Sturm
23. Juli 11 um 17:27 Uhr
Pflüger
Habe mein eigenes Problem herausgefunden. Die Lösung basierte schließlich auf Interpolatoren.
Animation fadeIn = new AlphaAnimation(0, 1);
fadeIn.setInterpolator(new DecelerateInterpolator()); //add this
fadeIn.setDuration(1000);
Animation fadeOut = new AlphaAnimation(1, 0);
fadeOut.setInterpolator(new AccelerateInterpolator()); //and this
fadeOut.setStartOffset(1000);
fadeOut.setDuration(1000);
AnimationSet animation = new AnimationSet(false); //change to false
animation.addAnimation(fadeIn);
animation.addAnimation(fadeOut);
this.setAnimation(animation);
Wenn Sie Kotlin verwenden
val fadeIn = AlphaAnimation(0f, 1f)
fadeIn.interpolator = DecelerateInterpolator() //add this
fadeIn.duration = 1000
val fadeOut = AlphaAnimation(1f, 0f)
fadeOut.interpolator = AccelerateInterpolator() //and this
fadeOut.startOffset = 1000
fadeOut.duration = 1000
val animation = AnimationSet(false) //change to false
animation.addAnimation(fadeIn)
animation.addAnimation(fadeOut)
this.setAnimation(animation)
Was ist, wenn Sie 5 oder 6 Ein-/Ausblendungen mit wirklich kleinen Verzögerungen wie 100 für jede machen möchten, könnten Sie so etwas verwenden? Ich habe es versucht, aber es ist nicht wirklich flüssig. Ziel war es, zum Beispiel eine Glühbirne zu simulieren, die nicht richtig funktionieren und funkeln würde.
– Chayy
12. August 11 um 16:36 Uhr
Versuchen Sie, this.setAnimation in einer Schleife aufzurufen
– Jonathan
30. Juli 13 um 15:00 Uhr
Ich dachte, ich würde das letzte bg-Bild ausblenden und das aktuelle einblenden, aber diese Antwort inspiriert mich, dass ich nur das aktuelle bg-Bild einblenden und das aktuelle ausblenden muss, da AlphaAnimation nicht zwei verschiedene Bilder ein- / ausblenden kann .
– macio.Jun
3. Februar 14 um 18:20 Uhr
Ich glaube nicht, dass Sie zwei unabhängige Animationen haben müssen … Ich denke, Sie könnten eine einzelne Animation haben und den Parameter festlegen: fadeInOut.setRepeatMode(Animation.REVERSE);
– RoundSparrow hilltx
30. September 14 um 14:03 Uhr
Zweitens: Wenn Sie wiederholen möchten, müssen Sie nicht in einer Schleife anrufen, wie @jonney sagte. Verwenden Sie fadeInOut.setRepeatCount(6) – ändern Sie 6 so, wie viele Sie wiederholen möchten. Viel weniger Overhead, um all dies den nativen C++-Code in Android erledigen zu lassen, anstatt eine Java-Schleife aufzurufen.
– RoundSparrow hilltx
30. September 14 um 14:04 Uhr
Konrad Winkowski
Ich weiß, dass dies schon beantwortet wurde, aber…..
+1 Weil ich mit dieser Antwort eine Sequenz aus Einblenden, Ausblenden und Einblenden machen könnte (einfach repeatCount=”2″ setzen). Ich konnte Animationen nicht verketten, wie die akzeptierte Antwort vorschlägt.
– ElYeante
10. Februar 14 um 14:50 Uhr
Nachdem Sie dies erklärt haben alpha Ressource, wie kann ich sie verwenden?. Danke
– Zozelfelfo
17. März ’14 um 12:00 Uhr
zozelfelfo Es ist nur eine Animations-XML, also laden Sie sie in den Code und rufen Sie dann startAnimation für die gewünschte Ansicht auf.
– Konrad Winkowski
18. März 14 um 13:53 Uhr
@KonradWinkowski startAnimation Methode erfordert Animationsobjekt als Argument! was soll ich dazu geben?
– Ahmad Watani
24. Juli 15 um 7:48 Uhr
Für diejenigen, die eine vollständigere Antwort suchen: viewToAnimate.startAnimation(AnimationUtils.loadAnimation(context, R.anim.fade_in_out)wo es eine fade_in_out.xml-Datei im anim-Ordner unter res gibt.
Ein wichtiger Punkt ist, dass Sie die zurücksetzen müssen setStartDelay() auf 0 in der ersten Animation, wenn Sie es in der zweiten Animation verwenden, um den Start zu verzögern. Andernfalls merkt es sich diese Verzögerung für jede nachfolgende Animation.
– zkon
19. August 2020 um 4:34 Uhr
Hier ist meine Lösung mit AnimatorSet, die etwas zuverlässiger zu sein scheint als AnimationSet.
Keine Notwendigkeit, 2 Animationen für zu definieren einblenden und ausblenden. ausblenden ist umgekehrt von einblenden.
Damit kannst du das machen Animation.RÜCKWÄRTS so was:
AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f);
alphaAnimation.setDuration(1000);
alphaAnimation.setRepeatCount(1);
alphaAnimation.setRepeatMode(Animation.REVERSE);
view.findViewById(R.id.imageview_logo).startAnimation(alphaAnimation);
dann onAnimationEnd:
alphaAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
//TODO: Run when animation start
}
@Override
public void onAnimationEnd(Animation animation) {
//TODO: Run when animation end
}
@Override
public void onAnimationRepeat(Animation animation) {
//TODO: Run when animation repeat
}
});
Da ich an die Leistungsfähigkeit von XML (für Layouts) glaube, ist dies das Äquivalent für die akzeptierte Antwort, jedoch nur als Animationsressource:
Der fillAfter ist, dass die Überblendung nach Abschluss der Animation bestehen bleibt. Der interpolator Griffe Interpolation der Animationen, wie Sie sich denken können. Sie können auch andere Arten von Interpolatoren wie Linear oder Overshoot verwenden.
Stellen Sie sicher, dass Sie Ihre Animation in Ihrer Ansicht starten:
Ja, Sie können Bilder ein- und ausblenden! Dieses Tutorial sollte den Trick machen. sankarganesh-info-exchange.blogspot.com/2011/04/…
– Adam Sturm
22. Juli 11 um 22:40 Uhr
Dieses Tutorial beschreibt eine Methode, die XML verwendet. Wissen Sie, wie Sie dasselbe mit Java erreichen können?
– Pflüger
23. Juli 11 um 0:30 Uhr
Nun, ich bin nicht neben meinem Programmiercomputer, also kann ich diesen Code nicht testen, aber Sie können XML-Attribute in Java setzen. das ist der Originalcode: android:interpolator=”@android:anim/accelerate_interpolator” android:fromAlpha=”0.0″ android:toAlpha=”1.0″ android:duration=”300″ /> n also kannst du wahrscheinlich MyTween.setDurationg (300) MyTween.fromAlpha(0.0) MyTween(1.0)
– Adam Sturm
23. Juli 11 um 17:27 Uhr