如何在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) == 0
和 mycurve.transform(1) == 1
你几乎可以做任何事情。
正如@Remi 所说,您可以使用 Curve
class 并覆盖转换方法。
困难的部分是找出要使用的公式。我会玩弄这样的东西 curve calculator 来得到一个公式。
即-(e^(-x/a) * cos(xw)) + 1
与 a = 0.15
和 w = 19.4
。
另一种方法是一起使用现有曲线 - 因为它们都从 0 开始并在 1 结束,所以您可以在重载曲线方法中简单地将两条不同的曲线相乘。
我会看一下 ElasticIn 和 ElasticOut 的实现,看看它们是如何计算的,但 dart 数学库应该有你需要的一切。
我正在尝试制作令人愉悦的 "spring" 效果来缩放按钮和其他组件。特别是我想在创建和显示视图时缩小它们,我想在用户点击按钮时缩小它们,如果用户释放按钮,我希望它们缩小到正常大小spring效果。
Facebook 库 "rebound" 是一个完美的例子,请在此处查看他们的演示:https://facebook.github.io/rebound/。
我尝试了所有内置曲线,如 bounceIn/Out 和 elasticIn/Out,但它们 springy 不够(弹性有点 springy)。
非常感谢任何帮助!
您可以通过覆盖 transform
创建自己的 Curve
。
只要 mycurve.transform(0) == 0
和 mycurve.transform(1) == 1
你几乎可以做任何事情。
正如@Remi 所说,您可以使用 Curve
class 并覆盖转换方法。
困难的部分是找出要使用的公式。我会玩弄这样的东西 curve calculator 来得到一个公式。
即-(e^(-x/a) * cos(xw)) + 1
与 a = 0.15
和 w = 19.4
。
另一种方法是一起使用现有曲线 - 因为它们都从 0 开始并在 1 结束,所以您可以在重载曲线方法中简单地将两条不同的曲线相乘。
我会看一下 ElasticIn 和 ElasticOut 的实现,看看它们是如何计算的,但 dart 数学库应该有你需要的一切。