React native 如何以高性能的方式在React Native中实现半手动、半自动动画?

React native 如何以高性能的方式在React Native中实现半手动、半自动动画?,react-native,animation,React Native,Animation,我需要在React Native中创建一个动画,最好描述如下: 用户抓取某个UI项并将其从原始位置拖动 当用户移动它时,也会有一些旋转,UI项会根据其在XY平面上的运动绕Z轴旋转 当用户释放该项目时,其位置和旋转都会设置动画,使其恢复到原始值(“发射并忘记”动画) 这类似于“下拉刷新”UI小部件。当用户向下拉动时,我们将加载轮的Y平移和旋转与触摸运动相耦合,当用户松开时,会出现一个没有用户控制的火灾和遗忘动画 我如何以高效的方式实现这一点? 我在想这样的事情: 我们将用户的运动存储在组件的状

我需要在React Native中创建一个动画,最好描述如下:

  • 用户抓取某个UI项并将其从原始位置拖动
  • 当用户移动它时,也会有一些旋转,UI项会根据其在XY平面上的运动绕Z轴旋转
  • 当用户释放该项目时,其位置和旋转都会设置动画,使其恢复到原始值(“发射并忘记”动画)
这类似于“下拉刷新”UI小部件。当用户向下拉动时,我们将加载轮的Y平移和旋转与触摸运动相耦合,当用户松开时,会出现一个没有用户控制的火灾和遗忘动画

我如何以高效的方式实现这一点?

我在想这样的事情:

  • 我们将用户的运动存储在组件的状态中。触摸的每一个动作都会重新呈现UI(不确定是否有性能)
  • 当用户释放触摸时,我们使用
    Animated.timing
    生成fire and forget动画
  • 由于2的原因,状态中的值需要是
    动画.value
    实例。我不确定我是不是。可以使用
    动画.Value
    作为状态,以性能方式实现。

    答案是(当然):使用
    反应本地重新激活
    。使用此库,您可以对本机动画及其与手势的交互进行完整的声明式控制

    这是一个示例应用程序,其中包含我正在寻找的内容:

    是源代码。

    答案是(当然):使用
    react native reanimated
    。使用此库,您可以对本机动画及其与手势的交互进行完整的声明式控制

    这是一个示例应用程序,其中包含我正在寻找的内容:

    是源代码