Подтвердить что ты не робот

AnimatorSet с вызовом setStartDelay для onAnimationStart

Я использую Android KitKat, и это, кажется, не работает, как ожидалось. У меня есть AnimatiorSet, который должен запускаться после некоторой задержки, но я хочу сделать некоторые действия, когда анимация действительно запускается (после задержки). Похоже, что AnimatorSet вызывает onAnimationStarted для слушателей сразу после вызова start().

Пример кода ниже:

AnimatorSet set = new AnimatorSet();
set.playTogether(
     ObjectAnimator.ofFloat(obj, "x", 10),
     ObjectAnimator.ofFloat(obj, "y", 10));
set.setStartDelay(5000);
set.setDuration(1000)

set.addListener(new AnimatorListenerAdapter()
{
    @Override
    public void onAnimationStart(Animator animation)
    {
        // do sth
    }
});

set.start();

В этом случае слушатель вызывается немедленно, а не с задержкой. Чтобы обойти эту проблему, я проверил, дает ли добавление слушателя аниматорам, переданным в playTogether, ожидаемый результат, и это действительно так. Это ошибка?

4b9b3361

Ответ 1

Другим обходным решением для этого является:

@Override
public void onAnimationStart(Animator animator) {
    rootView.postDelayed(new Runnable() {
        @Override
        public void run() {
            // todo
        }
    }, set.getStartDelay());
}