如何在Flutter中制作"Springy curve"按钮缩放效果?

How to make a "Springy curve" in Flutter for a button scale effect?

我正在尝试制作令人愉悦的 "spring" 效果来缩放按钮和其他组件。特别是我想在创建和显示视图时缩小它们,我想在用户点击按钮时缩小它们,如果用户释放按钮,我希望它们缩小到正常大小spring效果。

Facebook 库 "rebound" 是一个完美的例子,请在此处查看他们的演示:https://facebook.github.io/rebound/

我尝试了所有内置曲线,如 bounceIn/Out 和 elasticIn/Out,但它们 springy 不够(弹性有点 springy)。

非常感谢任何帮助!

您可以通过覆盖 transform 创建自己的 Curve

只要 mycurve.transform(0) == 0mycurve.transform(1) == 1 你几乎可以做任何事情。

正如@Remi 所说,您可以使用 Curve class 并覆盖转换方法。

困难的部分是找出要使用的公式。我会玩弄这样的东西 curve calculator 来得到一个公式。

-(e^(-x/a) * cos(xw)) + 1a = 0.15w = 19.4

另一种方法是一起使用现有曲线 - 因为它们都从 0 开始并在 1 结束,所以您可以在重载曲线方法中简单地将两条不同的曲线相乘。

我会看一下 ElasticIn 和 ElasticOut 的实现,看看它们是如何计算的,但 dart 数学库应该有你需要的一切。