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

Смежные вопросы