React NativeReact Native开发圈转载的~react native

React Native 动画animated初探

2016-12-15  本文已影响263人  forrest23

本示例使用Animated.spring() 方法创建了一个缩放scale、X轴移动translateX和旋转rotate的动画效果。

定义动画初始值

 constructor(props) {
        super(props);
        this.state = {
            anim: new Animated.Value(0),
        };
    }

开始动画

使用Animated.spring方法将初始值从0变成1,并设置velocity初始速度,tension弹跳的速度值,friction摩擦力值,设置这三个值的不同组合会有不同的效果。

Animated.spring() -- 产生一个基于 Rebound 和 Origami 实现的Spring动画。它会在 toValue 值更新的同时跟踪当前的速度状态,以确保动画连贯。

 componentDidMount() {
        Animated.spring(this.state.anim, {
            toValue: 1,
            velocity: 6, //初始速度
            tension: -20, //弹跳的速度值
            friction: 3, //摩擦力值
        }).start();
    }

定义Animated.View

这里定义了三个动作scale、translateX、rotate,这三个动作使用transform顺序执行。interpolate方法的inputRangeoutputRange定义了值的映射。

<Animated.View
                    style={[styles.content, {
                        transform: [
                            {
                                scale: this.state.anim.interpolate({
                                    inputRange: [0, 1],
                                    outputRange: [0.5, 1],
                                })
                            },
                            {
                                translateX: this.state.anim.interpolate({
                                    inputRange: [0, 1],
                                    outputRange: [300, 0],
                                })
                            },
                            {
                                rotate: this.state.anim.interpolate({
                                    inputRange: [0, 1],
                                    outputRange: [
                                        '0deg', '720deg'
                                    ],
                                })
                            },
                        ]
                    }
                    ]}>
                    <Image source={require('../imgs/logo.jpg')} style={{ width: 50, height: 50 }} />
                </Animated.View>

总结

这样就定义了一个简单的动画,完整代码见: github
如果需要详细了解动画,可以参考这篇文章,写的佷详细。 React Native动画

传送门

微信公众号:ReactNative开发圈

image.png
上一篇下一篇

猜你喜欢

热点阅读