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