8

Ho un animatore di oggetti con modalità di ripetizione infinita. Voglio accelerarlo solo la prima volta che inizia ... non ogni volta si ripeteOggetto infinitoAnimatore con interpolatore ... Come accelerare solo l'avvio iniziale?

Come si può ottenere questo?

il mio codice:

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

risposta

6

aggiungere un listener per l'animazione con il metodo onAnimationRepeat e impostare l'interpolatore di nuovo a LinearInterpolator, o quello che volete. Quindi quando si ripete non accelera più.

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