我正在使用 ObjectAnimator
滚动 HorizontalScrollView
(左 -> 右 -> 左)。因此,结果应该是从一侧无限滚动到另一侧。
问题是,在我开始向右 -> 向左设置动画后,会有一些延迟,例如 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();
最佳答案
您是否尝试过将线性插值器应用于您的动画?
默认插值器不是线性的,因此可能会导致延迟。应用它:
animRight.setInterpolator(new LinearInterpolator());
animLeft.setInterpolator(new LinearInterpolator());
关于android - 删除第二次启动 ObjectAnimator 之前的默认延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37073609/