aboutsummaryrefslogtreecommitdiff
path: root/mobile/hello-world/screens/HomeScreen.js
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/hello-world/screens/HomeScreen.js')
-rw-r--r--mobile/hello-world/screens/HomeScreen.js188
1 files changed, 188 insertions, 0 deletions
diff --git a/mobile/hello-world/screens/HomeScreen.js b/mobile/hello-world/screens/HomeScreen.js
new file mode 100644
index 0000000..0d3548e
--- /dev/null
+++ b/mobile/hello-world/screens/HomeScreen.js
@@ -0,0 +1,188 @@
+import React from 'react';
+import {
+ Image,
+ Platform,
+ ScrollView,
+ StyleSheet,
+ Text,
+ TouchableOpacity,
+ View,
+} from 'react-native';
+import { WebBrowser } from 'expo';
+
+import { MonoText } from '../components/StyledText';
+
+export default class HomeScreen extends React.Component {
+ static navigationOptions = {
+ header: null,
+ };
+
+ render() {
+ return (
+ <View style={styles.container}>
+ <ScrollView style={styles.container} contentContainerStyle={styles.contentContainer}>
+ <View style={styles.welcomeContainer}>
+ <Image
+ source={
+ __DEV__
+ ? require('../assets/images/robot-dev.png')
+ : require('../assets/images/robot-prod.png')
+ }
+ style={styles.welcomeImage}
+ />
+ </View>
+
+ <View style={styles.getStartedContainer}>
+ {this._maybeRenderDevelopmentModeWarning()}
+
+ <Text style={styles.getStartedText}>Get started by opening</Text>
+
+ <View style={[styles.codeHighlightContainer, styles.homeScreenFilename]}>
+ <MonoText style={styles.codeHighlightText}>screens/HomeScreen.js</MonoText>
+ </View>
+
+ <Text style={styles.getStartedText}>
+ Change this text and your app will automatically reload.
+ </Text>
+ </View>
+
+ <View style={styles.helpContainer}>
+ <TouchableOpacity onPress={this._handleHelpPress} style={styles.helpLink}>
+ <Text style={styles.helpLinkText}>Help, it didn’t automatically reload!</Text>
+ </TouchableOpacity>
+ </View>
+ </ScrollView>
+
+ <View style={styles.tabBarInfoContainer}>
+ <Text style={styles.tabBarInfoText}>This is a tab bar. You can edit it in:</Text>
+
+ <View style={[styles.codeHighlightContainer, styles.navigationFilename]}>
+ <MonoText style={styles.codeHighlightText}>navigation/MainTabNavigator.js</MonoText>
+ </View>
+ </View>
+ </View>
+ );
+ }
+
+ _maybeRenderDevelopmentModeWarning() {
+ if (__DEV__) {
+ const learnMoreButton = (
+ <Text onPress={this._handleLearnMorePress} style={styles.helpLinkText}>
+ Learn more
+ </Text>
+ );
+
+ return (
+ <Text style={styles.developmentModeText}>
+ Development mode is enabled, your app will be slower but you can use useful development
+ tools. {learnMoreButton}
+ </Text>
+ );
+ } else {
+ return (
+ <Text style={styles.developmentModeText}>
+ You are not in development mode, your app will run at full speed.
+ </Text>
+ );
+ }
+ }
+
+ _handleLearnMorePress = () => {
+ WebBrowser.openBrowserAsync('https://docs.expo.io/versions/latest/guides/development-mode');
+ };
+
+ _handleHelpPress = () => {
+ WebBrowser.openBrowserAsync(
+ 'https://docs.expo.io/versions/latest/guides/up-and-running.html#can-t-see-your-changes'
+ );
+ };
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ backgroundColor: '#fff',
+ },
+ developmentModeText: {
+ marginBottom: 20,
+ color: 'rgba(0,0,0,0.4)',
+ fontSize: 14,
+ lineHeight: 19,
+ textAlign: 'center',
+ },
+ contentContainer: {
+ paddingTop: 30,
+ },
+ welcomeContainer: {
+ alignItems: 'center',
+ marginTop: 10,
+ marginBottom: 20,
+ },
+ welcomeImage: {
+ width: 100,
+ height: 80,
+ resizeMode: 'contain',
+ marginTop: 3,
+ marginLeft: -10,
+ },
+ getStartedContainer: {
+ alignItems: 'center',
+ marginHorizontal: 50,
+ },
+ homeScreenFilename: {
+ marginVertical: 7,
+ },
+ codeHighlightText: {
+ color: 'rgba(96,100,109, 0.8)',
+ },
+ codeHighlightContainer: {
+ backgroundColor: 'rgba(0,0,0,0.05)',
+ borderRadius: 3,
+ paddingHorizontal: 4,
+ },
+ getStartedText: {
+ fontSize: 17,
+ color: 'rgba(96,100,109, 1)',
+ lineHeight: 24,
+ textAlign: 'center',
+ },
+ tabBarInfoContainer: {
+ position: 'absolute',
+ bottom: 0,
+ left: 0,
+ right: 0,
+ ...Platform.select({
+ ios: {
+ shadowColor: 'black',
+ shadowOffset: { height: -3 },
+ shadowOpacity: 0.1,
+ shadowRadius: 3,
+ },
+ android: {
+ elevation: 20,
+ },
+ }),
+ alignItems: 'center',
+ backgroundColor: '#fbfbfb',
+ paddingVertical: 20,
+ },
+ tabBarInfoText: {
+ fontSize: 17,
+ color: 'rgba(96,100,109, 1)',
+ textAlign: 'center',
+ },
+ navigationFilename: {
+ marginTop: 5,
+ },
+ helpContainer: {
+ marginTop: 15,
+ alignItems: 'center',
+ },
+ helpLink: {
+ paddingVertical: 15,
+ },
+ helpLinkText: {
+ fontSize: 14,
+ color: '#2e78b7',
+ },
+});