React Native 动画

17 Mar 2025 | 4 分钟阅读

React Native 动画在应用程序中提供额外的效果和良好的用户体验。动画在界面中传递物理上可信的运动。

React Native 中有两种互补的动画系统。 它们是

  • Animated: Animated API 用于交互式控制特定值。 它侧重于输入和输出之间的声明性关系。 它具有 startstop 方法来控制基于时间的动画执行。
  • Animated 导出四个不同的动画组件,分别是 View、Text、ImageScrollView。 我们也可以使用 Animated.createAnimatedComponent() 创建我们自己的动画组件。

  • LayoutAnimated: LayoutAnimated 用于动画全局布局事务。
  • 动画方法

    方法描述
    Animated.timing()它使用各种缓动曲线或通过使用自己的函数来随着时间的推移对值进行动画处理。
    Animated.event()它将事件直接映射到动画值。
    Animated.spring()它对值进行动画处理。它跟踪状态的速度以创建流畅的运动,因为 toValue 会更新。
    Animated.decay()它以初始速度启动动画,然后逐渐减慢直至停止。

    React Native 动画示例 1 (Animated.timing())

    在此示例中,我们将使用 Animated.timing() 在图像上创建旋转动画。

    App.js

    interpolate() 方法调用任何 Animated.Value。 它在更新属性之前对值进行插值。 在上面的示例中,我们将 0(零)度映射到 360 度。

    我们传递一个 inputRange [0,1] 并获得 outputRange['0deg', '360deg'] 数组。

    输出

    React Native Animation

    React Native 动画示例 2 (Animated.timing())

    在此示例中,我们声明一个单一的动画值 this.aninatedValue 并将其与插值一起使用以创建多个动画,例如:marginLeft、opacity、fontSize 和 rotate。 我们将插入这些属性以进行样式设置,例如不透明度、边距、文本大小和旋转属性。

    App.js

    输出

    React Native Animation

    LayoutAnimation API

    LayoutAnimation 允许全局配置、创建和更新动画。 这将用于下一个渲染/布局周期中的所有视图。

    LayoutAnimation 非常有用,但它对动画的控制远不如 Animated 和其他动画库。

    要在 Android 中使用此 API,我们需要通过 UIManager 设置以下标志

    React Native LayoutAnimation 示例

    在此示例中,我们创建一个 TouchableOpacity 和一个 View 组件。 按下 TouchableOpacity 组件会调用 _onPress() 方法,并通过将 View 的宽度和高度增加 15 个单位来动画 View 组件。

    输出

    React Native Animation React Native Animation
    下一个主题React Native 图像