6

我有這個ObjectAnimator:如何用ObjectAnimator刪除動畫的慢速結束?

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) {} 
    }); 

正如你所看到的,雲計算將開始的500位置和將要設置動畫位置1000,然後它會重複動畫。

問題是動畫越來越慢,因爲它接近完成。我的意思是,運動的速度並不總是相同的。

我希望速度總是一樣的。如何才能做到這一點?

感謝

回答

9

默認插值是AccelerateDecelerateInterpolator,所以你需要手動將它設置爲線性內插。

animation.setInterpolator(new LinearInterpolator());

+0

當使用KeyFrames,PVH和ObjectAnimator.ofPropertyValuesHolder進行復雜的重複動畫時,我得出了完全相同的結論。 我總是認爲ObjectAnimator將完全依賴於KeyFrame中的動畫設置,但我真的很驚訝地看到默認的AccelerateDecelerateInterpolator。 – Mattias