Ich möchte Animation mehrere Ansichten, sagen wir auf 4 verschiedenen Bildansichten hinzufügen, so wie kann ich die Animation für diese Elemente starten. Der Ablauf sollte Animation beginnt bei 1 Element und wenn es fertig ist Animation sollte am 2. Element beginnen und wenn dies fertig ist, sollte es am 3. Element beginnen.Mehrere Animationen android
Antwort
Sie müssen Animation.AnimationListener Schnittstelle verwenden, um die Animationen zu verfolgen oder zu überwachen. Dieser Listener enthält drei Methoden: 1. onAnimationStart(): Diese Methode wird aufgerufen, wenn die Animation gestartet wird. 2. onAnimationEnd(): Diese Methode wird aufgerufen, wenn die Animation beendet wird. 3. onAnimationRepeat(): Diese Methode wird aufgerufen, wenn die Animation wiederholt wird.
die Animation.AnimationListener
erstellen, wie unten dargestellt:
Animation.AnimationListener animationListener = new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
};
Um nun alle Ihre Animationen zu überwachen, müssen Sie für jede Animation separate Instanzen von Animation.AnimationListener
Schnittstelle erstellen. In der Methode onAnimationEnd()
jeder Schnittstelle müssen Sie die nächste Animation starten. Zum Beispiel in der Animations.AnimationListener onAnimationEnd() -Methode für erste ImageView
starten Sie die Animation für die zweite ImageView
.
U bedeutet zu sagen, dass ich mehrere animation listener machen müssen? –
Ja, Sie müssen für jede Animation einen separaten AnimationsListener erstellen. –
Ok danke, ich habe mich nur gefragt, ob es eine Möglichkeit gibt, dies ohne mehrere Animations-Listener zu tun? –
Animator animation = AnimatorInflater.loadAnimator(getApplicationContext(),
R.animator.selectzoom);//selectzoom is a xml file of your animation
Um Animation zu einem Bild hinzuzufügen, basierend auf Index eines Bildwertes in Bildansicht Array
animation.setTarget(imageView[animaterimg]);//imageView is a array of your images views
animation.start();
Animation zu einem Bild zu stoppen, basierend auf Index eines Bildwertes in Bildansicht Array
imageView[animaterimg].clearAnimation();
imageView[animaterimg].animate().cancel();
selectzoom muss in Animator Ordner
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<objectAnimator
android:duration="1000"
android:interpolator="@android:interpolator/accelerate_decelerate"
android:repeatCount="infinite"
android:repeatMode="reverse"/>
<objectAnimator
android:duration="1000"
android:interpolator="@android:interpolator/accelerate_decelerate"
android:propertyName="scaleX"
android:repeatCount="infinite"
android:repeatMode="reverse" />
</set>
Ich habe versucht, zwei Bilder zu machen und Animation auf das erste Element beim Klicken auf die Schaltfläche zu starten. Ich habe Animations-Listener verwendet, um das Start- und Ende-Animationsereignis zu erkennen, so dass beim Beenden der Animation die erste Animation gelöscht und der Wert einer Integer-Variablen erhöht wird und überprüft wird, ob position == 1 ist. Dies funktioniert auf 2 Objekte aber nicht mehr als das. –
@android_beginner also willst du es mit zwei imageviews oder einem imageview tun – eLemEnt