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的Item
renderTabBarItem(title, selectedTab, image, selectedImage, component) {
return (
<TabNavigator.Item
selected={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.效果图

.

最新文章

  1. java 简单使用redis
  2. hdu 2489(枚举 + 最小生成树)
  3. can&#39;t resolve symbol &#39;R&#39; ...
  4. dll学习
  5. Ubuntu系统监控cpu memery 磁盘Io次数 IO速率 网卡 运行时间等信息的采集
  6. [转]简析 IOS 程序图标的设计
  7. 【转】iOS-Core-Animation-Advanced-Techniques(四)
  8. Vigen&#232;re Cipher 维吉尼亚加解密算法
  9. 关于web的流程
  10. 5.6.3.7 localeCompare() 方法
  11. HTML &lt;base&gt; 标签的 href 属性
  12. thinkphp5.0学习笔记(二)
  13. Git详解之九:Git内部原理
  14. 怎么修改kodexplorer网盘下的版权
  15. Codeforces Round #447 (Div. 2) B. Ralph And His Magic Field 数学
  16. 【python全栈开发】初识python
  17. Monotonic Array LT896
  18. Hybris IMPEX.
  19. ajax小知识
  20. Codeforces 535D - Tavas and Malekas

热门文章

  1. Vue 实现手动刷新组件
  2. Java 线程池 8 大拒绝策略,面试必问!
  3. linux工具之screen
  4. php 操作Redis发送短信
  5. Android--ViewPager点击按钮切换下一页
  6. mac 命令行终端 设置代理
  7. 判断是否是iframe框架打开登录页, iframe框架着顶部页面刷新
  8. 009-流程控制 for 语句
  9. PAT Basic 1036 跟奥巴马一起编程 (15 分)
  10. Netty学习--第二章 BIO的模型详解