Commit c00336ff authored by shiyunjie's avatar shiyunjie

首页布局

parent 3a92acea
......@@ -138,6 +138,8 @@ android {
}
dependencies {
implementation project(':react-native-svg')
implementation project(':react-native-fast-image')
implementation project(':react-native-gesture-handler')
implementation project(':lottie-react-native')
implementation project(':react-native-linear-gradient')
......
......@@ -3,6 +3,8 @@ package com.basicapp;
import android.app.Application;
import com.facebook.react.ReactApplication;
import com.horcrux.svg.SvgPackage;
import com.dylanvann.fastimage.FastImageViewPackage;
import com.swmansion.gesturehandler.react.RNGestureHandlerPackage;
import com.airbnb.android.react.lottie.LottiePackage;
import com.BV.LinearGradient.LinearGradientPackage;
......@@ -29,6 +31,8 @@ public class MainApplication extends Application implements ReactApplication {
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new SvgPackage(),
new FastImageViewPackage(),
new RNGestureHandlerPackage(),
new LottiePackage(),
new LinearGradientPackage(),
......
rootProject.name = 'BasicApp'
include ':react-native-svg'
project(':react-native-svg').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-svg/android')
include ':react-native-fast-image'
project(':react-native-fast-image').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-fast-image/android')
include ':react-native-gesture-handler'
project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-gesture-handler/android')
include ':lottie-react-native'
......
......@@ -43,6 +43,8 @@
2D16E6881FA4F8E400B85C8A /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D16E6891FA4F8E400B85C8A /* libReact.a */; };
2DCD954D1E0B4F2C00145EB5 /* BasicAppTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* BasicAppTests.m */; };
2DF0FFEE2056DD460020B375 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3EA31DF850E9000B6D8A /* libReact.a */; };
3C37EDB112D3473BA2E4E79A /* libFastImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CC30AA86C6184652B9FF0E5F /* libFastImage.a */; };
41053114C0E948A8BB86D6E0 /* libRNSVG-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 274496DAF7A748F5B9EF0D32 /* libRNSVG-tvOS.a */; };
465A4413D3ED482699A0A651 /* libRNDeviceInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E15869FA4AC41F5BE561452 /* libRNDeviceInfo.a */; };
5049979F956343A58ED88DD1 /* libRNSpringScrollView.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B4CEC7D8652E4A80BB0A6D75 /* libRNSpringScrollView.a */; };
511877E333E24A6A9690DB3F /* FontAwesome5_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 8A01206684554F25837ADFFE /* FontAwesome5_Regular.ttf */; };
......@@ -51,6 +53,7 @@
6068B983236A42738266D0CE /* libLottie.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CD923ED2B8C4C44B328B1B0 /* libLottie.a */; };
7D086754CFF647B296C82959 /* FontAwesome5_Brands.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 8BEF1FB779D54460BAA6C75D /* FontAwesome5_Brands.ttf */; };
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };
83FA0E6422CAE564000CDF1B /* libART.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 83FA0E2A22CAE546000CDF1B /* libART.a */; };
97D73CDBCBBF483C99E06DBA /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A45B683174C84617B17BFEB8 /* FontAwesome.ttf */; };
9BD4B34961424375BF4F1F92 /* libRNGestureHandler.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D2F86DBC4936427193CB045A /* libRNGestureHandler.a */; };
ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */; };
......@@ -65,6 +68,7 @@
E7E9E85166CA4272AB0CF4FE /* libBVLinearGradient.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 32F441FA26294BCD892AAA99 /* libBVLinearGradient.a */; };
ED297163215061F000B7C4FE /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED297162215061F000B7C4FE /* JavaScriptCore.framework */; };
ED2971652150620600B7C4FE /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED2971642150620600B7C4FE /* JavaScriptCore.framework */; };
F568EBF96A8C4A40B9DEE25F /* libRNSVG.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F9581CDB2494E3BB254A499 /* libRNSVG.a */; };
FA2C9359401649E0826A9E6E /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7913101660E946E686D0066E /* Zocial.ttf */; };
/* End PBXBuildFile section */
......@@ -419,6 +423,13 @@
remoteGlobalIDString = 64AA15081EF7F30100718508;
remoteInfo = "BVLinearGradient-tvOS";
};
83BE6C3822C859DB00366C0C /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 8052B4491B5547D9A29FFF0E /* FastImage.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = A287971D1DE0C0A60081BDFA;
remoteInfo = FastImage;
};
83F2776D22B25E860066BA73 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = DC7A0D31E6A74DA6B87DABB7 /* RNDeviceInfo.xcodeproj */;
......@@ -433,6 +444,41 @@
remoteGlobalIDString = E72EC1401F7ABB5A0001BC90;
remoteInfo = "RNDeviceInfo-tvOS";
};
83FA0E2922CAE546000CDF1B /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 83FA0E2422CAE546000CDF1B /* ART.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 0CF68AC11AF0540F00FF9E5C;
remoteInfo = ART;
};
83FA0E2B22CAE546000CDF1B /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 83FA0E2422CAE546000CDF1B /* ART.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 323A12871E5F266B004975B8;
remoteInfo = "ART-tvOS";
};
83FA0E3122CAE546000CDF1B /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 8052B4491B5547D9A29FFF0E /* FastImage.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = FD751C4D229EB44C002BE1F4;
remoteInfo = "FastImage-tvOS";
};
83FA0EB622CAEB4C000CDF1B /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 427E881842844FDA846425FD /* RNSVG.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 0CF68AC11AF0540F00FF9E5C;
remoteInfo = RNSVG;
};
83FA0EB822CAEB4C000CDF1B /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 427E881842844FDA846425FD /* RNSVG.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 94DDAC5C1F3D024300EED511;
remoteInfo = "RNSVG-tvOS";
};
ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */;
......@@ -465,6 +511,7 @@
146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = "<group>"; };
18EC90269FAE4C86A967E3D7 /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = "<group>"; };
1BEAC67A2E5441AA99121210 /* LottieReactNative.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = LottieReactNative.xcodeproj; path = "../node_modules/lottie-react-native/src/ios/LottieReactNative.xcodeproj"; sourceTree = "<group>"; };
274496DAF7A748F5B9EF0D32 /* libRNSVG-tvOS.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = "libRNSVG-tvOS.a"; sourceTree = "<group>"; };
280F628730954E9B898EE601 /* BVLinearGradient.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = BVLinearGradient.xcodeproj; path = "../node_modules/react-native-linear-gradient/BVLinearGradient.xcodeproj"; sourceTree = "<group>"; };
2D02E47B1E0B4A5D006451C7 /* BasicApp-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "BasicApp-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
2D02E4901E0B4A5D006451C7 /* BasicApp-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "BasicApp-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
......@@ -474,6 +521,7 @@
36D26F88173E4A3CBB54E3F0 /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialCommunityIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf"; sourceTree = "<group>"; };
3920430863AE49D79A6F7399 /* Foundation.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Foundation.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Foundation.ttf"; sourceTree = "<group>"; };
3A22FE26B235456F857E3688 /* RNGestureHandler.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNGestureHandler.xcodeproj; path = "../node_modules/react-native-gesture-handler/ios/RNGestureHandler.xcodeproj"; sourceTree = "<group>"; };
427E881842844FDA846425FD /* RNSVG.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNSVG.xcodeproj; path = "../node_modules/react-native-svg/ios/RNSVG.xcodeproj"; sourceTree = "<group>"; };
523991BB6CEE47A18F8A6B54 /* Octicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Octicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Octicons.ttf"; sourceTree = "<group>"; };
53BABCD1934644168BFE0209 /* Ionicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Ionicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf"; sourceTree = "<group>"; };
5CD923ED2B8C4C44B328B1B0 /* libLottie.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libLottie.a; sourceTree = "<group>"; };
......@@ -481,8 +529,11 @@
5F631E28FD6942C7A407CD4B /* Feather.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Feather.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Feather.ttf"; sourceTree = "<group>"; };
78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = "<group>"; };
7913101660E946E686D0066E /* Zocial.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Zocial.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Zocial.ttf"; sourceTree = "<group>"; };
7F9581CDB2494E3BB254A499 /* libRNSVG.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNSVG.a; sourceTree = "<group>"; };
8052B4491B5547D9A29FFF0E /* FastImage.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = FastImage.xcodeproj; path = "../node_modules/react-native-fast-image/ios/FastImage.xcodeproj"; sourceTree = "<group>"; };
8152F9826A9C45E1985E1CB9 /* libLottieReactNative.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libLottieReactNative.a; sourceTree = "<group>"; };
832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = "<group>"; };
83FA0E2422CAE546000CDF1B /* ART.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ART.xcodeproj; path = "../node_modules/react-native/Libraries/ART/ART.xcodeproj"; sourceTree = "<group>"; };
8A01206684554F25837ADFFE /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Regular.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf"; sourceTree = "<group>"; };
8BB06A9FC75847828D9E5BE1 /* libRNVectorIcons.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNVectorIcons.a; sourceTree = "<group>"; };
8BEF1FB779D54460BAA6C75D /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Brands.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf"; sourceTree = "<group>"; };
......@@ -494,6 +545,7 @@
B07B6BBF88EF441EB7E6EA69 /* RNSpringScrollView.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNSpringScrollView.xcodeproj; path = "../node_modules/react-native-spring-scrollview/ios/RNSpringScrollView.xcodeproj"; sourceTree = "<group>"; };
B4CEC7D8652E4A80BB0A6D75 /* libRNSpringScrollView.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNSpringScrollView.a; sourceTree = "<group>"; };
BDC32CC575074F1BB2B7F5EC /* Lottie.framework */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = wrapper.framework; name = Lottie.framework; path = System/Library/Frameworks/Lottie.framework; sourceTree = SDKROOT; };
CC30AA86C6184652B9FF0E5F /* libFastImage.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libFastImage.a; sourceTree = "<group>"; };
D2F86DBC4936427193CB045A /* libRNGestureHandler.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNGestureHandler.a; sourceTree = "<group>"; };
D9B6D714CCDB47ECBCB3505A /* AntDesign.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = AntDesign.ttf; path = "../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf"; sourceTree = "<group>"; };
DC7A0D31E6A74DA6B87DABB7 /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNDeviceInfo.xcodeproj; path = "../node_modules/react-native-device-info/ios/RNDeviceInfo.xcodeproj"; sourceTree = "<group>"; };
......@@ -539,6 +591,9 @@
6068B983236A42738266D0CE /* libLottie.a in Frameworks */,
12A3942C23004AF49A81C49F /* libLottieReactNative.a in Frameworks */,
9BD4B34961424375BF4F1F92 /* libRNGestureHandler.a in Frameworks */,
3C37EDB112D3473BA2E4E79A /* libFastImage.a in Frameworks */,
83FA0E6422CAE564000CDF1B /* libART.a in Frameworks */,
F568EBF96A8C4A40B9DEE25F /* libRNSVG.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -558,6 +613,7 @@
CF98CD1B1EC547B295ABD30E /* libRNVectorIcons-tvOS.a in Frameworks */,
538035DE777A4D39B3996895 /* libRNDeviceInfo-tvOS.a in Frameworks */,
DEC344B2599C4B40A000A35D /* libRNGestureHandler-tvOS.a in Frameworks */,
41053114C0E948A8BB86D6E0 /* libRNSVG-tvOS.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -726,6 +782,7 @@
832341AE1AAA6A7D00B99B32 /* Libraries */ = {
isa = PBXGroup;
children = (
83FA0E2422CAE546000CDF1B /* ART.xcodeproj */,
5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */,
146833FF1AC3E56700842450 /* React.xcodeproj */,
00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */,
......@@ -745,6 +802,8 @@
9E9FB8BA5F684112B34F24E8 /* Lottie.xcodeproj */,
1BEAC67A2E5441AA99121210 /* LottieReactNative.xcodeproj */,
3A22FE26B235456F857E3688 /* RNGestureHandler.xcodeproj */,
8052B4491B5547D9A29FFF0E /* FastImage.xcodeproj */,
427E881842844FDA846425FD /* RNSVG.xcodeproj */,
);
name = Libraries;
sourceTree = "<group>";
......@@ -772,6 +831,9 @@
8152F9826A9C45E1985E1CB9 /* libLottieReactNative.a */,
D2F86DBC4936427193CB045A /* libRNGestureHandler.a */,
317068659E2E4064BC378109 /* libRNGestureHandler-tvOS.a */,
CC30AA86C6184652B9FF0E5F /* libFastImage.a */,
7F9581CDB2494E3BB254A499 /* libRNSVG.a */,
274496DAF7A748F5B9EF0D32 /* libRNSVG-tvOS.a */,
);
name = "Recovered References";
sourceTree = "<group>";
......@@ -822,6 +884,15 @@
name = Products;
sourceTree = "<group>";
};
83BE6C3522C859DB00366C0C /* Products */ = {
isa = PBXGroup;
children = (
83BE6C3922C859DB00366C0C /* libFastImage.a */,
83FA0E3222CAE546000CDF1B /* libFastImage-tvOS.a */,
);
name = Products;
sourceTree = "<group>";
};
83CBB9F61A601CBA00E9B192 = {
isa = PBXGroup;
children = (
......@@ -858,6 +929,24 @@
name = Products;
sourceTree = "<group>";
};
83FA0E2522CAE546000CDF1B /* Products */ = {
isa = PBXGroup;
children = (
83FA0E2A22CAE546000CDF1B /* libART.a */,
83FA0E2C22CAE546000CDF1B /* libART-tvOS.a */,
);
name = Products;
sourceTree = "<group>";
};
83FA0EB222CAEB4C000CDF1B /* Products */ = {
isa = PBXGroup;
children = (
83FA0EB722CAEB4C000CDF1B /* libRNSVG.a */,
83FA0EB922CAEB4C000CDF1B /* libRNSVG-tvOS.a */,
);
name = Products;
sourceTree = "<group>";
};
9BD2B364A6B64B698C46E170 /* Resources */ = {
isa = PBXGroup;
children = (
......@@ -1001,10 +1090,18 @@
projectDirPath = "";
projectReferences = (
{
ProductGroup = 83FA0E2522CAE546000CDF1B /* Products */;
ProjectRef = 83FA0E2422CAE546000CDF1B /* ART.xcodeproj */;
},
{
ProductGroup = 8372B80022B3C3BB00CD0763 /* Products */;
ProjectRef = 280F628730954E9B898EE601 /* BVLinearGradient.xcodeproj */;
},
{
ProductGroup = 83BE6C3522C859DB00366C0C /* Products */;
ProjectRef = 8052B4491B5547D9A29FFF0E /* FastImage.xcodeproj */;
},
{
ProductGroup = 836D007122C6345500DC9A54 /* Products */;
ProjectRef = 9E9FB8BA5F684112B34F24E8 /* Lottie.xcodeproj */;
},
......@@ -1073,6 +1170,10 @@
ProjectRef = B07B6BBF88EF441EB7E6EA69 /* RNSpringScrollView.xcodeproj */;
},
{
ProductGroup = 83FA0EB222CAEB4C000CDF1B /* Products */;
ProjectRef = 427E881842844FDA846425FD /* RNSVG.xcodeproj */;
},
{
ProductGroup = 8355A87E22A8ECC900A4ECE5 /* Products */;
ProjectRef = 18EC90269FAE4C86A967E3D7 /* RNVectorIcons.xcodeproj */;
},
......@@ -1424,6 +1525,13 @@
remoteRef = 8372B80622B3C3BB00CD0763 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
83BE6C3922C859DB00366C0C /* libFastImage.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libFastImage.a;
remoteRef = 83BE6C3822C859DB00366C0C /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
83F2776E22B25E860066BA73 /* libRNDeviceInfo.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
......@@ -1438,6 +1546,41 @@
remoteRef = 83F2776F22B25E860066BA73 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
83FA0E2A22CAE546000CDF1B /* libART.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libART.a;
remoteRef = 83FA0E2922CAE546000CDF1B /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
83FA0E2C22CAE546000CDF1B /* libART-tvOS.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libART-tvOS.a";
remoteRef = 83FA0E2B22CAE546000CDF1B /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
83FA0E3222CAE546000CDF1B /* libFastImage-tvOS.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libFastImage-tvOS.a";
remoteRef = 83FA0E3122CAE546000CDF1B /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
83FA0EB722CAEB4C000CDF1B /* libRNSVG.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libRNSVG.a;
remoteRef = 83FA0EB622CAEB4C000CDF1B /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
83FA0EB922CAEB4C000CDF1B /* libRNSVG-tvOS.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libRNSVG-tvOS.a";
remoteRef = 83FA0EB822CAEB4C000CDF1B /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
......@@ -1607,6 +1750,8 @@
"$(SRCROOT)/../node_modules/lottie-ios/lottie-ios/Classes/**",
"$(SRCROOT)/../node_modules/lottie-react-native/src/ios/LottieReactNative",
"$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**",
"$(SRCROOT)/../node_modules/react-native-fast-image/ios/FastImage/**",
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
);
INFOPLIST_FILE = BasicAppTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
......@@ -1616,6 +1761,9 @@
"\"$(SRCROOT)/$(TARGET_NAME)/System/Library/Frameworks\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = (
"-ObjC",
......@@ -1641,6 +1789,8 @@
"$(SRCROOT)/../node_modules/lottie-ios/lottie-ios/Classes/**",
"$(SRCROOT)/../node_modules/lottie-react-native/src/ios/LottieReactNative",
"$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**",
"$(SRCROOT)/../node_modules/react-native-fast-image/ios/FastImage/**",
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
);
INFOPLIST_FILE = BasicAppTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
......@@ -1650,6 +1800,9 @@
"\"$(SRCROOT)/$(TARGET_NAME)/System/Library/Frameworks\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = (
"-ObjC",
......@@ -1676,6 +1829,8 @@
"$(SRCROOT)/../node_modules/lottie-ios/lottie-ios/Classes/**",
"$(SRCROOT)/../node_modules/lottie-react-native/src/ios/LottieReactNative",
"$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**",
"$(SRCROOT)/../node_modules/react-native-fast-image/ios/FastImage/**",
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
);
INFOPLIST_FILE = BasicApp/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
......@@ -1704,6 +1859,8 @@
"$(SRCROOT)/../node_modules/lottie-ios/lottie-ios/Classes/**",
"$(SRCROOT)/../node_modules/lottie-react-native/src/ios/LottieReactNative",
"$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**",
"$(SRCROOT)/../node_modules/react-native-fast-image/ios/FastImage/**",
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
);
INFOPLIST_FILE = BasicApp/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
......@@ -1739,6 +1896,8 @@
"$(SRCROOT)/../node_modules/lottie-ios/lottie-ios/Classes/**",
"$(SRCROOT)/../node_modules/lottie-react-native/src/ios/LottieReactNative",
"$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**",
"$(SRCROOT)/../node_modules/react-native-fast-image/ios/FastImage/**",
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
);
INFOPLIST_FILE = "BasicApp-tvOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
......@@ -1747,6 +1906,9 @@
"\"$(SRCROOT)/$(TARGET_NAME)/System/Library/Frameworks\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = (
"-ObjC",
......@@ -1781,6 +1943,8 @@
"$(SRCROOT)/../node_modules/lottie-ios/lottie-ios/Classes/**",
"$(SRCROOT)/../node_modules/lottie-react-native/src/ios/LottieReactNative",
"$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**",
"$(SRCROOT)/../node_modules/react-native-fast-image/ios/FastImage/**",
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
);
INFOPLIST_FILE = "BasicApp-tvOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
......@@ -1789,6 +1953,9 @@
"\"$(SRCROOT)/$(TARGET_NAME)/System/Library/Frameworks\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = (
"-ObjC",
......@@ -1822,6 +1989,8 @@
"$(SRCROOT)/../node_modules/lottie-ios/lottie-ios/Classes/**",
"$(SRCROOT)/../node_modules/lottie-react-native/src/ios/LottieReactNative",
"$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**",
"$(SRCROOT)/../node_modules/react-native-fast-image/ios/FastImage/**",
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
);
INFOPLIST_FILE = "BasicApp-tvOSTests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
......@@ -1830,6 +1999,9 @@
"\"$(SRCROOT)/$(TARGET_NAME)/System/Library/Frameworks\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = (
"-ObjC",
......@@ -1863,6 +2035,8 @@
"$(SRCROOT)/../node_modules/lottie-ios/lottie-ios/Classes/**",
"$(SRCROOT)/../node_modules/lottie-react-native/src/ios/LottieReactNative",
"$(SRCROOT)/../node_modules/react-native-gesture-handler/ios/**",
"$(SRCROOT)/../node_modules/react-native-fast-image/ios/FastImage/**",
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
);
INFOPLIST_FILE = "BasicApp-tvOSTests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
......@@ -1871,6 +2045,9 @@
"\"$(SRCROOT)/$(TARGET_NAME)/System/Library/Frameworks\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
OTHER_LDFLAGS = (
"-ObjC",
......
......@@ -2499,11 +2499,6 @@
"@types/yargs": "^12.0.9"
}
},
"@react-native-community/async-storage": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@react-native-community/async-storage/-/async-storage-1.5.0.tgz",
"integrity": "sha512-2yE4RzQ5IL+UTPhuMY0ykNRKHf1m90jOnmp8fcDPUun5U97cXlorjI4p66ovDgF0FuOv8ZpiUKvunGy3qqBxwg=="
},
"@react-native-community/cli": {
"version": "1.9.11",
"resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-1.9.11.tgz",
......@@ -4719,9 +4714,9 @@
}
},
"import-fresh": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz",
"integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz",
"integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==",
"dev": true,
"requires": {
"parent-module": "^1.0.0",
......@@ -4920,11 +4915,12 @@
}
},
"eslint-plugin-jsx-a11y": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.1.tgz",
"integrity": "sha512-cjN2ObWrRz0TTw7vEcGQrx+YltMvZoOEx4hWU8eEERDnBIU00OTq7Vr+jA7DFKxiwLNv4tTh5Pq2GUNEa8b6+w==",
"version": "6.2.3",
"resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz",
"integrity": "sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg==",
"dev": true,
"requires": {
"@babel/runtime": "^7.4.5",
"aria-query": "^3.0.0",
"array-includes": "^3.0.3",
"ast-types-flow": "^0.0.7",
......@@ -4932,7 +4928,7 @@
"damerau-levenshtein": "^1.0.4",
"emoji-regex": "^7.0.2",
"has": "^1.0.3",
"jsx-ast-utils": "^2.0.1"
"jsx-ast-utils": "^2.2.1"
}
},
"eslint-plugin-react": {
......@@ -9451,9 +9447,9 @@
}
},
"jsx-ast-utils": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.0.tgz",
"integrity": "sha512-yAmhGSzR7TsD0OQpu1AGLz8Bx84cxMqtgoJrufomY6BlveEDlREhvu1rea21936xbe5tlUh7IPda82m5ae0H8Q==",
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz",
"integrity": "sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ==",
"dev": true,
"requires": {
"array-includes": "^3.0.3",
......@@ -11484,14 +11480,14 @@
}
},
"react-native-fast-image": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/react-native-fast-image/-/react-native-fast-image-6.0.5.tgz",
"integrity": "sha512-xtEB/pA+jiJGdTi8eI7MKEV4cejqhf/ydt5r8EhU78YFDtppbxctNn8CBynNvlRpUjJIzVbVyggFxvZG6T2exQ=="
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/react-native-fast-image/-/react-native-fast-image-6.1.0.tgz",
"integrity": "sha512-ZfKNIqqed3AoY/S6ViBNG5PbaKWLHWukY3q6n6z7+CWgtibX+PxYX0rdMNQb+HLd1Sqd4/NsbrtyxCxUhVoA6Q=="
},
"react-native-gesture-handler": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-1.2.2.tgz",
"integrity": "sha512-dlgd8XMXI2Aymh/C3+/FR9wzVbA8ILuBPsi4JC+HxmlpcNVXfxwMOG8JDCenPzW0CTRkWJwoIMPm2Xj0MtnIYA==",
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-1.3.0.tgz",
"integrity": "sha512-ASRFIXBuKRvqlmwkWJhV8yP2dTpvcqVrLNpd7FKVBFHYWr6SAxjGyO9Ik8w1lAxDhMlRP2IcJ9p9eq5X2WWeLQ==",
"requires": {
"hoist-non-react-statics": "^2.3.1",
"invariant": "^2.2.2",
......@@ -11570,6 +11566,27 @@
"resolved": "https://registry.npmjs.org/react-native-status-bar-height/-/react-native-status-bar-height-2.3.1.tgz",
"integrity": "sha512-m9nGKYfFn6ljF1abafzF5cFaD9JCzXwj7kNE9CuF+g0TgtItH70eY2uHaCV9moENTftqd5XIS3Cx0mf4WfistA=="
},
"react-native-super-grid": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/react-native-super-grid/-/react-native-super-grid-3.0.7.tgz",
"integrity": "sha512-cjsEJ536kmWRv9UFjqer7vNLbmMYHetsOXSez8CREUknBP4z+wAUfejDwbUy/iyksK+vrQCII6dn+pUNiSkMxw==",
"requires": {
"prop-types": "^15.6.0"
}
},
"react-native-svg": {
"version": "9.5.1",
"resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-9.5.1.tgz",
"integrity": "sha512-cRGfomzG/5LEwuJ6ct3m5yccckeI9aj8BNYwDPVxOeJ84LuJuvk5OqcjlYNeEzOWmWiH+QrFXfpLH1ag04bUeQ=="
},
"react-native-swiper": {
"version": "1.5.14",
"resolved": "https://registry.npmjs.org/react-native-swiper/-/react-native-swiper-1.5.14.tgz",
"integrity": "sha512-Kn0fxKooN7Shwu1qJYHB+Y8ssXXnvrIwReHXU5jCdyYNfz2QbBv0Cv3sa2Mqzr+XgzORCFFIokc8uCCUITDrVA==",
"requires": {
"prop-types": "^15.5.10"
}
},
"react-native-tab-view": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/react-native-tab-view/-/react-native-tab-view-1.4.1.tgz",
......
var hello = require('./node_modules/react-native-update-mutlirn-hg/local-cli')
hello.run()
......@@ -9,7 +9,6 @@
"postinstall-devTools": "remotedev-debugger --hostname localhost --port 5678 --injectserver"
},
"dependencies": {
"@react-native-community/async-storage": "^1.4.0",
"axios": "^0.18.0",
"lodash": "^4.17.11",
"lottie-react-native": "^2.6.1",
......@@ -24,6 +23,9 @@
"react-native-largelist-v3": "^3.0.14",
"react-native-linear-gradient": "^2.5.4",
"react-native-spring-scrollview": "^2.0.22",
"react-native-super-grid": "^3.0.7",
"react-native-svg": "^9.5.1",
"react-native-swiper": "^1.5.14",
"react-native-update-mutlirn-hg": "^3.1.1",
"react-native-vector-icons": "^6.4.2",
"react-navigation": "^3.11.0",
......
/**
* @flow
*/
import React from 'react';
import { View } from 'react-native';
import FastImage from 'react-native-fast-image';
import { Avatar } from 'react-native-elements';
import Text from '../Text';
import { ENV, resourceURLMapping } from '../../utils/constants';
import BasicIcon from '../BasicIcon';
export function HomeHeader(props) {
return (
<View style={{
flexDirection: 'row',
alignItems: 'center',
height: 44,
width: global.SCREEN_WIDTH,
}}
>
<FastImage
style={{
width: 78,
height: 30,
marginLeft: 10,
}}
source={{
uri: `${resourceURLMapping[ENV]}logo_login_taiping.png`,
priority: FastImage.priority.normal,
}}
resizeMode={FastImage.resizeMode.stretch}
/>
<View
style={{
flex: 1,
height: 32,
borderRadius: 16,
marginHorizontal: 10,
backgroundColor: '#ECECF0',
justifyContent: 'center',
alignItems: 'center',
}}
>
<Text
style={{
color: '#8CA0BA',
fontSize: 14,
}}
>
{'搜索"保险服务"'}
</Text>
</View>
<View style={{
flexDirection: 'row',
justifyContent: 'flex-end',
marginRight: 10,
}}
>
<FastImage
style={{
width: 24,
height: 24,
marginRight: 10,
}}
source={{
uri: `${resourceURLMapping[ENV]}icon_message77.png`,
priority: FastImage.priority.normal,
}}
resizeMode={FastImage.resizeMode.stretch}
/>
</View>
</View>
);
}
export function UserPageHeader(props) {
return (
<View style={{
flexDirection: 'row',
alignItems: 'center',
height: 44,
width: global.SCREEN_WIDTH,
}}
>
<FastImage
style={{
width: 36,
height: 36,
marginHorizontal: 15,
borderRadius: 18,
}}
source={{
uri: `${resourceURLMapping[ENV]}icon_avatar_default.png`,
priority: FastImage.priority.normal,
}}
resizeMode={FastImage.resizeMode.stretch}
/>
<View
style={{
flex: 1,
height: 36,
flexDirection: 'column',
alignItems: 'flex-start',
}}
>
<Text
style={{
color: '#333',
fontSize: 14,
}}
>
{ props.phone }
</Text>
<View
style={{
flex: 1,
height: 18,
flexDirection: 'row',
alignItems: 'stretch',
}}
>
<FastImage
style={{
width: 68,
height: 16,
}}
source={{
uri: `${resourceURLMapping[ENV]}pic_user_dazhong_vip.png`,
priority: FastImage.priority.normal,
}}
resizeMode={FastImage.resizeMode.stretch}
/>
<View style={{ width: 10 }} />
<BasicIcon suite="Foundation" name="laptop" size={16} color={props.color} />
<View style={{ width: 10 }} />
<BasicIcon suite="Ionicons" name="ios-happy" size={16} color={props.color} />
</View>
</View>
<View style={{
flexDirection: 'row',
justifyContent: 'flex-end',
marginRight: 10,
}}
>
<FastImage
style={{
width: 24,
height: 24,
marginRight: 15,
}}
source={{
uri: `${resourceURLMapping[ENV]}icon_message77.png`,
priority: FastImage.priority.normal,
}}
resizeMode={FastImage.resizeMode.stretch}
/>
<BasicIcon suite="Foundation" name="widget" size={24} color="#606273" />
</View>
</View>
);
}
export default {
HomeHeader,
UserPageHeader,
};
/**
* @flow
*/
import React from 'react';
import SwipeView from 'react-native-swiper';
type Props = {
height: number,
width: number
}
function SwiperBanner(props:Props) {
console.log('SwiperBanner',props)
return (
<SwipeView
showsButtons={false}
autoplay
height={props.height}
width={props.width}
autoplayTimeout={5}
paginationStyle={{ bottom: 0 }}
>
{
props.children
}
</SwipeView>
);
}
export default SwiperBanner;
......@@ -8,18 +8,21 @@
*/
import React, { Component } from 'react';
import HeaderImageScrollView from 'react-native-image-header-scroll-view';
import { SpringScrollView } from 'react-native-spring-scrollview';
import { CommonLottieHeader } from 'react-native-spring-scrollview/Customize/CommonLottieHeader';
import CommonLottieFooter from 'react-native-spring-scrollview/Customize/CommonLottieFooter';
import { connect } from 'react-redux';
import { compose } from 'redux';
import {
StyleSheet,
View,
RefreshControl,
TouchableOpacity,
} from 'react-native';
import { connect } from 'react-redux';
import { compose } from 'redux';
import Text from '../../components/Text';
import { push } from '../../BasicNavigator/actions';
import { renderByType } from './renderUtil';
import { HomeHeader } from '../../components/HeaderView';
const data = require('./home.json');
type Props = {};
const styles = StyleSheet.create({
......@@ -27,66 +30,62 @@ const styles = StyleSheet.create({
flex: 1,
backgroundColor: '#F5FCFF',
},
titleContainer: {
flex: 1,
alignSelf: 'stretch',
justifyContent: 'flex-end',
alignItems: 'center'
},
imageTitle: {
color: 'white',
backgroundColor: 'transparent',
fontSize: 24
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
class NativeComponentList extends Component<Props> {
const step = 13;
class FramePage extends Component<Props> {
constructor(props) {
super(props);
this.state = {
count: step,
allLoaded: false,
};
this.scrollView = null;
}
_onRefresh = () => {
setTimeout(() => {
this.scrollView.endRefresh();
this.setState({ count: step, allLoaded: false });
}, 3000);
};
_onLoading = () => {
setTimeout(() => {
this.scrollView.endLoading();
this.setState(p => ({
count: p.count + step,
allLoaded: false,
}));
}, 3000);
};
render() {
return (
<View style={styles.container}>
<HeaderImageScrollView
maxHeight={200}
minHeight={50}
fadeOutForeground
overScrollMode="never"
overlayColor="red"
maxOverlayOpacity={0.4}
renderTouchableFixedForeground={() => (
<View style={{ height: 200, justifyContent: 'center', alignItems: 'center' }}>
<TouchableOpacity onPress={() => console.log('tap!!')} style={styles.button}>
<Text style={styles.buttonText}>Click Me!</Text>
</TouchableOpacity>
</View>
)}
scrollViewBackgroundColor="#ddddff"
refreshControl={
<RefreshControl
refreshing={false}
// onRefresh={this._onRefresh.bind(this)}
tintColor="red"
/>
}
renderForeground={() => (
<View style={styles.titleContainer}>
<Text style={styles.imageTitle}>Cat</Text>
</View>
)}
foregroundParallaxRatio={1}
<HomeHeader />
<SpringScrollView
ref={ref => (this.scrollView = ref)}
style={styles.container}
inverted={false}
onRefresh={this._onRefresh}
//onLoading={this._onLoading}
// allLoaded={this.state.allLoaded}
refreshHeader={CommonLottieHeader}
//loadingFooter={CommonLottieFooter}
>
<View style={{ height: 100, backgroundColor: '#4CAF50' }} />
<View style={{ height: 100, backgroundColor: '#F44336' }} />
<View style={{ height: 100, backgroundColor: '#009688' }} />
<View style={{ height: 100, backgroundColor: '#03A9F4' }} />
<View style={{ height: 100, backgroundColor: '#FF9800' }} />
<View style={{ height: 100, backgroundColor: '#673AB7' }} />
<View style={{ height: 100, backgroundColor: '#795548' }} />
<View style={{ height: 100, backgroundColor: '#FFEB3B' }} />
</HeaderImageScrollView>
{data.map((item, index) => (
renderByType(item.type)({
...item,
width: global.SCREEN_WIDTH,
})
))}
</SpringScrollView>
</View>
);
}
......@@ -98,5 +97,10 @@ function actionMapping(dispatch) {
push: compose(dispatch, push),
};
}
function propsMapping({ theme }) {
return {
theme,
};
}
export default connect(null, actionMapping)(NativeComponentList);
export default connect(propsMapping, actionMapping)(FramePage);
/**
* Sample React Native App
* https://github.com/facebook/react-native
......@@ -7,40 +8,118 @@
*/
import React, { Component } from 'react';
import { SpringScrollView } from 'react-native-spring-scrollview';
import { CommonLottieHeader } from 'react-native-spring-scrollview/Customize/CommonLottieHeader';
import { connect } from 'react-redux';
import { compose } from 'redux';
import FastImage from 'react-native-fast-image';
import {
StyleSheet,
View,
TouchableOpacity,
} from 'react-native';
import { connect } from 'react-redux';
import { compose } from 'redux';
import Text from '../../components/Text';
import BasicIcon from '../../components/BasicIcon';
import { push } from '../../BasicNavigator/actions';
import { renderByType } from './userRenderUtil';
import { UserPageHeader } from '../../components/HeaderView';
import { resourceURLMapping, ENV } from '../../utils/constants';
const data = require('./user.json');
type Props = {};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
class JSComponentList extends Component<Props> {
const step = 13;
class FramePage extends Component<Props> {
constructor(props) {
super(props);
this.state = {
count: step,
allLoaded: false,
};
this.scrollView = null;
}
_onRefresh = () => {
setTimeout(() => {
this.scrollView.endRefresh();
this.setState({ count: step, allLoaded: false });
}, 3000);
};
render() {
console.log('MainPage', this.props);
const { theme } = this.props;
return (
<View style={styles.container}>
<TouchableOpacity onPress={() => { this.props.push('JSPage', {test:1}); }}>
<Text style={styles.instructions}>JSComponentList</Text>
</TouchableOpacity>
<View style={[styles.container,{backgroundColor: 'white'}]}>
<UserPageHeader phone="138****8888" color={theme.ThemeColor} />
<SpringScrollView
ref={ref => (this.scrollView = ref)}
style={[styles.container,{backgroundColor: 'white'}]}
inverted={false}
onRefresh={this._onRefresh}
//onLoading={this._onLoading}
// allLoaded={this.state.allLoaded}
refreshHeader={CommonLottieHeader}
//loadingFooter={CommonLottieFooter}
>
<View style={{ marginLeft: 15 }}>
<FastImage
style={{
width: global.SCREEN_WIDTH - 30,
height: (global.SCREEN_WIDTH - 30) / 345 * 140,
}}
source={{
uri: `${resourceURLMapping[ENV]}pic_user_top_tpjb.png`,
priority: FastImage.priority.normal,
}}
resizeMode={FastImage.resizeMode.stretch}
/>
<View
style={{
width: global.SCREEN_WIDTH - 30,
height: (global.SCREEN_WIDTH - 30) / 345 * 120,
justifyContent: 'center',
alignItems: 'center',
position: 'absolute',
top: 0,
left: 0,
right: 0,
bottom: 0,
zIndex: 3,
}}
>
<Text style={{ color: 'white', fontSize: 14,}}>
太平金币
</Text>
<Text style={{ color: 'white',fontWeight: '400', fontSize: 40, }}>
1888
</Text>
<Text style={{ color: 'white', fontSize: 12, }}>
{'查看详情 >'}
</Text>
</View>
</View>
{data.map((item, index) => (
renderByType(item.type)({
...item,
width: global.SCREEN_WIDTH,
})
))}
</SpringScrollView>
</View>
);
}
......@@ -52,5 +131,10 @@ function actionMapping(dispatch) {
push: compose(dispatch, push),
};
}
function propsMapping({ theme }) {
return {
theme,
};
}
export default connect(null, actionMapping)(JSComponentList);
export default connect(propsMapping, actionMapping)(FramePage);
[
{
"type": 0,
"title": "",
"data": [
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/dawanqu1.png",
"tagUrl": "https://mp.weixin.qq.com/s/IUlnN-Yh12reG96WlMCCgQ",
"pageType": "HTML",
"authorization": "",
"login": "",
"title": "",
"detail": "",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/tuangou1.png",
"tagUrl": "http://mall.itaiping.com/itaiping-mobile/activityPage.html?activityIndex=0&activitySign=tuangou",
"pageType": "HTML",
"authorization": "",
"login": "1",
"title": "",
"detail": "login=1&webViewLogin=1",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/ttcjbanner.png",
"tagUrl": "34",
"pageType": "RN",
"authorization": "",
"login": "1",
"title": "",
"detail": "",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/banner04.jpg",
"tagUrl": "",
"pageType": "",
"authorization": "",
"login": "",
"title": "",
"detail": "",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
}
],
"icon": "",
"tagUrl": "",
"columnCount": "",
"delay": "",
"width": 355,
"height": 168
},
{
"type": 1,
"title": "",
"data": [
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/icon_service_wodebaodan.png",
"tagUrl": "InsuranceList",
"pageType": "native",
"authorization": "1",
"login": "1",
"title": "我的保单",
"detail": "menu=service",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/icon_service_baoan.png",
"tagUrl": "23",
"pageType": "RN",
"authorization": "",
"login": "1",
"title": "报案",
"detail": "menu=service",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/icon_service_toubaojincheng.png",
"tagUrl": "ClaimSearch",
"pageType": "native",
"authorization": "1",
"login": "1",
"title": "理赔查询",
"detail": "entr=renshou,caixian,yanglao,xianggang&menu=service",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/icon_service_shishidai.png",
"tagUrl": "22",
"pageType": "RN",
"authorization": "1",
"login": "1",
"title": "实时贷",
"detail": "menu=service&banner=http://58.49.129.4/static/rn/src/img/pic_shishidai_banner2.png&content=借款人(保险服务密码所有人)以在太平人寿保险有限公司所持有的可借款保险合同的现金价值为质,同意开通“实时货”业务并在“实时货”业务有效期内可向保险公司申请借、还款。\n注:货款时,仅支持投、被保人均为本人及投保人为本人、协议签订及申请借款时被保人为未成年人的保单。\n",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/icon_service_huizhihuifang.png",
"tagUrl": "Receipt",
"pageType": "native",
"authorization": "1",
"login": "1",
"title": "寿险电子保单",
"detail": "menu=service",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/icon_service_baodanxuqijiaofei.png",
"tagUrl": "RenewalPolicy",
"pageType": "native",
"authorization": "1",
"login": "1",
"title": "保单续期缴费",
"detail": "menu=service",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/icon_service_wodebaozhang.png",
"tagUrl": "AssetList",
"pageType": "native",
"authorization": "1",
"login": "1",
"title": "我的养老保障",
"detail": "menu=service",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/icon_service_tuanxianlipeishenqing.png",
"tagUrl": "21",
"pageType": "RN",
"authorization": "1",
"login": "1",
"title": "团险理赔申请",
"detail": "menu=service",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
}
],
"icon": "",
"tagUrl": "",
"columnCount": "",
"delay": "",
"width": 84,
"height": 64
},
{
"type": 2,
"title": "活动",
"data": [
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/pic_banner_activity_invite6.png",
"tagUrl": "29",
"pageType": "RN",
"authorization": "",
"login": "1",
"title": "邀请有礼",
"detail": "邀好友,享厚礼,成功邀请好友注册太平通app即可获金币哦!",
"titleColor": "#333333",
"detailColor": "#999999",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/zhouzhoule.png",
"tagUrl": "34",
"pageType": "RN",
"authorization": "",
"login": "1",
"title": "周周乐",
"detail": "万元豪礼周周乐",
"titleColor": "#333333",
"detailColor": "#999999",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/pic_banner_activity_running6.png",
"tagUrl": "30",
"pageType": "RN",
"authorization": "",
"login": "1",
"title": "健步行",
"detail": "您的健康运动专家,行无止境,乐享生活,从你我做起!",
"titleColor": "#333333",
"detailColor": "#999999",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/qiandaoyoujiang.png",
"tagUrl": "26",
"pageType": "RN",
"authorization": "",
"login": "1",
"title": "签到有礼",
"detail": "每日签到集金币,连续签到,还可获得额外奖励!",
"titleColor": "#333333",
"detailColor": "#999999",
"badge": "",
"icon": ""
}
],
"tagUrl": "",
"icon": "",
"columnCount": "",
"delay": "",
"width": 192,
"height": 108
},
{
"type": 3,
"title": "增值服务",
"data": [
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/pic_home_shop_huiyuan2.png",
"tagUrl": "http://sit1.tp95589.com/healthCenterWeb/#/index?firstVC=1",
"pageType": "HTML",
"authorization": "",
"login": "1",
"title": "",
"detail": "login=1&webViewLogin=1",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/pic_home_shop_haiwai2.png",
"tagUrl": "http://smarket.tp95589.com/itaiping-mobile/voucherCenter/index?firstVC=1",
"pageType": "HTML",
"authorization": "",
"login": "1",
"title": "",
"detail": "login=1&webViewLogin=1",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/pic_home_shop_fupin2.png",
"tagUrl": "http://smarket.tp95589.com/itaiping-mobile/scoreService.html?firstVC=1",
"pageType": "HTML",
"authorization": "",
"login": "1",
"title": "",
"detail": "login=1&webViewLogin=1",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
}
],
"tagUrl": "",
"icon": "",
"columnCount": "",
"delay": "login=1&webViewLogin=1",
"width": 122,
"height": 130
}
]
/**
* @flow
*/
import React from 'react';
import { View, ScrollView,
} from 'react-native';
import FastImage from 'react-native-fast-image';
import { FlatGrid } from 'react-native-super-grid';
import Text from '../../components/Text';
import SwiperView from '../../components/Swiper';
/**
*
首页
type 0 轮播图
type 1 九宫格
type 2 活动
type 3 商品
服务
type 4 最近使用
type 5 标题
type 6 九宫格
type 7 图片展示
type 8 公司名字九宫格
type 9 轮播图
我的
type 10 3列九宫格
type 11 带标题4列的九宫格
type 12 icon+title >
* @type {number}
*/
const BANNER = 0;
const GRID = 1;
const ACTIVITY = 2;
const EXTRASRV = 3;
export function swiperItem(data) {
const swiperHeight = data.width / 2.7;
console.log('width:', data.width, swiperHeight);
return (
data.data.map((item, index) => (
<View
key={`${item.imgUrl}${index}`}
style={{
width: data.width,
height: swiperHeight,
paddingHorizontal: 10,
paddingTop: 10,
}}
>
<FastImage
style={{ width: data.width - 20, height: swiperHeight - 10 }}
source={{
uri: item.imgUrl,
priority: FastImage.priority.normal,
}}
resizeMode={FastImage.resizeMode.stretch}
/>
</View>
))
);
}
export function renderBanner(props) {
console.log('renderBanner', props);
return (
<View
key="SwiperView"
style={{
height: props.height,
}}
>
<SwiperView
height={props.height}
width={props.width}
>
{swiperItem(props)}
</SwiperView>
</View>
);
}
export function renderGrid(props) {
const gridwidth = ((props.width) / 4);
console.log('renderGrid:', gridwidth);
return (
<FlatGrid
itemDimension={gridwidth}
items={props.data}
spacing={0}
renderItem={({ item,index }) => (
<View
key={`${index}${item.imgUrl}`}
style={{
width: gridwidth - 1,
justifyContent: 'center',
alignItems: 'center',
marginVertical: 10,
}}
>
<FastImage
style={{ width: 36, height: 36 }}
source={{
uri: item.imgUrl,
priority: FastImage.priority.normal,
}}
resizeMode={FastImage.resizeMode.stretch}
/>
<Text
style={{
fontSize:14,
color:'#333',
marginTop:5,
}}
>
{item.title}
</Text>
</View>
)}
/>
);
}
export function activityItem(item) {
return (
<View
style={{
width: 192,
alignItems: 'stretch',
marginLeft: 10,
}}
>
<FastImage
style={{ width: 192, height: 108 }}
source={{
uri: item.imgUrl,
priority: FastImage.priority.normal,
}}
resizeMode={FastImage.resizeMode.stretch}
/>
<Text
style={{
fontSize: 16,
marginTop: 8,
fontColor: '#20253C',
}}
>
{item.title}
</Text>
<Text
style={{
fontSize: 14,
marginVertical: 8,
color: item.detailColor,
}}
numberOfLines={2}
>
{item.detail}
</Text>
</View>
);
}
export function renderTitle(title,marginLeft?) {
return (
<View>
<Text
style={{
fontSize: 18,
marginLeft: marginLeft || 10,
marginTop: 10,
fontColor: '#20253C',
}}
>
{title}
</Text>
</View>
);
}
export function renderActivity(props) {
return (
<View>
{
renderTitle(props.title)
}
<ScrollView
style={{
marginVertical: 14,
width: props.width,
height: 176,
}}
horizontal
showsHorizontalScrollIndicator={false}
>
{props.data.map((item, index) => (
activityItem(item)
))
}
</ScrollView>
</View>
);
}
export function renderExtraSrv(props) {
return (
<View>
{
renderTitle(props.title)
}
<ScrollView
style={{
marginVertical: 14,
width: props.width,
}}
horizontal
showsHorizontalScrollIndicator={false}
>
{props.data.map((item, index) => (
<FastImage
style={{
width: 122,
height: 130,
marginLeft: 10,
}}
source={{
uri: item.imgUrl,
priority: FastImage.priority.normal,
}}
resizeMode={FastImage.resizeMode.stretch}
/>
))
}
</ScrollView>
</View>
);
}
export function renderByType(type) {
switch (type) {
case BANNER:
return renderBanner;
case GRID:
return renderGrid;
case ACTIVITY:
return renderActivity;
case EXTRASRV:
return renderExtraSrv;
default:
return () => {
};
}
}
export default {};
[
{
"type": 10,
"title": "",
"data": [
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/icon_bd_baozhangzhong3.png",
"tagUrl": "InsuranceList",
"pageType": "native",
"authorization":"1",
"login":"1",
"title": "保障中",
"detail": "",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/icon_bd_yizhongzhi3.png",
"tagUrl": "InsuranceList",
"pageType": "native",
"authorization":"1",
"login":"1",
"title": "已终止",
"detail": "",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/icon_sc_wodebaodan3.png",
"tagUrl": "InsuranceList",
"pageType": "native",
"authorization":"1",
"login":"1",
"title": "我的保单",
"detail": "",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/icon_sc_gouwuche3.png",
"tagUrl": "http://smarket.tp95589.com/itaiping-mobile/myCart?firstVC=1",
"pageType": "HTML",
"authorization":"",
"login":"1",
"title": "购物车",
"detail": "login=1&webViewLogin=1",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/icon_sc_daifukuan3.png",
"tagUrl": "http://itaiping.tp95589.com/mobile/userCenter/myOrder.html?status=1&firstVC=1",
"pageType": "HTML",
"authorization":"",
"login":"1",
"title": "待付款",
"detail": "login=1&webViewLogin=1",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/icon_sc_dingdan3.png",
"tagUrl": "http://itaiping.tp95589.com/mobile/userCenter/myOrder.html?firstVC=1",
"pageType": "HTML",
"authorization":"",
"login":"1",
"title": "商城订单",
"detail": "login=1&webViewLogin=1",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
}
],
"tagUrl": "",
"icon": "",
"columnCount": "",
"delay": "",
"width": 115,
"height": 76
},
{
"type": 11,
"title": "会员权益",
"data": [
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/icon_vip_task3.png",
"tagUrl": "24",
"pageType": "RN",
"authorization":"",
"login":"1",
"title": "金币任务",
"detail": "",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/icon_vip_coupon3.png",
"tagUrl": "MyCoupon",
"pageType": "native",
"authorization":"",
"login":"1",
"title": "我的优惠券",
"detail": "tagUrl=http://smarket.tp95589.com/marketing-mobile/mobile/couponCenter?channel=app",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/icon_vip_invite3.png",
"tagUrl": "29",
"pageType": "RN",
"authorization":"",
"login":"1",
"title": "邀请有礼",
"detail": "",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/yueyuechoujiang.png",
"tagUrl": "34",
"pageType": "RN",
"authorization":"",
"login":"1",
"title": "周周乐",
"detail": "",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
}
],
"tagUrl": "",
"icon": "",
"columnCount": "",
"delay": "",
"width": 86,
"height": 76
},
{
"type": 12,
"title": "",
"data": [
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/icon_mine_conacts3.png",
"tagUrl": "PersonInfo",
"pageType": "native",
"authorization":"",
"login":"1",
"title": "个人信息",
"detail": "",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/icon_mine_safe3.png",
"tagUrl": "SecurityCenter",
"pageType": "native",
"authorization":"",
"login":"1",
"title": "安全中心",
"detail": "",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/icon_mine_information3.png",
"tagUrl": "Feedback",
"pageType": "native",
"authorization":"",
"login":"1",
"title": "问题反馈",
"detail": "",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
},
{
"imgUrl": "http://58.49.129.4/static/rn/src/img/icon_mine_information3.png",
"tagUrl": "HelpCenter",
"pageType": "native",
"authorization":"",
"login":"1",
"title": "帮助中心",
"detail": "",
"titleColor": "#333333",
"detailColor": "",
"badge": "",
"icon": ""
}
],
"tagUrl": "",
"icon": "",
"columnCount": "",
"delay": "",
"width": 375,
"height": 50
}
]
/**
* @flow
*/
import React from 'react';
import {
View,
} from 'react-native';
import { ListItem } from 'react-native-elements';
import FastImage from 'react-native-fast-image';
import { FlatGrid } from 'react-native-super-grid';
import Text from '../../components/Text';
import { renderTitle } from './renderUtil';
import BasicIcon from '../../components/BasicIcon';
/**
*
首页
type 0 轮播图
type 1 九宫格
type 2 活动
type 3 商品
服务
type 4 最近使用
type 5 标题
type 6 九宫格
type 7 图片展示
type 8 公司名字九宫格
type 9 轮播图
我的
type 10 3列九宫格
type 11 带标题4列的九宫格
type 12 icon+title >
* @type {number}
*/
const THREE = 10;
const GRID = 11;
const TABLE = 12;
const marginLeft = 10;
function renderGrid(props) {
const count = props.count || 4;
const gridwidth = ((props.width - marginLeft * 2) / count);
return (
<View
key={`user${count}columnGrid`}
style={{
marginHorizontal: marginLeft,
borderRadius: 5,
backgroundColor: 'white',
elevation: 20,
shadowOffset: { width: 0, height: 0 },
shadowColor: '#D0DBFF',
shadowOpacity: 1,
shadowRadius: 5,
marginTop: props.marginTop || 10,
marginBottom: props.marginBottom || 10,
}}
>
<FlatGrid
itemDimension={gridwidth}
items={props.data}
spacing={0}
renderItem={({ item, index }) => (
<View
key={`${index}${item.imgUrl}`}
style={{
width: gridwidth - 1,
justifyContent: 'center',
alignItems: 'center',
marginVertical: 10,
}}
>
<FastImage
style={{ width: 32, height: 32 }}
source={{
uri: item.imgUrl,
priority: FastImage.priority.normal,
}}
resizeMode={FastImage.resizeMode.stretch}
/>
<Text
style={{
marginTop: 5,
color: '#333',
fontSize: 12,
}}
>
{item.title}
</Text>
</View>
)}
/>
</View>
);
}
function render3Column(props) {
return renderGrid({ ...props, count: 3, marginTop: -1 });
}
function render4Column(props) {
return (
<View>
<View style={{ height: 10, backgroundColor: '#F4F5F5' }} />
{
renderTitle(props.title, marginLeft)
}
{
renderGrid(props)
}
</View>
);
}
function renderTable(props) {
return (
<View>
{
props.data.map((item, i) => (
<ListItem
containerStyle={{borderBottomWidth: 0.3, borderBottomColor:'#ccc'}}
key={`renderTable${i}`}
title={item.title}
titleStyle={{ color: '#666', fontSize: 14 }}
leftElement={(
<FastImage
style={{ width: 24, height: 24 }}
source={{
uri: item.imgUrl,
priority: FastImage.priority.normal,
}}
resizeMode={FastImage.resizeMode.stretch}
/>
)}
rightElement={(
<BasicIcon
suite="Ionicons"
name="ios-arrow-forward"
size={16}
color="#666"
/>
)}
/>
))
}
</View>
);
}
export function renderByType(type) {
switch (type) {
case THREE:
return render3Column;
case GRID:
return render4Column;
case TABLE:
return renderTable;
default:
return () => {
};
}
}
export default {};
/**
* Sample React Native App
* https://github.com/facebook/react-native
*
* @format
* @flow
*/
import React, { Component } from 'react';
import HeaderImageScrollView from 'react-native-image-header-scroll-view';
import {
StyleSheet,
View,
RefreshControl,
TouchableOpacity,
} from 'react-native';
import { connect } from 'react-redux';
import { compose } from 'redux';
import Text from '../../components/Text';
import { push } from '../../BasicNavigator/actions';
type Props = {};
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#F5FCFF',
},
titleContainer: {
flex: 1,
alignSelf: 'stretch',
justifyContent: 'flex-end',
alignItems: 'center'
},
imageTitle: {
color: 'white',
backgroundColor: 'transparent',
fontSize: 24
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
class ImageHeaderScrollView extends Component<Props> {
render() {
return (
<View style={styles.container}>
<HeaderImageScrollView
maxHeight={200}
minHeight={50}
fadeOutForeground
overScrollMode="never"
overlayColor="red"
maxOverlayOpacity={0.4}
renderTouchableFixedForeground={() => (
<View style={{ height: 200, justifyContent: 'center', alignItems: 'center' }}>
<TouchableOpacity onPress={() => console.log('tap!!')} style={styles.button}>
<Text style={styles.buttonText}>Click Me!</Text>
</TouchableOpacity>
</View>
)}
scrollViewBackgroundColor="#ddddff"
refreshControl={
<RefreshControl
refreshing={false}
// onRefresh={this._onRefresh.bind(this)}
tintColor="red"
/>
}
renderForeground={() => (
<View style={styles.titleContainer}>
<Text style={styles.imageTitle}>Cat</Text>
</View>
)}
foregroundParallaxRatio={1}
>
<View style={{ height: 100, backgroundColor: '#4CAF50' }} />
<View style={{ height: 100, backgroundColor: '#F44336' }} />
<View style={{ height: 100, backgroundColor: '#009688' }} />
<View style={{ height: 100, backgroundColor: '#03A9F4' }} />
<View style={{ height: 100, backgroundColor: '#FF9800' }} />
<View style={{ height: 100, backgroundColor: '#673AB7' }} />
<View style={{ height: 100, backgroundColor: '#795548' }} />
<View style={{ height: 100, backgroundColor: '#FFEB3B' }} />
</HeaderImageScrollView>
</View>
);
}
}
function actionMapping(dispatch) {
return {
push: compose(dispatch, push),
};
}
export default connect(null, actionMapping)(ImageHeaderScrollView);
/**
* Sample React Native App
* https://github.com/facebook/react-native
*
* @format
* @flow
*/
import React from 'react';
import { connect } from 'react-redux';
import { compose } from 'redux';
import Svg, {
Defs,
RadialGradient,
Stop,
Ellipse,
Circle,
Rect,
G
} from 'react-native-svg';
import {
View,
ScrollView,
} from 'react-native';
import { push } from '../../BasicNavigator/actions';
import NavigationBar from '../../components/NavigationBar';
import BackButton from '../../components/BackButton';
import Styles from '../../theme/Styles';
type
Props = {
};
function shadowPage(props:Props) {
return (
<View style={Styles.container}>
<NavigationBar
title="阴影"
left={<BackButton />}
/>
<ScrollView>
<View style={{ alignItems: 'center' }}>
<Svg
style={{ marginHorizontal: 25, top: -6 }}
height="24"
width={global.SCREEN_WIDTH - 50}
>
<Defs>
<RadialGradient
id="grad"
cx={global.SCREEN_WIDTH / 2 - 25}
cy="12"
rx="170"
ry="13"
fx={`${global.SCREEN_WIDTH / 2 - 25}`}
fy="12"
gradientUnits="userSpaceOnUse"
>
<Stop
offset="0"
stopColor="#ddd"
stopOpacity="1"
/>
<Stop
offset="1"
stopColor="#F5FCFF"
stopOpacity="1"
/>
</RadialGradient>
</Defs>
<Ellipse cx={global.SCREEN_WIDTH / 2 - 25} cy="12" rx="170" ry="13" fill="url(#grad)" />
</Svg>
</View>
</ScrollView>
</View>
);
}
function actionMapping(dispatch) {
return {
pushTo: compose(dispatch, push),
};
}
function propsMapping({ theme }) {
return {
theme,
};
}
export default connect(propsMapping, actionMapping)(shadowPage);
......@@ -16,9 +16,12 @@ import {
import { WaterfallList } from 'react-native-largelist-v3';
import { compose } from 'redux';
import { connect } from 'react-redux';
import FastImage from 'react-native-fast-image';
import { push } from '../../BasicNavigator/actions';
import NavigationBar from '../../components/NavigationBar';
import BackButton from '../../components/BackButton';
import { ENV, resourceURLMapping } from '../../utils/constants';
const cookData = require('./data.json').data.list;
......@@ -38,7 +41,16 @@ const styles = StyleSheet.create({
class WaterList extends Component<Props> {
state = { data: [...cookData, ...cookData, ...cookData, ...cookData, ...cookData] };
_renderItem = item => <Image source={{ uri: item.showimg }} style={{ flex: 1, margin: 5 }} />;
_renderItem = item => (
<FastImage
style={{ flex: 1, margin: 5 }}
source={{
uri: item.showimg,
priority: FastImage.priority.normal,
}}
resizeMode={FastImage.resizeMode.stretch}
/>
);
render() {
return (
......
///**
// * @flow
// * Created by shiyunjie on 2018/8/13.
// */
//import { System } from './index';
//
//const base = {
// // baseURL: System.iOS ? 'http://localhost:3000/api' : 'http://192.168.31.236:3000/api',
//
// // baseURL:iOS?'http://localhost:1234/api':'http://10.0.2.2:1234/api',
//
// // baseURL:!iOS?'http://localhost:1234/api':'http://172.16.17.61:1234/api',
//
// // baseURL :__DEV__ ? iOS?'http://localhost:3000/api':'http://172.16.17.11:3000/api' : 'http://shitu.leanapp.cn/api'
// // baseURL: 'http://shitu.leanapp.cn/api',
// baseURL: 'http://127.0.0.1:7001'
//};
//
//const ApiConfig = {
// api: {
// userToken: base.baseURL + '/userToken',
// shitu: {
// detailURL: base.baseURL + '/detailUrl'
// },
// gank: {
// listData: base.baseURL + '/gank/listData'
// },
// news: {
// list: base.baseURL + '/news'
// },
// user: {
// login: base.baseURL + '/user/login'
// },
// qiniu: {
// upLoadToken: base.baseURL + '/uploadToken'
// },
// test: {
// test: base.baseURL + '/test'
// }
// },
// qiniu: {
// // upload: 'http://upload-z2.qiniu.com';
// // upload: 'http://up-z2.qiniup.com',
// upload: 'http://up-z0.qiniup.com'
// }
//};
//
//export { ApiConfig };
{
"ios": {
"binary": "1.0.4",
"url": "https://fir.im/f9ay",
"patch":"http://192.168.3.13/IXX/_iOSPPK"
},
"android": {
"binary": "1.0.4",
"url": "https://fir.im/qbsy",
"patch":"http://192.168.3.13/_androidPPK"
},
"buildDate":"_buildDate",
"buildBy":"_buildBy"
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment