美文网首页
react native 动画2 LayoutAnimation

react native 动画2 LayoutAnimation

作者: proud2008 | 来源:发表于2016-12-10 17:36 被阅读171次

    http://www.jianshu.com/p/3ce1d27fc246

    /**
     * Created by Administrator on 2016/12/10.
     */
    import React, { Component } from 'react';
    import {
        StyleSheet,
        Text,
        Image,
        LayoutAnimation,
        UIManager,
        View
    } from 'react-native';
    
    class AnimatedDemo2 extends Component {
        // 构造
        constructor(props) {
            super(props);
            this.state = {
                width: 100,
                height: 100
            };
        }
    
        _onPress1 = ()=> {
            this.setState(
                {
                    width: 100,
                    height: 100
                }
            );
            let count = 0;
            let self = this;
            while (++count < 50) {
                requestAnimationFrame(()=> {
                    self.setState({
                        width: this.state.width + 1,
                        height: this.state.height + 1
                    });
                });
            }
        }
        /*http://reactnative.cn/docs/0.20/direct-manipulation.html*/
        _onPress2 = ()=> {
            let count = 0;
            let self = this;
            while (++count < 50) {
                requestAnimationFrame(()=> {
                    self.refs.image.setNativeProps({
                        style: {
                            width: self.state.width++,
                            height: self.state.height++
                        }
                    });
                });
            }
        }
        _onPress3 = ()=> {
            LayoutAnimation.configureNext({
                    duration: 700, //持续时间
                    create: { // 视图创建
                        type: LayoutAnimation.Types.spring,
                        property: LayoutAnimation.Properties.scaleXY,// opacity、scaleXY
                    },
                    update: { // 视图更新
                        type: LayoutAnimation.Types.spring,
                    },
                },
                ()=>{Alert.alert("动画结束");} /*android上不执行*/
            );
            this.setState({width: this.state.width + 100, height: this.state.height + 100});
        }
    
        _onPress4 = ()=> {
            LayoutAnimation.spring();//相当于 LayoutAnimation.configureNext(LayoutAnimation.Presets.spring);
            this.setState({width: this.state.width + 100, height: this.state.height + 100});
        }
    
        render() {
            return (
                <View >
                    <Image
                        ref="image"
                        source={{uri: 'http://avatar.csdn.net/5/B/3/1_cryhelyxx.jpg'}}
                        style={{width:this.state.width,height:this.state.height}}
                        />
                    <Text style={styles.text} onPress={this._onPress1}>
                        requestAnimationFrame方式
                    </Text>
                    <Text style={styles.text} onPress={this._onPress2}>
                        setNativeProps方式
                    </Text>
                    <Text style={styles.text} onPress={this._onPress3}>
                        LayoutAnimation方式
                    </Text>
                    <Text style={styles.text} onPress={this._onPress4}>
                        LayoutAnimation2方式
                    </Text>
                </View>
            );
        }
    }
    
    const styles = StyleSheet.create({
        text: {
            fontSize: 20,
            textAlign: 'center',
            borderWidth: 1,
            borderColor: "blue",
            padding: 5,
            margin: 5,
        },
    });
    export default AnimatedDemo2;
    
    

    相关文章

      网友评论

          本文标题:react native 动画2 LayoutAnimation

          本文链接:https://www.haomeiwen.com/subject/kqlumttx.html