#android #kotlin
Вопрос:
Я пытаюсь запустить анимацию по одному, используя путь для ObjectAnimator, но новая анимация начинает свое движение с исходного положения, как я могу продолжить анимацию с предыдущего положения.
val path = Path().apply {
lineTo(randomWidth(), randomHeight())
}
val path2 = Path().apply {
lineTo(randomWidth(), randomHeight())
}
list.add(
ObjectAnimator.ofFloat(catchView, View.X, View.Y, path).setDuration(2000)
)
list.add(
ObjectAnimator.ofFloat(catchView, View.X, View.Y, path2).setDuration(2000)
)
bouncer.playSequentially(list)
bouncer.start()
Ответ №1:
Чтобы продолжить анимацию с предыдущей позиции, вам нужно будет указать предыдущую позицию в качестве начального значения для использования 2-го пути moveTo()
. Без moveTo()
initial point(0,0)
установки по умолчанию.
например :
val path = Path().apply {
lineTo(randomWidth(), randomHeight())
}
val path2 = Path().apply {
moveTo(randomWidth(), randomHeight())
lineTo(randomWidth() yourDesireValue, randomHeight() yourDesireValue)
}
list.add(
ObjectAnimator.ofFloat(catchView, View.X, View.Y, path).setDuration(2000)
)
list.add(
ObjectAnimator.ofFloat(catchView, View.X, View.Y, path2).setDuration(2000)
)
bouncer.playSequentially(list)
bouncer.start()
Примечание: Из документов lineTo()
Добавьте линию от последней точки до указанной точки (x,y). Если для этого контура не было сделано вызова moveTo (), первая точка автоматически устанавливается в (0,0).