summaryrefslogtreecommitdiff
path: root/frontend/app/config/navigation/transitions.js
diff options
context:
space:
mode:
authorAndrew <saintruler@gmail.com>2019-03-11 21:00:02 +0400
committerAndrew <saintruler@gmail.com>2019-03-11 21:00:02 +0400
commit7e7dd5244e8d26485ad7950a89c04c98c4fef83f (patch)
tree810730c4650392080fb87a78d3b527201e89fe4b /frontend/app/config/navigation/transitions.js
Initial commit/
Diffstat (limited to 'frontend/app/config/navigation/transitions.js')
-rw-r--r--frontend/app/config/navigation/transitions.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/frontend/app/config/navigation/transitions.js b/frontend/app/config/navigation/transitions.js
new file mode 100644
index 0000000..ff3d2fa
--- /dev/null
+++ b/frontend/app/config/navigation/transitions.js
@@ -0,0 +1,59 @@
+import {
+ Dimensions,
+ Platform,
+} from 'react-native';
+
+const { width } = Dimensions.get('window');
+
+const IosTransition = (index, position) => {
+ const inputRange = [index - 1, index, index + 0.99, index + 1];
+ const outputRange = [width, 0, -10, -10];
+
+ const translateY = 0;
+ const translateX = position.interpolate({
+ inputRange,
+ outputRange,
+ });
+
+ const opacity = position.interpolate({
+ inputRange,
+ outputRange: [0, 1, 1, 0],
+ });
+ return {
+ opacity,
+ transform: [{ translateX }, { translateY }],
+ };
+};
+
+const DroidTransition = (index, position) => {
+ const inputRange = [index - 1, index, index + 0.99, index + 1];
+
+ const opacity = position.interpolate({
+ inputRange,
+ outputRange: [0, 1, 1, 0],
+ });
+
+ const translateX = 0;
+ const translateY = position.interpolate({
+ inputRange,
+ outputRange: [50, 0, 0, 0],
+ });
+
+ return {
+ opacity,
+ transform: [{ translateX }, { translateY }],
+ };
+};
+
+function transition() {
+ return {
+ screenInterpolator: (sceneProps) => {
+ const { position, scene } = sceneProps;
+ const { index } = scene;
+ if (Platform.OS === 'ios') { return IosTransition(index, position); }
+ return DroidTransition(index, position);
+ },
+ };
+}
+
+export default transition;