1-ReactNative开发-:仿携程APP

1.新建XieCheng项目

在window的控制台执行下面命令( 前提是已经搭建好reactnative的开发环境 ):

react-native init XieCheng  // XieCheng 是项目名称

2.打开新的项目

这里使用webStrom打开项目

3.运行项目

1.先在电脑上启动模拟器

下面使用5.0的模拟器

2.检查adb是否连接上模拟器

在使用adb前要配好android的开发环境变量

3.开始包服务

在控制台进入到项目的根目录执行:

react-native start 

4.运行XieCheng项目

react-native run-android

执行后的效果:

4.搭建项目的框架

1.搭建项目结构

每一个模块对应一个目录,分别存放各自组件

新建一个MainPage组件作为应用的主页页面

2.设计主页面

MainPage作为主页面,修改index.android.jsindex.ios.js文件

执行效果:

5.搭建底部的导航栏

1.导入TabNavigator库

TabNavigator Github地址

在控制台进入到项目的根目录下执行下面命令:

npm install react-native-tab-navigator --save

如果报错请执行多次

3.在MainPage中引入该组件

4.底部导航条添加Item

1.引入图片资源存放在image目录

2.添加TabNavigator.Item,导航栏对应的每一个Item

设置选中renderSelectedIcon以及默认renderIconItem对应的样式以及对应图片

执行的效果:

5.默认选中首页

初始化state(状态机)中的 selected的值为‘首页’,通过TabNavigator.Item中的属性selected 进行判断,是否选中当前item。

6.底部的Item之间的切换

编写其它TabNavigator其它Item,同上。

完整MainPage.js的代码

/**
 * Created by Administrator on 2017/8/8 0008.
 */
import React, { Component } from 'react';
import {
    AppRegistry,
    StyleSheet,
    Text,
    View,
    Image
} from 'react-native';
//引入TabNavigator库
import  TabNavigator from 'react-native-tab-navigator';

/**
 * 1.定义一个MainPage组件,并导出
 */
export  default  class MainPage extends  Component {

    /**
     * 状态机
     * @type {{}}
     */
    state={
        selected:'首页'
    }


    /**
     * 2.渲染组件的页面
     * @returns {XML}
     */
    render(){
        return (
            <TabNavigator
                tabBarStyle={{backgroundColor:'#e1e1e1',height:50}}
            >
                {/*首页*/}
                <TabNavigator.Item
                    renderIcon={ ()=> <Image style={styles.imageStyle}
                                        source={require('../../image/home_icon_nornol.png')}></Image>}
                    title="首页"

                    selected={this.state.selected=='首页'}
                    renderSelectedIcon={ ()=> <Image style={styles.imageStyle}
                                        source={require('../../image/home_icon_press.png')}></Image>}

                    onPress={ ()=> this.setState({
                        selected:'首页'
                    }) }
                >
                    <Text>home</Text>
                </TabNavigator.Item>

                {/*行程*/}
                <TabNavigator.Item
                    renderIcon={ ()=> <Image style={styles.imageStyle}
                                        source={require('../../image/plan_icon_nornol.png')}></Image>}
                    title="行程"

                    selected={this.state.selected=='行程'}
                    renderSelectedIcon={ ()=> <Image style={styles.imageStyle}
                                        source={require('../../image/plan_icon_press.png')}></Image>}

                    onPress={ ()=> this.setState({
                        selected:'行程'
                    }) }

                >
                    <Text>plan</Text>

                </TabNavigator.Item>

                {/*客服*/}
                <TabNavigator.Item
                    renderIcon={ ()=> <Image style={styles.imageStyle}
                                        source={require('../../image/customer_icon_nornol.png')}></Image>}
                    title="客服"

                    selected={this.state.selected=='客服'}
                    renderSelectedIcon={ ()=> <Image style={styles.imageStyle}
                                        source={require('../../image/customer_icon_press.png')}></Image>}

                    onPress={ ()=> this.setState({
                        selected:'客服'
                    }) }
                >
                    <Text>customer</Text>
                </TabNavigator.Item>
                {/*我的*/}
                <TabNavigator.Item
                    renderIcon={ ()=> <Image style={styles.imageStyle}
                                        source={require('../../image/mine_icon_nornol.png')}></Image>}
                    title="我的"

                    selected={this.state.selected=='我的'}
                    renderSelectedIcon={ ()=> <Image style={styles.imageStyle}
                                        source={require('../../image/mine_icon_press.png')}></Image>}

                    onPress={ ()=> this.setState({
                        selected:'我的'
                    }) }
                >
                    <Text>mine</Text>

                </TabNavigator.Item>

            </TabNavigator>
        )
    }
}
/**
 * 3.页面的样式
 */
const  styles=StyleSheet.create({
    imageStyle:{
        width:24,
        height:24,
        marginTop:2,
    }
})

执行效果:

6.搭建首页的顶部导航栏

1.新建首页HomePage组件

点击首页Item时对应的页面。

2.引用首页HomePage组件

回到MainPage组件,在首页这个TabNavigator.Item中,用上面编写HomePage组件替代Text

执行效果:

3.新建一个HomeTopBar组件

编写首页页面顶部搜索框组件

4.引用HomeTopBar组件

在HomePage组件中引入HomeTopBar组件(顶部搜索框)

5.完善HomeTopBar布局

1.通过权重布局

组件摆放位置

对应的样式:使用flexDirection规定组件摆放方向,使用flex属性定义每个组件的权重。

2.左边布局

摆放Image组件,引入对应图片

3.右边布局

也是摆放Image组件,引入对应图片

4.中间布局

使用输入框TextInput组件和Image组件

1.修改背景:设置背景颜色,圆角矩形以及宽和高

2.添加输入框TextInput

对应的样式:设置间距,设置左间距30是等下为了摆放图片

3.添加搜索图标(Image

对应的样式:通过设置绝对定位(absolute)的方式,定位图片摆放位置

小码哥HTML5培训——持续更新中.............

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,569评论 25 707
  • 文章最后附上源码地址 实现首页剩下的内容 要实现余下内容效果如下: 这里将分为三部分去写,也就是说我们这里将分成三...
    小码哥教育520it阅读 717评论 0 1
  • 出售时间的铁律二:重视价值,忽略估值。不要让自己的估值过分超过自己的实际价值,只有这样,我们才会真正的有尊严!...
    梁荣霞阅读 161评论 0 0
  • 这是一个高中生找我代写的作文,他们老师要求看到工人除草的事情写一篇作文,600字,我模仿了初中时看的林清玄的文章,...
    无情公子L阅读 454评论 0 1
  • 前一段时间运动的节奏强度都不是我喜欢的所以很难坚持 我喜欢7那种模式,我喜欢cf那种模式,我喜欢散步,不喜欢健身房模式
    把书读完阅读 108评论 0 0