美文网首页
RN学习-引导页

RN学习-引导页

作者: 马戏团小丑 | 来源:发表于2017-10-20 15:42 被阅读19次

Guide.js

/**
 * @providesModule Guide
 */
import React, {Component} from 'react'

// 2.导入常用组件,注册组件,样式组件,View组件,Text组件
import
{
    AppRegistry,
    StyleSheet,
    Text,
    View,
    Image

}from 'react-native'

import Swiper from 'react-native-swiper';

import Common from 'Common'

import CommonHighButton from 'CommonHighButton'

import Main from 'Main'


// 3.自定义 程序入口组件([[UIView alloc] init])
// Swiper:使用注意点,不需要设置样式,否则显示不了
export default class Guide extends Component {

    render(){
        return (

            <Swiper loop={false}
                    activeDotColor="black"
            >
                <Image source={{uri:'slider1'}} style={{width:Common.screenW,height:Common.screenH}}/>
                <View style={{alignItems:'center'}}>
                    <Image source={{uri:'slider2'}} style={{width:Common.screenW,height:Common.screenH}}/>
                    <CommonHighButton title='立即体验'
                                      buttonStyle={styles.buttonStyle}
                                      titleStyle={{color:'red',fontSize:17}}
                                      onPress={()=>{
                                          // 自动把navigator传递给下一个组件
                                          this.props.navigator.replace({
                                              component:Main
                                          })
                                      }}
                    />
                </View>


            </Swiper>
        )

    }

}
// 4.样式表 组件外观 尺寸,颜色
var styles = StyleSheet.create({
    viewStyle:{
        flex:1,
        justifyContent:'center',
        alignItems:'center'
    },
    buttonStyle:{
        position:'absolute',
        bottom:60,
        width:150,
        height:40,
        borderWidth:1,
        borderColor:'red',
        borderRadius:6
    }
})

知识点

  • 轮播图第三方组件-react-native-swiper

安装:npm install react-native-swiper --save

  • 加载本地图片
    <Image source={{uri:'slider1'}}
  • 自定义可以设置高亮效果的按钮CommonHighButton.js
/**
 * @providesModule CommonHighButton

 */
import React, {Component,PropTypes} from 'react'

// 2.导入常用组件,注册组件,样式组件,View组件,Text组件
import
{
    AppRegistry,
    StyleSheet,
    Text,
    View,
    Dimensions,
    Platform,
    TouchableOpacity,
    Image,
}from 'react-native'

var screenW = Dimensions.get('window').width;


// 3.自定义 程序入口组件([[UIView alloc] init])
export default class CommonHighButton extends Component {

    static propTypes = {
        // 正常
        // 标题
        title:PropTypes.string,

        // 图片
        image:PropTypes.string,

        // 样式
        imageStyle:PropTypes.oneOfType([PropTypes.object,PropTypes.number]),
        titleStyle:PropTypes.oneOfType([PropTypes.object,PropTypes.number]),
        buttonStyle:PropTypes.oneOfType([PropTypes.object,PropTypes.number]),
        highlightedTitleStyle:PropTypes.oneOfType([PropTypes.object,PropTypes.number]),

        // 高亮
        highlightedImage:PropTypes.string,

        // 监听事件
        onPress:PropTypes.func
    };

    constructor(props){
        super(props);

        this.state = {
            highlighted:false
        }
    }

    render(){
        return (
            <TouchableOpacity style={[styles.buttonStyle,this.props.buttonStyle]}
                              onPressIn={()=>{
                                  this.setState({
                                      highlighted:true
                                  })
                                  if (this.props.onPress){
                                      this.props.onPress(this);
                                  }
                              }}
                              onPressOut={()=>{
                                  this.setState({
                                      highlighted:false
                                  })
                              }}
                              activeOpacity={this.props.highlightedImage?1:0.5}
            >

                {/*标题*/}
                {this.props.title?<Text style={this.state.highlighted && this.props.highlightedTitleStyle?this.props.highlightedTitleStyle:this.props.titleStyle}>{this.props.title}</Text>:null}

                {/*图片*/}
                {this.props.image?<Image source={{uri:this.state.highlighted && this.props.highlightedImage?this.props.highlightedImage : this.props.image}} style={[{marginLeft:3},this.props.imageStyle]}/>:null}

            </TouchableOpacity>
        )
    }
}

// 4.样式表 组件外观 尺寸,颜色
var styles = StyleSheet.create({
    buttonStyle:{
        flexDirection:'row',
        justifyContent:'center',
        alignItems:'center'
    }
});

知识点

  • State

如果以后想修改某个属性,就需要用state
定义属性

this.state = {
            highlighted:false
 }

修改属性

this.setState({
        highlighted:true
}
  • PropTypes

在自定义组件的时候,通常需要暴露属性出去,并且设置属性类型,外界在使用自定义属性的时候,就自动有提示属性功能
注意:PropTypes必须要用static声明,否则无效果。

  • TouchableOpacity 点击事件

http://reactnative.cn/docs/0.31/touchableopacity.html

  • @providesModule,用于头文件的便捷导入,省略路径

用于该文件的最上面,第一行注释形式

// 以前
// import CommonHighButton from './../Button/CommonHighButton'

// 现在可以直接用类名
import CommonHighButton from 'CommonHighButton'

相关文章

  • RN学习-引导页

    Guide.js 知识点 轮播图第三方组件-react-native-swiper 安装:npm install ...

  • RN制作新手引导页(移动端)

    本文是为移动端app制作一个新手引导页 目录一、需求二、思路三、具体实施四、注意点五、拓展 一、需求 1、项目要求...

  • 引导页

    // // ViewController.m // 引导页_课堂练习 // // Created by 张羽婷 o...

  • 引导页

    引导页是用户第一次使用app时,引导用户使用的页面,这个界面通常加载到进入界面的上面。我这个引导页是一个View,...

  • 引导页

    AppDelegate.m #import "AppDelegate.h" #import "ViewContro...

  • 引导页

    判断版本号 引导页界面 点击方法

  • 引导页

    引导页 引导页是在程序第一次安装的时候呈现出来的画面. 新建一个.pch.用于做程序中的声明.声明这几个变量 在 ...

  • 引导页

    sharedPreferences = getSharedPreferences("ues", MODE_PRIV...

  • 引导页

    引导页设计 一般不会超过5页。作用:让用户了解产品价值和功能,引导用户更快进入使用环境。 按照功能分类: 1.功能...

  • 引导页

    第一种方法: 通过点击按键的方式进入应用### 该方法需要两个视图控制器,一个用来创建引导页的滚动视图,另一个创建...

网友评论

      本文标题:RN学习-引导页

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