android - 删除第二次启动 ObjectAnimator 之前的默认延迟

标签 android android-animation horizontalscrollview objectanimator

我正在使用 ObjectAnimator 滚动 Horizo​​ntalScrollView(左 -> 右 -> 左)。因此,结果应该是从一侧无限滚动到另一侧。

问题是,在我开始向右 -> 向左设置动画后,会有一些延迟,例如 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/

相关文章:

Android以编程方式更改按钮的文本颜色

java - 在 expandableListView android 中添加动态 subview

android - 动画移除 fragment

android - horizo​​ntalscrollview 设置子元素填充 horizo​​ntalscrollview 宽度

android - 将动态 ImageViews 添加到 android 中的水平 ScrollView

android - 根据另一个 RV 滚动增加和减少 RV 高度

android - 在 API 8 (Froyo) 中终止一个应用程序/包

使用 createUserWithEmailAndPassword 进行 Android Firebase 身份验证

android - 应用内计费测试 : android. test.purchased 已拥有

android - 以随机时间间隔淡入/淡出