|
|
@@ -9,6 +9,7 @@ import com.reactnativenavigation.params.ActivityParams;
|
|
9
|
9
|
import com.reactnativenavigation.params.ScreenParams;
|
|
10
|
10
|
import com.reactnativenavigation.params.TitleBarButtonParams;
|
|
11
|
11
|
import com.reactnativenavigation.params.TitleBarLeftButtonParams;
|
|
|
12
|
+import com.reactnativenavigation.screens.ScreenAnimator;
|
|
12
|
13
|
import com.reactnativenavigation.screens.ScreenStack;
|
|
13
|
14
|
import com.reactnativenavigation.views.BottomTabs;
|
|
14
|
15
|
|
|
|
@@ -24,6 +25,7 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
|
|
24
|
25
|
private BottomTabs bottomTabs;
|
|
25
|
26
|
private ScreenStack[] screenStacks;
|
|
26
|
27
|
private int currentStackIndex = 0;
|
|
|
28
|
+ private ScreenAnimator screenAnimator;
|
|
27
|
29
|
|
|
28
|
30
|
public BottomTabsLayout(AppCompatActivity activity, ActivityParams params) {
|
|
29
|
31
|
super(activity);
|
|
|
@@ -35,6 +37,7 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
|
|
35
|
37
|
|
|
36
|
38
|
private void createLayout() {
|
|
37
|
39
|
createBottomTabs();
|
|
|
40
|
+ createScreenAnimator();
|
|
38
|
41
|
addBottomTabsToScreen();
|
|
39
|
42
|
addScreenStacks();
|
|
40
|
43
|
showInitialScreenStack();
|
|
|
@@ -47,7 +50,7 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
|
|
47
|
50
|
}
|
|
48
|
51
|
|
|
49
|
52
|
private void createAndAddScreenStack(int position) {
|
|
50
|
|
- ScreenStack newStack = new ScreenStack(activity, params.tabParams.get(position), this);
|
|
|
53
|
+ ScreenStack newStack = new ScreenStack(activity, params.tabParams.get(position), this, screenAnimator);
|
|
51
|
54
|
screenStacks[position] = newStack;
|
|
52
|
55
|
newStack.setVisibility(INVISIBLE);
|
|
53
|
56
|
addScreenStack(newStack);
|
|
|
@@ -70,6 +73,10 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
|
|
70
|
73
|
bottomTabs.addTabs(params.tabParams, this);
|
|
71
|
74
|
}
|
|
72
|
75
|
|
|
|
76
|
+ private void createScreenAnimator() {
|
|
|
77
|
+ screenAnimator = new ScreenAnimator(bottomTabs);
|
|
|
78
|
+ }
|
|
|
79
|
+
|
|
73
|
80
|
private void addBottomTabsToScreen() {
|
|
74
|
81
|
LayoutParams lp = new LayoutParams(MATCH_PARENT, WRAP_CONTENT);
|
|
75
|
82
|
lp.addRule(ALIGN_PARENT_BOTTOM);
|
|
|
@@ -88,7 +95,7 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
|
|
88
|
95
|
@Override
|
|
89
|
96
|
public boolean onBackPressed() {
|
|
90
|
97
|
if (getCurrentScreenStack().canPop()) {
|
|
91
|
|
- getCurrentScreenStack().pop();
|
|
|
98
|
+ getCurrentScreenStack().pop(screenAnimator);
|
|
92
|
99
|
setBottomTabsStyleFromCurrentScreen();
|
|
93
|
100
|
return true;
|
|
94
|
101
|
} else {
|
|
|
@@ -130,19 +137,19 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
|
|
130
|
137
|
|
|
131
|
138
|
@Override
|
|
132
|
139
|
public void push(ScreenParams screenParams) {
|
|
133
|
|
- getCurrentScreenStack().push(screenParams);
|
|
|
140
|
+ getCurrentScreenStack().push(screenAnimator, screenParams);
|
|
134
|
141
|
bottomTabs.setStyleFromScreen(screenParams.styleParams);
|
|
135
|
142
|
}
|
|
136
|
143
|
|
|
137
|
144
|
@Override
|
|
138
|
145
|
public void pop(ScreenParams screenParams) {
|
|
139
|
|
- getCurrentScreenStack().pop();
|
|
|
146
|
+ getCurrentScreenStack().pop(screenAnimator);
|
|
140
|
147
|
setBottomTabsStyleFromCurrentScreen();
|
|
141
|
148
|
}
|
|
142
|
149
|
|
|
143
|
150
|
@Override
|
|
144
|
151
|
public void popToRoot(ScreenParams params) {
|
|
145
|
|
- getCurrentScreenStack().popToRoot();
|
|
|
152
|
+ getCurrentScreenStack().popToRoot(screenAnimator);
|
|
146
|
153
|
setBottomTabsStyleFromCurrentScreen();
|
|
147
|
154
|
}
|
|
148
|
155
|
|
|
|
@@ -152,7 +159,7 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
|
|
152
|
159
|
currentScreenStack.destroy();
|
|
153
|
160
|
removeView(currentScreenStack);
|
|
154
|
161
|
|
|
155
|
|
- ScreenStack newStack = new ScreenStack(activity, params, this);
|
|
|
162
|
+ ScreenStack newStack = new ScreenStack(activity, params, this, screenAnimator);
|
|
156
|
163
|
screenStacks[currentStackIndex] = newStack;
|
|
157
|
164
|
addView(newStack, 0, new RelativeLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT));
|
|
158
|
165
|
|
|
|
@@ -198,7 +205,7 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
|
|
198
|
205
|
@Override
|
|
199
|
206
|
public boolean onTitleBarBackPress() {
|
|
200
|
207
|
if (getCurrentScreenStack().canPop()) {
|
|
201
|
|
- getCurrentScreenStack().pop();
|
|
|
208
|
+ getCurrentScreenStack().pop(screenAnimator);
|
|
202
|
209
|
setBottomTabsStyleFromCurrentScreen();
|
|
203
|
210
|
return true;
|
|
204
|
211
|
}
|