Android - 如何为路径上的颜色变化设置动画

Android - how to animate color change along a path

我创建了这样一条弯曲的路径:

 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()
        }

似乎它不适用于路径。鉴于我已经创建了弯曲路径,我如何才能实现这种效果?

更新:这是我现在尝试过的:

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

我这样称呼它:

backgroundColor(Color.RED)

我也收到了这个 lint 警告:

但没有任何反应。

我想出了一个方法来做到这一点...该算法是使用 measuredPath 和一个带有两个动画的对象动画师。