Как последовательно запустить несколько анимаций перевода с помощью ObjectAnimator?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как последовательно запустить несколько анимаций перевода с помощью ObjectAnimator?

Сообщение Anonymous »

Как последовательно запустить несколько анимаций перевода с помощью ObjectAnimator?
Мне нужно анимировать изображение вот так -> из центра оно перемещается влево, а затем возвращается в центр, после который он должен сдвинуть вправо и вернуться в центр, а потом повторяет последовательность бесконечно, я пробовал сделать так:
val finalizer = Runnable {
animateCenterToLeft()
animateCenterToRight()
}
Handler().postDelayed(finalizer, 0)

private fun animateCenterToLeft() {
val finalizerR = Runnable {
binding.logoAnimated.post {
val point = Point()
requireActivity().windowManager.defaultDisplay.getSize(point)
val width = binding.logoAnimated.measuredWidth.toFloat()
val objectAnimator = ObjectAnimator.ofFloat(
binding.logoAnimated,
"translationX",
0f,
-(width - point.x)
)
objectAnimator.repeatMode = ValueAnimator.REVERSE
objectAnimator.repeatCount = 1
objectAnimator.setDuration(10000)
objectAnimator.start()
}
}
Handler().postDelayed(finalizerR, 500)
}

private fun animateCenterToRight() {
val finalizerL = Runnable {
binding.logoAnimated.post {
val point = Point()
requireActivity().windowManager.defaultDisplay.getSize(point)
val width = binding.logoAnimated.measuredWidth.toFloat()
val objectAnimator = ObjectAnimator.ofFloat(
binding.logoAnimated,
"translationX",
0f,
+(width - point.x)
)
objectAnimator.repeatMode = ValueAnimator.REVERSE
objectAnimator.repeatCount = 1
objectAnimator.setDuration(10000)
objectAnimator.start()
}
}
Handler().postDelayed(finalizerL, 500)

}

Я ожидаю, что сначала запустится первая анимация, а затем вторая, но вместо этого запускается только вторая анимация.
ОБНОВЛЕНИЕ< /p>
Я пробую это, но анимация слишком быстрая
val animator1 = ObjectAnimator
.ofFloat(binding.logoAnimated,
"translationX", 0f, -(width - point.x)).apply {
repeatCount = 1
repeatMode = ValueAnimator.REVERSE
}

val animator2 = ObjectAnimator
.ofFloat(binding.logoAnimated,"translationX",
0f, +(width - point.x)).apply {
repeatCount = 1
repeatMode = ValueAnimator.REVERSE
}

val animatorSet = AnimatorSet()
animatorSet.playSequentially(animator1, animator2)
animatorSet.start()


Подробнее здесь: https://stackoverflow.com/questions/786 ... ctanimator
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как последовательно запустить несколько анимаций перевода с помощью ObjectAnimator?
    Anonymous » » в форуме Android
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Как последовательно запустить несколько анимаций перевода с помощью ObjectAnimator?
    Anonymous » » в форуме Android
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Как последовательно воспроизводить ObjectAnimator с помощью playTogether
    Гость » » в форуме JAVA
    0 Ответы
    27 Просмотры
    Последнее сообщение Гость
  • Как последовательно воспроизводить ObjectAnimator с помощью playTogether
    Гость » » в форуме Android
    0 Ответы
    9 Просмотры
    Последнее сообщение Гость
  • Использование: Hover, чтобы запустить @keyframes animation, когда элемент использует несколько анимаций
    Anonymous » » в форуме CSS
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»