React-Native項(xiàng)目搭建

1.項(xiàng)目結(jié)構(gòu)

代碼結(jié)構(gòu)

project.png

index.android.js和index.ios.js引用共有的控件為入口

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View
} from 'react-native';

import HomePage from "./js/pages/HomePage";
import NavigationBar from "./js/component/NavigationBar";

export default class rn_project extends Component {
  render() {
    return (
      <View style={styles.container}>
        <HomePage/>
      </View>
    );
  }
}

const styles = StyleSheet.create({
    container: {
        flex: 1
    }
});

AppRegistry.registerComponent('rn_project', () => rn_project);

2.引用的第三方庫(kù)

1.狀態(tài)欄

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

2.導(dǎo)航欄
http://blog.csdn.net/jing85432373/article/details/54342756

npm install react-native-scrollable-tab-view --save

3.自定義RefreshControll
http://www.reibang.com/p/9a4151852722

4.navigator 頁(yè)面跳轉(zhuǎn)
http://blog.csdn.net/huaheshangxo/article/details/50926946

5.復(fù)選框react-native-check-box

npm i react-native-check-box --save
import CheckBox from 'react-native-check-box'

6.Toast
https://github.com/crazycodeboy/react-native-easy-toast

npm i react-native-easy-toast --save
import Toast, {DURATION} from 'react-native-easy-toast'

7.可排序的listview
https://github.com/deanmcpherson/react-native-sortable-listview

npm install react-native-sortable-listview --save

備注:
--save會(huì)在package.json中會(huì)告訴依賴的項(xiàng)目

3.狀態(tài)欄StatusBar

頂部導(dǎo)航欄例子:

import React, {Component} from 'react';
import {
    AppRegistry,
    StyleSheet,
    Text,
    View,
    Image,
    StatusBar,
    Platform,
    TouchableOpacity
} from 'react-native';

//會(huì)包含狀態(tài)欄鹅巍,還有頂部導(dǎo)航欄
export default class NavigationBar extends Component{
    render(){
        return <View style={styles.container}>
            <View style={styles.statusBar}>
                <StatusBar hidden={false} barStyle="light-content"/>
            </View>
            {/*頂部導(dǎo)航欄*/}
            <View style={styles.navBar}>
                <View style={styles.navBtn}></View>
                <View style={styles.titleWrapper}>
                    <Text style={styles.title}>熱門</Text>
                </View>
                <View style={styles.rightBtn}>
                    <TouchableOpacity
                        activeOpacity={0.7}>
                        <Image source={require('../../res/images/ic_search_white_48pt.png')} style={styles.navBtn}/>
                    </TouchableOpacity>

                    <TouchableOpacity
                        activeOpacity={0.7}>
                        <Image source={require('../../res/images/ic_more_vert_white_48pt.png')} style={styles.navBtn}/>
                    </TouchableOpacity>
                </View>
            </View>
        </View>;
    }
}

const styles = StyleSheet.create({
    container: {
        backgroundColor:'#63B8FF',
        padding:5
    },
    statusBar:{
        height:Platform.OS === 'ios' ? 20 : 0
    },
    navBar:{
        flexDirection:'row',
        justifyContent:'space-between',
        alignItems:'center'
    },
    titleWrapper:{
        flexDirection:'column',
        justifyContent:'center',
        alignItems:'center',
        position:'absolute',
        left:40,
        right:40,
        bottom:0
    },
    title:{
        fontSize:16,
        color:'#FFF'
    },
    navBtn:{
        width:24,
        height:24
    },
    rightBtn:{
        flexDirection:'row',
        alignItems:'center',
        paddingRight:8
    }
});

4.搭建首頁(yè)的框架

1.HomePage
2.導(dǎo)入TabNavigator
3.安裝開(kāi)發(fā)手冊(cè)編寫tabnavigator的底部導(dǎo)航欄

import React, {Component} from 'react';
import {
    AppRegistry,
    StyleSheet,
    Text,
    View,
    Image
} from 'react-native';

import TabNavigator from 'react-native-tab-navigator'
import PopularPage from './PopularPage'

export default class HomePage extends Component {
    constructor(props) {
        super(props);
        this.state = {
            selectedTab: 'popular', //默認(rèn)選中的選項(xiàng)卡
        };
    }

