美文网首页
React Native学习之引导页(五)

React Native学习之引导页(五)

作者: dhhuanghui | 来源:发表于2018-04-23 09:06 被阅读487次

    1、引导页是用来介绍一款应用的一些特色功能,以及一些重大更新,在Android中一般使用ViewPager来实现,iOS中可以通过ScrollView来实现,下面总结下RN中的实现方法。
    2、上一篇说到启动页,里面有一段代码:

    if (isFirst !== "1") {
                        storage.save({
                            key: 'user',
                            rawData: {
                                isFirst: "1",
                            },
                            // 设为null,则不过期,这里会覆盖初始化的时效
                            expires: null
                        });
                        this.props.nav.resetTo({
                            component: GuideComponent,
                        });
                    } else {
                        this.props.nav.resetTo({
                            component: Main,
                        });
                    }
    

    这里的GuideComponent就是一个引导页的组件。
    3、这里我使用的是github上的开源库来实现,github地址是:
    React-Native-ViewPager,具体用法可以看它的demo
    4、下面看代码:

    import React, {Component} from "react";
    import {
        AppRegistry,
        StyleSheet,
        Text,
        View,
        Image,
        TouchableOpacity
    } from 'react-native';
    import IndicatorViewPager from "../viewpager1/IndicatorViewPager";
    import PagerDotIndicator from "../viewpager1/indicator/PagerDotIndicator";
    import Main from "./Main";
    
    export default class GuideComponent extends Component {
        _renderIndicator() {
            return (
                <PagerDotIndicator
                    pageCount={4}
                    style={{bottom: 10}}
                    dotStyle={{backgroundColor: '#ffffff'}}
                    selectedDotStyle={{backgroundColor: 'red'}}
                />
            )
        }
    
        render() {
            return (
                <IndicatorViewPager
                    style={{width: '100%', height: '100%'}}
                    indicator={this._renderIndicator()}
                    horizontalScroll={true}
                    onPageSelected={(p) => console.log(p)}
                >
                    <View>
                        <Image style={{
                            width: '100%', height: '100%', resizeMode: Image.resizeMode.stretch
                        }}
                               source={require('../images/guide_1.png')}>
                        </Image>
                    </View>
                    <View>
                        <Image style={{width: '100%', height: '100%', resizeMode: Image.resizeMode.stretch}}
                               source={require('../images/guide_2.png')}/>
                    </View>
                    <View>
                        <Image style={{width: '100%', height: '100%', resizeMode: Image.resizeMode.stretch}}
                               source={require('../images/guide_3.png')}/>
                    </View>
                    <View>
                        <Image style={{
                            width: '100%', height: '100%',
                            resizeMode: Image.resizeMode.stretch,
                            justifyContent: 'flex-end',
                            alignItems: 'center',
                        }}
                               source={require('../images/guide_4.png')}>
                            <TouchableOpacity
                                style={styles.btn}
                                onPress={() => {
                                    this.props.nav.resetTo({
                                        component: Main,
                                    });
                                }}
                            >
                                <Text style={styles.btnText}>立即体验</Text>
                            </TouchableOpacity>
                        </Image>
                    </View>
                </IndicatorViewPager>
            )
        }
    }
    const styles = StyleSheet.create({
        btn: {
            width: 150,
            height: 40,
            backgroundColor: '#1296db',
            borderRadius: 8,
            justifyContent: 'center',
            alignItems: 'center',
            marginBottom: 50
    
        },
        btnText: {
            fontSize: 18,
            color: '#fff'
        },
    });
    
    AppRegistry.registerComponent("Guide", () => GuideComponent);
    

    这些代码应该都很好理解,我这里是有把这个viewpager库单独提取出来放到项目中,没有通过yarn add来添加,因为我后面一些功能需要修改到这个库里面的源码。

    相关文章

      网友评论

          本文标题:React Native学习之引导页(五)

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