Android - как оживить изменение цвета по дорожке - PullRequest
1 голос
/ 13 октября 2019

Я создал изогнутый путь, как это:

 pathCurve.moveTo(0f, 0f)

        pathCurve.cubicTo(0f,300f,500f, 300f, 500f,300f);

, и это выглядит так:

https://media1.tenor.com/images/de7ca7ff1c54e69ca2f77d8bc3cb8ef6/tenor.gif?itemid=5424985

Я думал, так как у меня есть путь, яможет использовать интерпретатор пути. Затем я увидел, что ObjectAnimator встроил его, поэтому я пытаюсь:

val path = Path().apply {
        cubicTo(0f,300f,500f, 300f, 500f,300f);
    }
    val animator = ObjectAnimator.ofFloat(view, View.X, View.Y, path).apply {
        duration = 2000
        start()
    }

, но как изменить цвет? кажется, что происходит 2 анимации. один делает его темным, затем второй возвращает его обратно в светлый цвет. так что то, что у меня есть, даже не достаточно.

тогда я подумал, что могу анимировать цвет фона, но не могу его скомпилировать:

ObjectAnimator.ofFloat(this,"backgroundColor", Color.Gray,Color.BLUE,path).apply {
            duration = 2000
            start()
        }

кажется, он не работает с path. Как я могу добиться этого эффекта, если у меня уже есть изогнутый путь?

ОБНОВЛЕНИЕ: вот что я попробовал сейчас:

fun backgroundColor(vararg colors: Int) {
        val objectAnimator = ObjectAnimator.ofInt(pathCurve, "backgroundColor", *colors)
        objectAnimator.setEvaluator(ArgbEvaluator())
        objectAnimator.start()
    }

, и я называю это так:

backgroundColor(Color.RED)

я также получаю это предупреждение:

enter image description here но ничего не происходит.

1 Ответ

0 голосов
/ 16 октября 2019

Я нашел способ сделать это ... алгоритм заключается в использовании measurePath и объектного аниматора с двумя анимациями.

...