    render() {
        return <View style={styles.container}>
            <TabNavigator>
                <TabNavigator.Item
                    selected={this.state.selectedTab === 'popular'}
                    title="最熱"
                    selectedTitleStyle={{color: '#63B8FF'}}
                    renderIcon={() =>
                        <Image style={styles.icon} source={require('../../res/images/ic_popular.png')}/>}
                    renderSelectedIcon={() =>
                        <Image style={[styles.icon,{tintColor:'#63B8FF'}]} source={require('../../res/images/ic_popular.png')}/>}
                    onPress={() => this.setState({selectedTab: 'popular'})}
                >
                    {/*選項(xiàng)卡對(duì)應(yīng)的頁(yè)面*/}
                    <PopularPage/>
                </TabNavigator.Item>

                <TabNavigator.Item
                    selected={this.state.selectedTab === 'trending'}
                    title="趨勢(shì)"
                    selectedTitleStyle={{color: '#63B8FF'}}
                    renderIcon={() =>
                        <Image style={styles.icon} source={require('../../res/images/ic_trending.png')}/>}
                    renderSelectedIcon={() =>
                        <Image style={[styles.icon,{tintColor:'#63B8FF'}]} source={require('../../res/images/ic_trending.png')}/>}
                    onPress={() => this.setState({selectedTab: 'trending'})}
                >
                    <View style={{backgroundColor:'#0F0',flex:1}}></View>
                </TabNavigator.Item>

                <TabNavigator.Item
                    selected={this.state.selectedTab === 'favorite'}
                    title="收藏"
                    selectedTitleStyle={{color: '#63B8FF'}}
                    renderIcon={() =>
                        <Image style={styles.icon} source={require('../../res/images/ic_favorite.png')}/>}
                    renderSelectedIcon={() =>
                        <Image style={[styles.icon,{tintColor:'#63B8FF'}]} source={require('../../res/images/ic_favorite.png')}/>}
                    onPress={() => this.setState({selectedTab: 'favorite'})}
                >
                    <View style={{backgroundColor:'#0F0',flex:1}}></View>
                </TabNavigator.Item>

                <TabNavigator.Item
                    selected={this.state.selectedTab === 'my'}
                    title="我的"
                    selectedTitleStyle={{color: '#63B8FF'}}
                    renderIcon={() =>
                        <Image style={styles.icon} source={require('../../res/images/ic_my.png')}/>}
                    renderSelectedIcon={() =>
                        <Image style={[styles.icon,{tintColor:'#63B8FF'}]} source={require('../../res/images/ic_my.png')}/>}
                    onPress={() => this.setState({selectedTab: 'my'})}
                >
                    <View style={{backgroundColor:'#00F',flex:1}}></View>
                </TabNavigator.Item>
            </TabNavigator>
        </View>;
    }
}

const styles = StyleSheet.create({
    container: {
        flex: 1
    },
    icon: {
        width: 26,
        height: 26
    }
});

備注:tintColor:圖片和文字保持一樣的顏色
4.編寫其中一個(gè)頁(yè)面PopularPage:
使用scrollable-tab

import React, {Component} from 'react';
import {
    AppRegistry,
    StyleSheet,
    Text,
    View,
    Image
} from 'react-native';

import NavigationBar from "../component/NavigationBar"
import ScrollableTabView from "react-native-scrollable-tab-view"

//"最熱"是包含在掖桦,HomePage頁(yè)面
//"最熱"頁(yè)面包含村缸,NavigationBar

export default class PopularPage extends Component{
    render(){
        return <View style={styles.container}>
            <NavigationBar/>
            <ScrollableTabView
                tabBarBackgroundColor="#63B8FF"
                tabBarActiveTextColor="#FFF"
                tabBarInactiveTextColor="#F5FFFA"
                tabBarUnderlineStyle={{backgroundColor:"#E7E7E7",height:2}}>
                <Text tabLabel='IOS'/>
                <Text tabLabel='Android'/>
                <Text tabLabel='Java'/>
                <Text tabLabel='JavaScript'/>
            </ScrollableTabView>
        </View>;
    }
}

const styles = StyleSheet.create({
    container: {
        flex:1
    }
});
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末擅憔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子倍阐,更是在濱河造成了極大的恐慌概疆,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件峰搪,死亡現(xiàn)場(chǎng)離奇詭異岔冀,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)罢艾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門楣颠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人咐蚯,你說(shuō)我怎么就攤上這事童漩。” “怎么了春锋?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵矫膨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我期奔,道長(zhǎng)侧馅,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任呐萌,我火速辦了婚禮馁痴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肺孤。我一直安慰自己罗晕,他們只是感情好济欢,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著小渊,像睡著了一般法褥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上酬屉,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天半等,我揣著相機(jī)與錄音,去河邊找鬼呐萨。 笑死杀饵,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谬擦。 我是一名探鬼主播凹髓,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼怯屉!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起饵沧,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤锨络,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后狼牺,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體羡儿,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年是钥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了掠归。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡悄泥,死狀恐怖虏冻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情弹囚,我是刑警寧澤厨相,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站鸥鹉,受9級(jí)特大地震影響蛮穿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜毁渗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一践磅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧灸异,春花似錦府适、人聲如沸羔飞。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)褥傍。三九已至,卻和暖如春喇聊,著一層夾襖步出監(jiān)牢的瞬間恍风,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工誓篱, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留朋贬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓窜骄,卻偏偏與公主長(zhǎng)得像锦募,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子邻遏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容