С классом Animator вы можете просто вызвать что-то вроде следующего для одновременного воспроизведения нескольких анимаций:
AnimatorSet animatorSet = new AnimatorSet(); animatorSet.playTogether(animatorsArray); animatorSet.start();
Но я не могу найти ничего подобного, которое будет работать с ViewPropertyAnimator.
(FYI. Я пытаюсь анимировать несколько элементов listView)
Я знаю, что вопрос уже не один год, но так как мне нужно то же самое, и я придумал решение, я решил поделиться им:
Я создал обертку ObjectAnimator
которую вы можете использовать почти так же, как и для ViewPropertyAnimator
. И все же вы можете использовать объект ObjectAnimator
чтобы вы могли написать свой AnimatorSet
.
Обертка доступна здесь .
Пример (настройка анимации тех же параметров для mTestView
):
ViewPropertyAnimator
mTestView.animate().withLayer().alphaBy(0.3f).rotationX(27);
ViewPropertyObjectAnimator
(моя обертка) ObjectAnimator objectAnimator = ViewPropertyObjectAnimator.animate(mTestView).withLayer().alphaBy(0.3f).rotationX(27).get();
И у вас есть ObjectAnimator
который вы можете либо start()
либо использовать внутри AnimatorSet
.
Я бы предложил использовать withStartAction, как я упоминал выше.
При дальнейшем чтении страницы ViewPropertyAnimator в документах Android
Public ViewPropertyAnimator withStartAction (Runnable runnable) Добавлен в уровень API 16
Указывает действие, которое будет выполняться при следующем запуске анимации. Если на этом ViewPropertyAnimator установлен startDelay, действие будет запускаться после того, как истечет время началаDelay, когда начнется фактическая анимация. Этот метод, наряду с EndAction (Runnable), предназначен для облегчения хореографии анимаций ViewPropertyAnimator с другими анимациями или действиями в приложении.
Я собираюсь использовать это сам, и похоже, что он работает.
Я добавил весь код анимации в Runnable, добавил несколько Runnables в ArrayList, и когда я был готов, я зациклился на ArrayList и назвал run () для всех из них.