ObjectAnimator
(左→右→左)を使用してHorizontalScrollView
をスクロールしています。したがって、結果は、ある側から別の側への無限のスクロールのようなものでなければなりません。ObjectAnimatorの2回目の起動前にデフォルトの遅延を削除します
問題は、右から左にアニメーションを開始してから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();
は 'ObjectAnimator'^Fリピート – pskink
いやのドキュメントを参照してください、私は繰り返し知っています。しかし、アニメーションのフルパスを構築するには問題があります。つまり、右 - 右 - 右であるため、滑らかでなければなりません。 – AnZ
ちょうど 'CycleInterpolator'のような右のインターポレータを使用します。 – pskink