8

Ich habe einen Objektanimator mit unendlichen Wiederholungsmodus. Ich möchte es nur beim ersten Mal beschleunigen ... nicht jedes Mal, wenn es sich wiederholtInfinite ObjectAnimator mit Interpolator ... Wie beschleunigt man nur den ersten Start?

Wie kann das erreicht werden?

mein Code:

universeMovement1 = ObjectAnimator.ofFloat(universeImageView, "x", 0, sw); 
     universeMovement1.setDuration(UNIVERSE_MOVEMENT_TIME); 
     universeMovement1.setRepeatCount(ObjectAnimator.INFINITE); 
     universeMovement1.setRepeatMode(ObjectAnimator.RESTART); 
     universeMovement1.setInterpolator(new AccelerateInterpolator()); 

Antwort

6

hinzufügen Zuhörer auf Ihre Animation mit dem Verfahren onAnimationRepeat und stellen Sie den Interpolator zu LinearInterpolator zurück, oder was auch immer Sie wollen. Wenn es also wiederholt wird, wird es nicht mehr beschleunigen.

animation.addListener(new AnimatorListenerAdapter(){ 
     @Override 
     public void onAnimationRepeat(Animator animation) { 
      animation.setInterpolator(new LinearInterpolator()); 
     } 
    });