wangkang3 5 years ago
parent
commit
0ea6b17716

+ 1 - 0
wechat_demo/android/app/build.gradle

@ -134,6 +134,7 @@ android {
134 134
}
135 135
136 136
dependencies {
137
    implementation project(':react-native-webview')
137 138
    implementation project(':react-native-gesture-handler')
138 139
    implementation fileTree(dir: "libs", include: ["*.jar"])
139 140
    implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"

+ 1 - 1
wechat_demo/android/app/src/main/java/com/wechat_demo/MainActivity.java

@ -10,6 +10,6 @@ public class MainActivity extends ReactActivity {
10 10
     */
11 11
    @Override
12 12
    protected String getMainComponentName() {
13
        return "wechat_demo";
13
        return "RNMicro";
14 14
    }
15 15
}

+ 2 - 0
wechat_demo/android/app/src/main/java/com/wechat_demo/MainApplication.java

@ -3,6 +3,7 @@ package com.wechat_demo;
3 3
import android.app.Application;
4 4
5 5
import com.facebook.react.ReactApplication;
6
import com.reactnativecommunity.webview.RNCWebViewPackage;
6 7
import com.swmansion.gesturehandler.react.RNGestureHandlerPackage;
7 8
import com.facebook.react.ReactNativeHost;
8 9
import com.facebook.react.ReactPackage;
@ -24,6 +25,7 @@ public class MainApplication extends Application implements ReactApplication {
24 25
    protected List<ReactPackage> getPackages() {
25 26
      return Arrays.<ReactPackage>asList(
26 27
          new MainReactPackage(),
28
            new RNCWebViewPackage(),
27 29
            new RNGestureHandlerPackage()
28 30
      );
29 31
    }

+ 2 - 0
wechat_demo/android/settings.gradle

@ -1,4 +1,6 @@
1 1
rootProject.name = 'wechat_demo'
2
include ':react-native-webview'
3
project(':react-native-webview').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-webview/android')
2 4
include ':react-native-gesture-handler'
3 5
project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-gesture-handler/android')
4 6

+ 61 - 0
wechat_demo/app/CodeDetail.js

@ -0,0 +1,61 @@
1
import React, {Component} from 'react';
2
import {Modal,View,Text,TouchableOpacity,Image,StyleSheet} from 'react-native';
3
4
5
export default class CodeDetail extends Component {
6
7
  constructor(props) {
8
    super(props);//这一句不能省略,照抄即可
9
    this.state = {
10
        animationType: 'fade',//none slide fade
11
        modalVisible: false,//模态场景是否可见
12
        transparent: true,//是否透明显示
13
    };
14
  }
15
16
  render() {
17
    return <Modal
18
        animationType={this.state.animationType}
19
        transparent={this.state.transparent}
20
        visible={this.state.modalVisible}
21
        onRequestClose={() => {
22
            this._setModalVisible(false)
23
        }}
24
        onShow={this.startShow} 
25
    >
26
       <TouchableOpacity style={styles.modalContainer} onPress={() => {
27
                    this._setModalVisible(false)
28
                  }}>
29
                <TouchableOpacity activeOpacity={1} style={styles.modalContent} onPress={() => {
30
                   return
31
                  }}>
32
                    <Image style={styles.codeimg} source={require('../static/img/QR_code.png')}/>
33
                  </TouchableOpacity>
34
                  </TouchableOpacity>
35
  </Modal>
36
  }
37
38
  _setModalVisible = (visible) => {
39
    this.setState({modalVisible: visible});
40
  }
41
  startShow = () => {
42
  //   alert('开始显示了');
43
  }
44
}
45
const styles = StyleSheet.create({
46
  modalContainer:{
47
    flex:1,
48
    justifyContent:'center',
49
    alignItems: 'center',
50
    backgroundColor:'rgba(0, 0, 0, 0.5)'
51
  },
52
  modalContent:{
53
    backgroundColor:'#ddd',
54
    borderTopLeftRadius:5,
55
    borderTopRightRadius:5
56
  },
57
  codeimg:{
58
    width:150,
59
    height:150
60
  }
61
});

+ 7 - 5
wechat_demo/app/Details.js

@ -1,5 +1,6 @@
1 1
import React, { Component } from 'react';
2 2
import {View,Text,Image,StyleSheet,ScrollView,Platform,Dimensions} from 'react-native'; 
3
import { WebView } from 'react-native-webview';
3 4
import Header from './Header'
4 5
var {height,width} =  Dimensions.get('window');
5 6
export default class Details extends Component{
@ -10,10 +11,10 @@ export default class Details extends Component{
10 11
11 12
    render() {
12 13
        return (
13
            <View>
14
            <View style={{flex:1}}>
14 15
                <Header title='返回' leftEvent={()=>this.back(this)}></Header>
15
                <ScrollView style={{height:height-50}}>
16
                    <View style={{alignItems:'center',height:height-50}}>
16
                {/* <ScrollView style={{height:height-50}}> */}
17
                    {/* <View style={{alignItems:'center',height:height-50}}>
17 18
                        <View><Text style={{fontSize:15,marginTop:40}}>3号免手洗</Text></View>
18 19
                        <View><Text style={{fontSize:14,marginTop:20,marginHorizontal:40}}>
19 20
                        二维码内容二维码内容二维码内容二维码内容二维码内容二维码内容二维码内容二维码内容</Text></View>
@ -22,8 +23,9 @@ export default class Details extends Component{
22 23
                            <Text style={{color:'#000',fontSize:12,marginHorizontal:10}}>|</Text>
23 24
                            <Text style={{color:'#989898',fontSize:12}}>分享</Text>
24 25
                        </View>
25
                    </View>
26
                </ScrollView>
26
                    </View> */}
27
                     <WebView  source={{ uri: 'https://h5.clewm.net/?url=qr71.cn%2Fo340AF%2FqvWOamT&hasredirect=1' }} />
28
                {/* </ScrollView> */}
27 29
            </View>
28 30
        )
29 31
    }

+ 251 - 160
wechat_demo/app/Home.js

@ -1,11 +1,13 @@
1 1
import React, { Component } from 'react';
2
import {View,Text,Image,StyleSheet,FlatList,ScrollView,Dimensions} from 'react-native'; 
2
import { View, Text, Image, StyleSheet, FlatList, ScrollView, Dimensions, TouchableOpacity } from 'react-native';
3 3
import SegmentedBar from './SegmentedBar'
4 4
import Carousel from './Carousel'
5 5
import DashSecondLine from './DashSecondLine'
6 6
import Header from './Header'
7
var {height,width} =  Dimensions.get('window');
8
export default class Home extends Component{
7
import CodeDetail from './CodeDetail'
8
9
var { height, width } = Dimensions.get('window');
10
export default class Home extends Component {
9 11
10 12
    // static navigationOptions =  ({navigation,screenProps})=>({
11 13
    //     tabBarLabel: '首页',
@ -14,219 +16,308 @@ export default class Home extends Component{
14 16
15 17
    constructor(props) {
16 18
        super(props);
17
    
18
        this.barItems = [
19
            {
20
                title:'浏览记录',
21
                type: 0,
22
                content:[
23
                    {
24
                        timeText:'今天',
25
                        title:'3号免手洗',
26
                        time:'查看于1小时前',
27
                    },
28
                    {
29
                        timeText:'今天',
30
                        title:'3号免手洗',
31
                        time:'查看于1小时前',
32
                    },
33
                    {
34
                        timeText:'今天',
35
                        title:'3号免手洗',
36
                        time:'查看于1小时前',
37
                    },
38
                    {
39
                        timeText:'今天',
40
                        title:'3号免手洗',
41
                        time:'查看于1小时前',
42
                    },
43
                    {
44
                        timeText:'今天',
45
                        title:'3号免手洗',
46
                        time:'查看于1小时前',
47
                    },
48
                    {
49
                        timeText:'昨天',
50
                        title:'3号免手洗',
51
                        time:'查看于1小时前',
52
                    },
53
                    {
54
                        timeText:'昨天',
55
                        title:'3号免手洗',
56
                        time:'查看于1小时前',
57
                    },
58
                    {
59
                        timeText:'昨天',
60
                        title:'3号免手洗',
61
                        time:'查看于1小时前',
62
                    }
63
                ]
64
            },{
65
                title:'收藏列表',
66
                type: 1,
67
                content:[
68
                    {
69
                        title:'3号免手洗',
70
                        time:'收藏于1小时前',
71
                    }
72
                ]
73
            }
74
        ];
75
    
19
20
        // var barItems = [
21
        //     {
22
        //         title:'浏览记录',
23
        //         type: 0,
24
        //         content:[
25
        //             {
26
        //                 timeText:'今天',
27
        //                 title:'3号免手洗',
28
        //                 time:'查看于1小时前',
29
        //             },
30
        //             {
31
        //                 timeText:'今天',
32
        //                 title:'3号免手洗',
33
        //                 time:'查看于1小时前',
34
        //             },
35
        //             {
36
        //                 timeText:'今天',
37
        //                 title:'3号免手洗',
38
        //                 time:'查看于1小时前',
39
        //             },
40
        //             {
41
        //                 timeText:'今天',
42
        //                 title:'3号免手洗',
43
        //                 time:'查看于1小时前',
44
        //             },
45
        //             {
46
        //                 timeText:'今天',
47
        //                 title:'3号免手洗',
48
        //                 time:'查看于1小时前',
49
        //             },
50
        //             {
51
        //                 timeText:'昨天',
52
        //                 title:'3号免手洗',
53
        //                 time:'查看于1小时前',
54
        //             },
55
        //             {
56
        //                 timeText:'昨天',
57
        //                 title:'3号免手洗',
58
        //                 time:'查看于1小时前',
59
        //             },
60
        //             {
61
        //                 timeText:'昨天',
62
        //                 title:'3号免手洗',
63
        //                 time:'查看于1小时前',
64
        //             }
65
        //         ]
66
        //     },{
67
        //         title:'收藏列表',
68
        //         type: 1,
69
        //         content:[
70
        //             {
71
        //                 title:'3号免手洗',
72
        //                 time:'收藏于1小时前',
73
        //             }
74
        //         ]
75
        //     }
76
        // ];
77
78
        var history = {
79
            title: '浏览记录',
80
            type: 0,
81
            content: [
82
                {
83
                    timeText: '今天',
84
                    title: '3号免手洗',
85
                    time: '查看于1小时前',
86
                },
87
                {
88
                    timeText: '今天',
89
                    title: '3号免手洗',
90
                    time: '查看于1小时前',
91
                },
92
                {
93
                    timeText: '今天',
94
                    title: '3号免手洗',
95
                    time: '查看于1小时前',
96
                },
97
                {
98
                    timeText: '今天',
99
                    title: '3号免手洗',
100
                    time: '查看于1小时前',
101
                },
102
                {
103
                    timeText: '今天',
104
                    title: '3号免手洗',
105
                    time: '查看于1小时前',
106
                },
107
                {
108
                    timeText: '昨天',
109
                    title: '3号免手洗',
110
                    time: '查看于1小时前',
111
                },
112
                {
113
                    timeText: '昨天',
114
                    title: '3号免手洗',
115
                    time: '查看于1小时前',
116
                },
117
                {
118
                    timeText: '昨天',
119
                    title: '3号免手洗',
120
                    time: '查看于1小时前',
121
                }
122
            ]
123
        }
124
125
        var collect = {
126
            title: '收藏列表',
127
            type: 1,
128
            content: [
129
                {
130
                    title: '3号免手洗',
131
                    time: '收藏于1小时前',
132
                }
133
            ]
134
        }
135
76 136
        this.justifyItemItems = ['fixed', 'scrollable'];
77 137
        this.indicatorTypeItems = ['none', 'boxWidth', 'itemWidth', 'customWidth'];
78 138
        this.indicatorPositionItems = ['top', 'bottom'];
79
        if(!this.state){
139
        if (!this.state) {
80 140
            this.state = {}
81 141
        }
82 142
        Object.assign(this.state, {
83
          justifyItem: 'fixed',
84
          indicatorType: 'itemWidth',
85
          indicatorPosition: 'bottom',
86
          animated: true,
87
          autoScroll: true,
88
          activeIndex: 0,
89
          custom: false,
143
            justifyItem: 'fixed',
144
            indicatorType: 'itemWidth',
145
            indicatorPosition: 'bottom',
146
            animated: true,
147
            autoScroll: true,
148
            activeIndex: 0,
149
            custom: false,
150
            history: history,
151
            collect: collect
90 152
        });
91
      }
153
    }
92 154
93
      onSegmentedBarChange(index) {
155
    onSegmentedBarChange(index) {
94 156
        if (index != this.state.activeIndex) {
95
          this.setState({activeIndex: index});
96
          if (this.refs.carousel) {
97
            this.refs.carousel.scrollToPage(index, false);
98
          }
157
            this.setState({ activeIndex: index });
158
            if (this.refs.carousel) {
159
                this.refs.carousel.scrollToPage(index, false);
160
            }
99 161
        }
100
      }
162
    }
101 163
102
      onCarouselChange(index) {
103
        index != this.state.activeIndex && this.setState({activeIndex: index});
104
      }
164
    onCarouselChange(index) {
165
        index != this.state.activeIndex && this.setState({ activeIndex: index });
166
    }
105 167
106
      getContent(item,_this){
107
          console.log('2222'+JSON.stringify(_this.props))
108
        if(item.type == 0){
168
    getContent(item, _this) {
169
        if (item.type == 0) {
109 170
            return (
110 171
                <View>
111
                    {item.content.map((itemChild,index)=>(
112
                        <View style={{flex:1,flexDirection:'row'}}  key={'menu' + index}>
113
                            <Text style={{marginTop:30,marginLeft:15,marginRight:5,color:'#000'}}>{itemChild.timeText}</Text>
114
                        
115
                        <View style={{marginRight:20,marginVertical:10,paddingHorizontal:20,paddingTop:20,borderWidth:1,borderColor:'#ddd',borderRadius:5,height:130}}>
116
                            <View style={{height:58}}>
117
                                <View style={{flex:1,flexDirection:'row',justifyContent: 'space-between'}}>
118
                                    <View>
119
                                        <Text style={{fontSize:15,height:18,color:'#000'}}>{itemChild.title}</Text>
120
                                        <Text style={{fontSize:12,height:15,marginTop:10,color:'#bbb'}}>{itemChild.time}</Text>
172
                    {item.content.length == 0 ? <View>
173
                        <View style={{ flex: 1, justifyContent: 'center', alignContent: 'center', alignItems: 'center', flexDirection: 'column', textAlign: 'center', height: height - 130 }}>
174
                            <Image style={[styles.noResult]} source={require('../static/img/no_result.png')} />
175
                            <Text style={{ textAlign: 'center', fontSize: 15, marginTop: 15 }}>这里空空如也,快去扫描看看</Text>
176
                        </View>
177
                    </View> : item.content.map((itemChild, index) => (
178
                        <View style={{ flex: 1, flexDirection: 'row' }} key={'menu' + index}>
179
                            <Text style={{ marginTop: 30, marginLeft: 15, marginRight: 5, color: '#000' }}>{itemChild.timeText}</Text>
180
181
                            <View style={{ marginRight: 20, marginVertical: 10, paddingHorizontal: 20, paddingTop: 20, borderWidth: 1, borderColor: '#ddd', borderRadius: 5, height: 130 }}>
182
                                <View style={{ height: 58 }}>
183
                                    <View style={{ flex: 1, flexDirection: 'row', justifyContent: 'space-between' }}>
184
                                        <View>
185
                                            <Text style={{ fontSize: 15, height: 18, color: '#000' }}>{itemChild.title}</Text>
186
                                            <Text style={{ fontSize: 12, height: 15, marginTop: 10, color: '#bbb' }}>{itemChild.time}</Text>
187
                                        </View>
188
                                        <TouchableOpacity  onPress={() => {
189
                                            this.refs.dialog._setModalVisible(true);
190
                                        }}>
191
                                            <Image style={styles.tabImg} source={require('../static/img/qrcode.png')} />
192
                                        </TouchableOpacity>
121 193
                                    </View>
122
                                    <Image style={styles.tabImg} source={require('../static/img/qrcode.png')}/>
123 194
                                </View>
124
                            </View>
125
                            <DashSecondLine backgroundColor='#ddd' len={60} width={width-100}></DashSecondLine>
126
                            <View style={{flex:1,flexDirection:'row',justifyContent: 'space-between',marginTop:20}}>
127
                                <Image style={{width:15,height:15}} source={require('../static/img/delete.png')}/>
128
                                <Text onPress={()=>{_this.props.navigation.navigate('Details')}}>查看详情</Text>
195
                                <DashSecondLine backgroundColor='#ddd' len={60} width={width - 100}></DashSecondLine>
196
                                <View style={{ flex: 1, flexDirection: 'row', justifyContent: 'space-between', marginTop: 20 }}>
197
                                    <TouchableOpacity onPress={() => { item.content.splice(index, 1); _this.setState({ history: item }) }}>
198
                                        <Image style={{ width: 15, height: 15 }} source={require('../static/img/delete.png')} />
199
                                    </TouchableOpacity>
200
                                    <Text onPress={() => { _this.props.navigation.navigate('Details') }}>查看详情</Text>
201
                                </View>
129 202
                            </View>
130 203
                        </View>
131
                        </View>
132 204
                    ))}
133 205
                </View>)
134
        }else{
206
        } else {
135 207
            return (
136 208
                <View>
137
                    {item.content.map((itemChild,index)=>(
138
                        <View key={'menu' + index} style={{marginHorizontal:20,marginVertical:10,paddingHorizontal:20,paddingTop:20,borderWidth:1,borderColor:'#ddd',height:130,borderRadius:5 }}>
139
                            <View style={{height:58}}>
140
                                <View style={{flex:1,flexDirection:'row',justifyContent: 'space-between'}}>
209
                    {item.content.length == 0 ? <View>
210
                        <View style={{ flex: 1, justifyContent: 'center', alignContent: 'center', alignItems: 'center', flexDirection: 'column', textAlign: 'center', height: height - 130 }}>
211
                            <Image style={[styles.noResult]} source={require('../static/img/no_result.png')} />
212
                            <Text style={{ textAlign: 'center', fontSize: 15, marginTop: 15 }}>这里空空如也,快去收藏看看</Text>
213
                        </View>
214
                    </View> : item.content.map((itemChild, index) => (
215
                        <View key={'menu' + index} style={{ marginHorizontal: 20, marginVertical: 10, paddingHorizontal: 20, paddingTop: 20, borderWidth: 1, borderColor: '#ddd', height: 130, borderRadius: 5 }}>
216
                            <View style={{ height: 58 }}>
217
                                <View style={{ flex: 1, flexDirection: 'row', justifyContent: 'space-between' }}>
141 218
                                    <View>
142
                                        <Text style={{fontSize:15,height:18}}>{itemChild.title}</Text>
143
                                        <Text style={{fontSize:12,height:15,marginTop:10,color:'#bbb'}}>{itemChild.time}</Text>
219
                                        <Text style={{ fontSize: 15, height: 18 }}>{itemChild.title}</Text>
220
                                        <Text style={{ fontSize: 12, height: 15, marginTop: 10, color: '#bbb' }}>{itemChild.time}</Text>
144 221
                                    </View>
145
                                    <Image style={styles.tabImg} source={require('../static/img/qrcode.png')}/>
222
                                    <TouchableOpacity  onPress={() => {
223
                                        this.refs.dialog._setModalVisible(true);
224
                                    }}>
225
                                        <Image style={styles.tabImg} source={require('../static/img/qrcode.png')} />
226
                                    </TouchableOpacity>
146 227
                                </View>
147 228
                            </View>
148
                            <DashSecondLine backgroundColor='#ddd' len={60} width={width-80}></DashSecondLine>
149
                            <View style={{flex:1,flexDirection:'row',justifyContent: 'space-between',marginTop:20}}>
150
                                <Text>已收藏</Text>
151
                                <Text onPress={()=>{_this.props.navigation.navigate('Details')}}>查看详情</Text>
229
                            <DashSecondLine backgroundColor='#ddd' len={60} width={width - 80}></DashSecondLine>
230
                            <View style={{ flex: 1, flexDirection: 'row', justifyContent: 'space-between', marginTop: 20 }}>
231
                                <TouchableOpacity onPress={() => { item.content.splice(index, 1); _this.setState({ collect: item }) }}>
232
                                    <Text>取消收藏</Text>
233
                                </TouchableOpacity>
234
                                <Text onPress={() => { _this.props.navigation.navigate('Details') }}>查看详情</Text>
152 235
                            </View>
153 236
                        </View>
154 237
                    ))}
155 238
                </View>)
156 239
        }
157
      }
240
    }
158 241
159 242
    render() {
160
        let {justifyItem, indicatorType, indicatorPosition, animated, autoScroll, custom, activeIndex} = this.state;
161
        let barItems =  this.barItems;
243
        let { justifyItem, indicatorType, indicatorPosition, animated, autoScroll, custom, activeIndex } = this.state;
244
        var barItems = [];
245
        barItems.push(this.state.history);
246
        barItems.push(this.state.collect);
247
        console.log(barItems)
162 248
        return (
163 249
            <View>
164
                <Header title="我的二维码" leftEvent={()=>{}}></Header>
250
                <Header title="我的二维码" leftEvent={() => { }}></Header>
165 251
                <SegmentedBar
166
                justifyItem={justifyItem}
167
                indicatorType={indicatorType}
168
                indicatorPosition={indicatorPosition}
169
                indicatorLineColor={'#00ff00'}
170
                indicatorLineWidth={custom ? 1 : undefined}
171
                indicatorPositionPadding={custom ? 3 : undefined}
172
                animated={animated}
173
                autoScroll={autoScroll}
174
                activeIndex={activeIndex}
175
                onChange={index => this.onSegmentedBarChange(index)}
252
                    justifyItem={justifyItem}
253
                    indicatorType={indicatorType}
254
                    indicatorPosition={indicatorPosition}
255
                    indicatorLineColor={'#00ff00'}
256
                    indicatorLineWidth={custom ? 1 : undefined}
257
                    indicatorPositionPadding={custom ? 3 : undefined}
258
                    animated={animated}
259
                    autoScroll={autoScroll}
260
                    activeIndex={activeIndex}
261
                    onChange={index => this.onSegmentedBarChange(index)}
176 262
                >
177
    {barItems.map((item, index) => { return(<SegmentedBar.Item key={'item' + index} active={activeIndex==index} title={item.title} />)})}
263
                    {barItems.map((item, index) => { return (<SegmentedBar.Item key={'item' + index} active={activeIndex == index} title={item.title} />) })}
178 264
                </SegmentedBar>
179 265
                <Carousel
180
                style={styles.carousel_style}
181
                carousel={false}
182
                startIndex={activeIndex}
183
                cycle={false}
184
                ref='carousel'
185
                onChange={index => this.onCarouselChange(index)}
266
                    style={styles.carousel_style}
267
                    carousel={false}
268
                    startIndex={activeIndex}
269
                    cycle={false}
270
                    ref='carousel'
271
                    onChange={index => this.onCarouselChange(index)}
186 272
                >
187
                {barItems.map((item, index) => (
188
                    <ScrollView key={'view' + index}>
189
                        {this.getContent(item,this)}
190
                    </ScrollView>
191
                ))}
273
                    {barItems.map((item, index) => (
274
                        <ScrollView key={'view' + index}>
275
                            {this.getContent(item, this)}
276
                        </ScrollView>
277
                    ))}
192 278
                </Carousel>
279
                <CodeDetail  ref="dialog"/>
193 280
            </View>
194 281
        )
195 282
    }
196 283
}
197 284
198 285
const styles = StyleSheet.create({
199
    tabImg:{
286
    tabImg: {
200 287
        width: 30,
201 288
        height: 30,
202 289
    },
203
    headImg:{
290
    noResult: {
291
        width: 100,
292
        height: 100,
293
    },
294
    headImg: {
204 295
        width: 40,
205 296
        height: 50,
206 297
    },
207
    listContainer:{
208
        flexDirection:'row',
209
        alignItems:'center',
210
        height:60,
211
        paddingLeft:20,
212
        paddingRight:20,
213
        borderBottomWidth:1,
214
        borderBottomColor:"#ddd"
298
    listContainer: {
299
        flexDirection: 'row',
300
        alignItems: 'center',
301
        height: 60,
302
        paddingLeft: 20,
303
        paddingRight: 20,
304
        borderBottomWidth: 1,
305
        borderBottomColor: "#ddd"
215 306
    },
216
    textContainer:{
217
        flexDirection:'column',
218
        alignItems:'flex-start',
219
        height:60,
220
        marginLeft:20,
307
    textContainer: {
308
        flexDirection: 'column',
309
        alignItems: 'flex-start',
310
        height: 60,
311
        marginLeft: 20,
221 312
    },
222
    item:{
223
        marginLeft:20,
224
        marginRight:20,
313
    item: {
314
        marginLeft: 20,
315
        marginRight: 20,
225 316
    },
226
    carousel_style:{
227
        backgroundColor: '#fff', 
228
        height: height-80, 
229
        borderTopWidth: 1, 
317
    carousel_style: {
318
        backgroundColor: '#fff',
319
        height: height - 80,
320
        borderTopWidth: 1,
230 321
        borderTopColor: '#f8f8f8'
231 322
    }
232 323
})

+ 7 - 12
wechat_demo/app/ModalContent.js

@ -61,27 +61,21 @@ export default class ModalContent extends Component {
61 61
                  <View style={styles.operationButton}>
62 62
                    <TouchableOpacity style={styles.operationButtonSpace}>
63 63
                      <View style={styles.operationButtonImgContainer}>
64
                        <Image style={styles.operationButtonImg} source={require('../static/img/transmit.png')}/>
64
                        <Image style={styles.operationButtonImg} source={require('../static/img/annulus.png')}/>
65 65
                      </View>
66
                      <Text style={styles.operationButtonText}>当前页面不可转发</Text>
66
                      <Text style={styles.operationButtonText}>浮窗</Text>
67 67
                    </TouchableOpacity>
68 68
                    <TouchableOpacity style={styles.operationButtonSpace}>
69 69
                      <View style={styles.operationButtonImgContainer}>
70
                        <Image style={styles.operationButtonImg} source={require('../static/img/home.png')}/>
70
                        <Image style={styles.operationButtonImg} source={require('../static/img/setting.png')}/>
71 71
                      </View>
72
                      <Text style={styles.operationButtonText}>回到首页</Text>
72
                      <Text style={styles.operationButtonText}>设置</Text>
73 73
                    </TouchableOpacity>
74 74
                    <TouchableOpacity style={styles.operationButtonSpace}>
75 75
                      <View style={styles.operationButtonImgContainer}>
76
                        <Image style={styles.operationButtonImg} source={require('../static/img/star.png')}/>
76
                        <Image style={styles.operationButtonImg} source={require('../static/img/complaint.png')}/>
77 77
                      </View>
78
                      <Text style={styles.operationButtonText}>添加到我的小程序</Text>
79
                    </TouchableOpacity>
80
                    <TouchableOpacity style={styles.operationButtonSpace}>
81
                      <View style={styles.operationButtonImgContainer}>
82
                        <Image style={styles.operationButtonImg} source={require('../static/img/desktop.png')}/>
83
                      </View>
84
                      <Text style={styles.operationButtonText}>添加到桌面</Text>
78
                      <Text style={styles.operationButtonText}>反馈与投诉</Text>
85 79
                    </TouchableOpacity>
86 80
                  </View>
87 81
                  <TouchableOpacity style={styles.modalCancleButton} onPress={() => {
@ -120,6 +114,7 @@ const styles = StyleSheet.create({
120 114
    borderBottomWidth:1,
121 115
    borderBottomColor:'#ccc',
122 116
    justifyContent:'center',
117
    marginLeft:10,
123 118
  },
124 119
  operationButton:{
125 120
    flexDirection:'row',

+ 19 - 0
wechat_demo/ios/wechat_demo.xcodeproj/project.pbxproj

@ -40,6 +40,7 @@
40 40
		ED297163215061F000B7C4FE /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED297162215061F000B7C4FE /* JavaScriptCore.framework */; };
41 41
		ED2971652150620600B7C4FE /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED2971642150620600B7C4FE /* JavaScriptCore.framework */; };
42 42
		B46B7A707B424F24AA24F557 /* libRNGestureHandler.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 690940AEC2F4479BB2442423 /* libRNGestureHandler.a */; };
43
		6A31BED8F01E4623B3C5CDC7 /* libRNCWebView.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 92C06DC9F215452C8EF0D971 /* libRNCWebView.a */; };
43 44
/* End PBXBuildFile section */
44 45
45 46
/* Begin PBXContainerItemProxy section */
@ -349,6 +350,8 @@
349 350
		ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; };
350 351
		D14ACA86322D49458E25DE2E /* RNGestureHandler.xcodeproj */ = {isa = PBXFileReference; name = "RNGestureHandler.xcodeproj"; path = "../node_modules/react-native-gesture-handler/ios/RNGestureHandler.xcodeproj"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; };
351 352
		690940AEC2F4479BB2442423 /* libRNGestureHandler.a */ = {isa = PBXFileReference; name = "libRNGestureHandler.a"; path = "libRNGestureHandler.a"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; };
353
		FAEB159A47DB47D39AE0CACE /* RNCWebView.xcodeproj */ = {isa = PBXFileReference; name = "RNCWebView.xcodeproj"; path = "../node_modules/react-native-webview/ios/RNCWebView.xcodeproj"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; };
354
		92C06DC9F215452C8EF0D971 /* libRNCWebView.a */ = {isa = PBXFileReference; name = "libRNCWebView.a"; path = "libRNCWebView.a"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; };
352 355
/* End PBXFileReference section */
353 356
354 357
/* Begin PBXFrameworksBuildPhase section */
@ -378,6 +381,7 @@
378 381
				00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */,
379 382
				139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */,
380 383
				B46B7A707B424F24AA24F557 /* libRNGestureHandler.a in Frameworks */,
384
				6A31BED8F01E4623B3C5CDC7 /* libRNCWebView.a in Frameworks */,
381 385
			);
382 386
			runOnlyForDeploymentPostprocessing = 0;
383 387
		};
@ -570,6 +574,7 @@
570 574
				00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */,
571 575
				139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */,
572 576
				D14ACA86322D49458E25DE2E /* RNGestureHandler.xcodeproj */,
577
				FAEB159A47DB47D39AE0CACE /* RNCWebView.xcodeproj */,
573 578
			);
574 579
			name = Libraries;
575 580
			sourceTree = "<group>";
@ -1198,10 +1203,12 @@
1198 1203
				LIBRARY_SEARCH_PATHS = (
1199 1204
					"$(inherited)",
1200 1205
					"\"$(SRCROOT)/$(TARGET_NAME)\"",
1206
					"\"$(SRCROOT)/$(TARGET_NAME)\"",
1201 1207
				);
1202 1208
				HEADER_SEARCH_PATHS = (
1203 1209
					"$(inherited)",
1204 1210
					"$(SRCROOT)\..\node_modules\react-native-gesture-handler\ios/**",
1211
					"$(SRCROOT)\..\node_modules\react-native-webview\ios",
1205 1212
				);
1206 1213
			};
1207 1214
			name = Debug;
@ -1224,10 +1231,12 @@
1224 1231
				LIBRARY_SEARCH_PATHS = (
1225 1232
					"$(inherited)",
1226 1233
					"\"$(SRCROOT)/$(TARGET_NAME)\"",
1234
					"\"$(SRCROOT)/$(TARGET_NAME)\"",
1227 1235
				);
1228 1236
				HEADER_SEARCH_PATHS = (
1229 1237
					"$(inherited)",
1230 1238
					"$(SRCROOT)\..\node_modules\react-native-gesture-handler\ios/**",
1239
					"$(SRCROOT)\..\node_modules\react-native-webview\ios",
1231 1240
				);
1232 1241
			};
1233 1242
			name = Release;
@ -1251,6 +1260,7 @@
1251 1260
				HEADER_SEARCH_PATHS = (
1252 1261
					"$(inherited)",
1253 1262
					"$(SRCROOT)\..\node_modules\react-native-gesture-handler\ios/**",
1263
					"$(SRCROOT)\..\node_modules\react-native-webview\ios",
1254 1264
				);
1255 1265
			};
1256 1266
			name = Debug;
@ -1273,6 +1283,7 @@
1273 1283
				HEADER_SEARCH_PATHS = (
1274 1284
					"$(inherited)",
1275 1285
					"$(SRCROOT)\..\node_modules\react-native-gesture-handler\ios/**",
1286
					"$(SRCROOT)\..\node_modules\react-native-webview\ios",
1276 1287
				);
1277 1288
			};
1278 1289
			name = Release;
@ -1303,10 +1314,12 @@
1303 1314
				LIBRARY_SEARCH_PATHS = (
1304 1315
					"$(inherited)",
1305 1316
					"\"$(SRCROOT)/$(TARGET_NAME)\"",
1317
					"\"$(SRCROOT)/$(TARGET_NAME)\"",
1306 1318
				);
1307 1319
				HEADER_SEARCH_PATHS = (
1308 1320
					"$(inherited)",
1309 1321
					"$(SRCROOT)\..\node_modules\react-native-gesture-handler\ios/**",
1322
					"$(SRCROOT)\..\node_modules\react-native-webview\ios",
1310 1323
				);
1311 1324
			};
1312 1325
			name = Debug;
@ -1337,10 +1350,12 @@
1337 1350
				LIBRARY_SEARCH_PATHS = (
1338 1351
					"$(inherited)",
1339 1352
					"\"$(SRCROOT)/$(TARGET_NAME)\"",
1353
					"\"$(SRCROOT)/$(TARGET_NAME)\"",
1340 1354
				);
1341 1355
				HEADER_SEARCH_PATHS = (
1342 1356
					"$(inherited)",
1343 1357
					"$(SRCROOT)\..\node_modules\react-native-gesture-handler\ios/**",
1358
					"$(SRCROOT)\..\node_modules\react-native-webview\ios",
1344 1359
				);
1345 1360
			};
1346 1361
			name = Release;
@ -1370,10 +1385,12 @@
1370 1385
				LIBRARY_SEARCH_PATHS = (
1371 1386
					"$(inherited)",
1372 1387
					"\"$(SRCROOT)/$(TARGET_NAME)\"",
1388
					"\"$(SRCROOT)/$(TARGET_NAME)\"",
1373 1389
				);
1374 1390
				HEADER_SEARCH_PATHS = (
1375 1391
					"$(inherited)",
1376 1392
					"$(SRCROOT)\..\node_modules\react-native-gesture-handler\ios/**",
1393
					"$(SRCROOT)\..\node_modules\react-native-webview\ios",
1377 1394
				);
1378 1395
			};
1379 1396
			name = Debug;
@ -1403,10 +1420,12 @@
1403 1420
				LIBRARY_SEARCH_PATHS = (
1404 1421
					"$(inherited)",
1405 1422
					"\"$(SRCROOT)/$(TARGET_NAME)\"",
1423
					"\"$(SRCROOT)/$(TARGET_NAME)\"",
1406 1424
				);
1407 1425
				HEADER_SEARCH_PATHS = (
1408 1426
					"$(inherited)",
1409 1427
					"$(SRCROOT)\..\node_modules\react-native-gesture-handler\ios/**",
1428
					"$(SRCROOT)\..\node_modules\react-native-webview\ios",
1410 1429
				);
1411 1430
			};
1412 1431
			name = Release;

+ 1 - 1
wechat_demo/ios/wechat_demo/AppDelegate.m

@ -19,7 +19,7 @@
19 19
  jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
20 20
21 21
  RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
22
                                                      moduleName:@"wechat_demo"
22
                                                      moduleName:@"RNMicro"
23 23
                                               initialProperties:nil
24 24
                                                   launchOptions:launchOptions];
25 25
  rootView.backgroundColor = [UIColor blackColor];

+ 1 - 0
wechat_demo/package.json

@ -10,6 +10,7 @@
10 10
    "react": "16.6.3",
11 11
    "react-native": "0.58.5",
12 12
    "react-native-gesture-handler": "1.0.16",
13
    "react-native-webview": "5.11.0",
13 14
    "react-navigation": "3.0.9"
14 15
  },
15 16
  "devDependencies": {

BIN
wechat_demo/static/img/1.jpg


BIN
wechat_demo/static/img/2.jpg


BIN
wechat_demo/static/img/3.jpg


BIN
wechat_demo/static/img/QR_code.png


BIN
wechat_demo/static/img/annulus.png


BIN
wechat_demo/static/img/circle.png


BIN
wechat_demo/static/img/complaint.png


BIN
wechat_demo/static/img/no_result.png


BIN
wechat_demo/static/img/point.png


BIN
wechat_demo/static/img/setting.png


+ 10 - 2
wechat_demo/yarn.lock

@ -1977,7 +1977,7 @@ escape-html@~1.0.3:
1977 1977
  resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
1978 1978
  integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
1979 1979
1980
escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
1980
escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
1981 1981
  version "1.0.5"
1982 1982
  resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
1983 1983
  integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
@ -2724,7 +2724,7 @@ inquirer@^3.0.6:
2724 2724
    strip-ansi "^4.0.0"
2725 2725
    through "^2.3.6"
2726 2726
2727
invariant@^2.2.2, invariant@^2.2.4:
2727
invariant@2.2.4, invariant@^2.2.2, invariant@^2.2.4:
2728 2728
  version "2.2.4"
2729 2729
  resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
2730 2730
  integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
@ -4855,6 +4855,14 @@ react-native-tab-view@^1.0.0, react-native-tab-view@^1.2.0:
4855 4855
  dependencies:
4856 4856
    prop-types "^15.6.1"
4857 4857
4858
react-native-webview@5.11.0:
4859
  version "5.11.0"
4860
  resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-5.11.0.tgz#7b1eeac7f3ea3a6f7bab3eefc10b272f0a008603"
4861
  integrity sha512-8hqq7Gr5tP6seWUJ5G1qmSmSo53hljhXIkZT09SX07pfAw1pbEoIMg7uYvZGk7BVkYiwIO4nkyg+M501E8CL8g==
4862
  dependencies:
4863
    escape-string-regexp "1.0.5"
4864
    invariant "2.2.4"
4865
4858 4866
react-native@0.58.5:
4859 4867
  version "0.58.5"
4860 4868
  resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.58.5.tgz#672709bafd845e35ab4dd32b8ccccae32d54d552"