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

#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).