1.APP效果图

2.工程环境配置

IOS:

  • 将压缩包内的 Images.xcassets 文件夹直接替换掉我们iOS工程中的 Images.xcassets 文件夹。
  • 这时候我们可以看到所有图片资源已经成功导入到iOS工程中,接着我们点击工程文件进行一些必要的配置。
  • General —— App Icons and Launch Images —— 修改 Launch Images Source 为 Images.xcassets 文件夹内的 LaunchImage ,清除 Launch Screen File 内容。
  • General —— Deployment Info —— Device Orientation —— 只保留 Portrait 选项。
  • 打开 info.plist 文件,找到 Bundle name 选项,将其内容修改为 逛丢学习
  • 打开 info.plist 文件,找到 App Transport Security Settings 选项,给其添加 Allow Arbitrary Loads 选项并设置内容为 YES (如果使用 IPV6标准 可以忽略这一步)
  • OK,至此 iOS 端配置完毕。

Android:

  • 将压缩包内的 drawable-xxhdpi 文件夹复制粘贴到 GD/android/app/src/main/res/ 中。
  • 设置 APP图标 进入 GD/Android/app/src/main 打开 AndroidManifest 文件,修改 android:icon 项,如下:

<application>android:icon="@drawable/icon"
</application>

设置 APP名称 进入 GD/android/app/src/main/res/values/ 中,打开 strings.xml 文件,做如下修改:

<resources><string name="app_name">逛丢</string>
</resources>

3.主体框架搭建

创建Main.js, 通过此文件连接其他文件

index.android.js

/*** Android*/
import React, { Component } from 'react';
import {AppRegistry,
} from 'react-native';// 引入外部文件(主页面)
import Main from './app/main/GDMain';export default class GD extends Component {render() {return (<Main />);}
}AppRegistry.registerComponent('GD', () => GD);

index.ios.js

/*** IOS*/
import React, { Component } from 'react';
import {AppRegistry,
} from 'react-native';// 引入外部文件(主页面)
import Main from './app/main/GDMain';export default class GD extends Component {render() {return (<Main />);}
}AppRegistry.registerComponent('GD', () => GD);

// 下载第三方框架
$ npm install react-native-tab-navigator --save
$ npm install react-native-deprecated-custom-components --save

// 引用第三方框架
import TabNavigator from 'react-native-tab-navigator';import CustomerComponents, {Navigator
} from 'react-native-deprecated-custom-components';

Main.js

/*** 主页面* 通过此文件连接其他文件*/
import React, {Component
} from 'react';
import {StyleSheet,Text,View,Image,Platform
} from 'react-native';// tab组件(第三方框架)
import TabNavigator from 'react-native-tab-navigator';
// 导航器
import CustomerComponents, {Navigator
} from 'react-native-deprecated-custom-components';// 引入其他组件
import Home from '../home/GDHome';
import HT from '../ht/GDHt';
import HourList from '../hourList/GDHourList';export default class GD extends Component {// ES6// 构造constructor(props) {super(props);// 初始状态this.state = {selectedTab: 'home',};}// 返回TabBar的ItemrenderTabBarItem(title, selectedTab, image, selectedImage, component) {return (<TabNavigator.Itemselected={this.state.selectedTab === selectedTab}title={title}selectedTitleStyle={{color:'black'}}renderIcon={() => <Image source={{uri:image}} style={styles.tabbarIconStyle} />}renderSelectedIcon = {() => <Image source={{uri:selectedImage}} style={styles.tabbarIconStyle} />}onPress = {() => this.setState({selectedTab: selectedTab})}><Navigator// 设置路由initialRoute = {{name: selectedTab,component: component}}renderScene = {(route, navigator) => {let Component = route.component;return <Component {...route.params} navigator={navigator} />}} />    </TabNavigator.Item>);}render() {return (<TabNavigator>{ /* 首页 */ }{this.renderTabBarItem("首页", 'home', 'tabbar_home_30x30', 'tabbar_home_selected_30x30', Home)} { /* 海淘 */ } {this.renderTabBarItem("海淘", 'ht', 'tabbar_abroad_30x30', 'tabbar_abroad_selected_30x30', HT)}{ /* 小时风云榜 */ }{this.renderTabBarItem("小时风云榜", 'hourlist', 'tabbar_rank_30x30', 'tabbar_rank_selected_30x30', HourList)} </TabNavigator>);}
}const styles = StyleSheet.create({container: {flex: 1,justifyContent: 'center',alignItems: 'center',backgroundColor: '#F5FCFF',},tabbarIconStyle: {width: Platform.OS === 'ios' ? 30 : 25,height: Platform.OS === 'ios' ? 30 : 25,}
});

GDHome.js

/*** 首页*/
import React, { Component } from 'react';
import {StyleSheet,Text,View,Image,Platform
} from 'react-native';export default class GDHome extends Component {render() {return (<View style={styles.container}><Text>首页</Text></View>);}
}const styles = StyleSheet.create({container: {flex: 1,justifyContent: 'center',alignItems: 'center',backgroundColor: '#F5FCFF',},
});

GDHourList.js

