| 
				
			 | 
			
			
				@@ -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
			 | 
			
			
				         } 
			 |