2

我在滾動HorizontalScrollView使用ObjectAnimator(左→右→左)。因此,結果應該是從一邊到另一邊的無限滾動。在第二次啓動ObjectAnimator前刪除默認延遲

問題是在我開始右鍵 - >左鍵動畫之後有一些延遲,例如1秒。什麼導致這種行爲?

我創建2個動畫,並開始一個接一個(如果你知道更好的解決方案,它的讚賞):

final ObjectAnimator animRight = ObjectAnimator.ofInt(hScrollView, "scrollX", hScrollView.getRight()); 
animRight.setDuration(SCROLL_DURATION); 

final ObjectAnimator animLeft = ObjectAnimator.ofInt(hScrollView, "scrollX", 0); 
animLeft.setDuration(SCROLL_DURATION); 

animRight.addListener(new Animator.AnimatorListener() { 
    @Override 
    public void onAnimationStart(Animator animation) {} 

    @Override 
    public void onAnimationEnd(Animator animation) { 
     animLeft.start(); 
    } 

    @Override 
    public void onAnimationCancel(Animator animation) {} 

    @Override 
    public void onAnimationRepeat(Animator animation) {} 
}); 

animLeft.addListener(new Animator.AnimatorListener() { 
    @Override 
    public void onAnimationStart(Animator animation) {} 

    @Override 
    public void onAnimationEnd(Animator animation) { 
     animRight.start(); //delay occurs here 
    } 

    @Override 
    public void onAnimationCancel(Animator animation) {} 

    @Override 
    public void onAnimationRepeat(Animator animation) {} 
}); 

animRight.start(); 
+0

請參閱文檔'ObjectAnimator'^F重複 – pskink

+0

是的,我知道重複。但是有一個問題需要建立完整的動畫路徑,即右 - 左 - 右,所以它應該是光滑的 – AnZ

+0

只需使用右插補器,就像'CycleInterpolator' – pskink

回答

1

你試過應用線性內插將您的動畫?

默認的插補器不是線性的,因此可能導致延遲。要應用它:

animRight.setInterpolator(new LinearInterpolator()); 
animLeft.setInterpolator(new LinearInterpolator()); 
+0

已應用。滾動沒有像以前那樣加速,但延遲仍然存在 – AnZ