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 和一个带有两个动画的对象动画师。
我创建了这样一条弯曲的路径:
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 和一个带有两个动画的对象动画师。