/*** 小时风云榜*/
import React, { Component } from 'react';
import {StyleSheet,Text,View,Image,Platform
} from 'react-native';export default class GDHourList extends Component {render() {return (<View style={styles.container}><Text>小时风云榜</Text></View>);}
}const styles = StyleSheet.create({container: {flex: 1,justifyContent: 'center',alignItems: 'center',backgroundColor: '#F5FCFF',},
});

GDHt.js

/*** 海淘折扣*/
import React, {Component
} from 'react';
import {StyleSheet,Text,View,Image,Platform
} from 'react-native';export default class GDHt extends Component {render() {return (<View style={styles.container}><Text>海淘折扣</Text></View>);}
}const styles = StyleSheet.create({container: {flex: 1,justifyContent: 'center',alignItems: 'center',backgroundColor: '#F5FCFF',},
});

4.效果图

.

React-Native 之 GD (一)目录结构与第三方框架使用与主题框架搭建相关推荐

  1. React的Ant Design Pro目录结构

  2. 最火移动端跨平台方案盘点:React Native、weex、Flutter

    本文原文由"恋猫月亮"原创发布,原题为<移动端跨平台开发的深度解析>,本次重新整理后,为了优化阅读体验,内容略有改动,感谢原作者的无私分享. 1.前言 跨平台一直是老生 ...

  3. 【苹果家庭推iiMessage】React Native举行开发仍是iOS,用原生的代码实现类似webview的页面

    推荐内容IMESSGAE相关 作者推荐内容 iMessage苹果推软件 *** 点击即可查看作者要求内容信息 作者推荐内容 1.家庭推内容 *** 点击即可查看作者要求内容信息 作者推荐内容 2.相册 ...

  4. React Native调用Android接口

    由于工作需要近期研究了下React Native调用Android接口,该文章将介绍自己在RN环境搭建和封装第三方SDK接口以及RN调用Android接口的趟坑过程.(第一次写博客,写的不好请大家勿喷 ...

  5. React Native制作仿美团APP总结

    最近学习了一个网上的React Native项目,利用React Native制作一个类似于美团的App,项目属于对之前React Native常用组件的基本使用,但是仍有一些关键点值得记录.最后做成 ...

  6. 给所有开发者的React Native详细入门指南

    本文为 Marno 原创,转载必须保留出处! 公众号[ aMarno ],关注后回复 RN 加入交流群 React Native 优秀开源项目大全:http://www.marno.cn 建议先下载好 ...

  7. React Native之react-native bundle --platform android --dev false --entry-file index.js --bundle失败

    1 问题 react native项目在assert目录下面生成index.android.bundle文件用下面的命令 react-native bundle --platform android ...

  8. React Native应用实现步骤

    React Native应用实现步骤 在整个应用设计中,始终按照自下而上的原则进行.在大型的项目中,自下而上的设计方式简单,可以并行工作,并且可以在构建的同时写测试用例. React Native设计 ...

  9. ror 和 shr_使用RoR和React Native的ANPR

    ror 和 shr 抽象 (Abstract) Due to the never-ending increase in volume of vehicles surrounding our daily ...

最新文章

  1. 【Qt】Qt再学习(三):Chart Themes Example(常用图表)
  2. 只需 9.9 元!前 Facebook 工程师 7 天带你掌握 7 大数据结构,大厂面试必备!
  3. 苹果挂端口方法_一招教你,让光猫四个端口既能上网又能IPTV,不用再区分端口...
  4. EntityFramework6.X 之 Fulent
  5. 測试新浪微博@小冰 为代码机器人的一些方法
  6. java定义一个类显示没有_Java 中的每个类都至少有一个构造方法,一个类中如果没有定义构造方法,系统会自动为这个类创建一个默认的构造方法。_学小易找答案...
  7. 【前端】前端面试题整理
  8. NHL明星与美国冰球协会联手发起NFT拍卖
  9. 阿里云服务器购买流程详细2019更新(图文教程)...
  10. 基于蚁群算法的MTSP问题
  11. 新的服务器装系统前怎么分区吗,新硬盘使用之前要如何分区?硬盘分区常用方法详解...
  12. Cisco Packet Tracer Student 两个路由器级联
  13. 你好,布灵!高瓴人工智能学院首个AI小精灵诞生
  14. Ubuntu使用cmake出现Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
  15. 概率机器学习中的互信息(Mutual Information)
  16. Apache Curator操作zookeeper的API使用
  17. 基于C+++Mysql实现(WinForm)校友管理系统(面向对象)【100010007】
  18. 【机器学习】生成式模型和判别式模型
  19. 大数据培训 | 电商用户行为分析之订单支付实时监控
  20. 剖析 Pexpect

热门文章

  1. 人工智能技术在美国国家安全领域的应用
  2. 超壮观!10只波士顿动力机器狗,拖动大卡车,步伐整齐划一如同仪仗队
  3. BCG、阿里、百度联合发布中国互联网经济白皮书2.0,解读“中国互联网新篇章:迈向产业融合”...
  4. 俄罗斯智库 | 人工智能在军事领域的发展现状及应用前景
  5. 2018年智能化发展趋势:语音交互全球开战、AI终端趋势显现
  6. 李开复:明年会有一批AI公司倒闭
  7. 算法学习:常用排序方法
  8. react-router中离开确认组件Prompt
  9. mysql5.7 不复制多张表
  10. Stream、WshShell、WshUrlShortcut对象及Shell.Application的参数与使用