6

mam ten ObjectAnimator:Jak usunąć wolny koniec animacji za pomocą ObjectAnimatora?

cloudAnim2 = ObjectAnimator.ofFloat(cloud2ImageView, "x",500, 1000); 
    cloudAnim2.setDuration(3000); 
    cloudAnim2.setRepeatCount(ValueAnimator.INFINITE); 
    cloudAnim2.setRepeatMode(ValueAnimator.RESTART);   
    cloudAnim2.start(); 
    cloudAnim2.addListener(new AnimatorListener() { 
     @Override 
     public void onAnimationCancel(Animator animation) {} 
     @Override 
     public void onAnimationEnd(Animator animation) {} 
     @Override 
     public void onAnimationRepeat(Animator animation) {} 
     @Override 
     public void onAnimationStart(Animator animation) {} 
    }); 

Jak widać, chmura rozpocznie z pozycji 500 i będzie animować do pozycji 1000, a następnie będzie to powtórzyć animację.

Problem polega na tym, że animacja staje się wolniejsza, ponieważ zbliża się do końca. Chodzi mi o to, że prędkość ruchu nie zawsze jest taka sama.

Chcę, aby prędkość stała się zawsze taka sama. Jak to zrobić?

dzięki

Odpowiedz

9

Domyślna interpolator jest AccelerateDecelerateInterpolator, więc trzeba będzie ustawić go ręcznie do interpolatora liniowego.

animation.setInterpolator (new LinearInterpolator());

+0

Doszedłem do dokładnie tego samego wniosku, gdy ze złożoną powtarzającą się animacją za pomocą KeyFrames, PVH i ObjectAnimator.ofPropertyValuesHolder. Zawsze zakładałem, że ObjectAnimator będzie polegać wyłącznie na animatorach ustawionych w KeyFrame, ale byłem naprawdę zaskoczony, że domyślnie widzę AccelerateDecelerateInterpolator. – Mattias

Powiązane problemy