react-native-navigation的迁移库

SingleScreenActivity.java 3.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package com.reactnativenavigation.activities;
  2. import android.widget.FrameLayout;
  3. import com.reactnativenavigation.R;
  4. import com.reactnativenavigation.core.RctManager;
  5. import com.reactnativenavigation.core.objects.Drawer;
  6. import com.reactnativenavigation.core.objects.Screen;
  7. import com.reactnativenavigation.utils.StyleHelper;
  8. import com.reactnativenavigation.views.RnnToolBar;
  9. import com.reactnativenavigation.views.ScreenStack;
  10. public class SingleScreenActivity extends BaseReactActivity {
  11. public static final String DRAWER_PARAMS = "drawerParams";
  12. public static final String EXTRA_SCREEN = "extraScreen";
  13. private ScreenStack mScreenStack;
  14. private String mNavigatorId;
  15. @Override
  16. protected void handleOnCreate() {
  17. super.handleOnCreate();
  18. mReactInstanceManager = RctManager.getInstance().getReactInstanceManager();
  19. setContentView(R.layout.single_screen_activity);
  20. mToolbar = (RnnToolBar) findViewById(R.id.toolbar);
  21. final Screen screen = (Screen) getIntent().getSerializableExtra(EXTRA_SCREEN);
  22. final Drawer drawer = (Drawer) getIntent().getSerializableExtra(DRAWER_PARAMS);
  23. mNavigatorId = screen.navigatorId;
  24. setupToolbar(screen);
  25. setupDrawer(screen, drawer, R.id.drawerFrame, R.id.drawerLayout);
  26. mScreenStack = new ScreenStack(this);
  27. FrameLayout contentFrame = (FrameLayout) findViewById(R.id.contentFrame);
  28. assert contentFrame != null;
  29. contentFrame.addView(mScreenStack);
  30. mScreenStack.push(screen);
  31. // Setup Toolbar after it's measured since icon height is dependent on Toolbar height
  32. contentFrame.post(new Runnable() {
  33. @Override
  34. public void run() {
  35. setupToolbar(screen);
  36. }
  37. });
  38. }
  39. protected void setupToolbar(Screen screen) {
  40. StyleHelper.updateStyles(mToolbar, screen);
  41. }
  42. @Override
  43. public void push(Screen screen) {
  44. super.push(screen);
  45. mScreenStack.push(screen);
  46. StyleHelper.updateStyles(mToolbar, screen);
  47. }
  48. @Override
  49. public Screen pop(String navigatorId) {
  50. super.pop(navigatorId);
  51. Screen popped = mScreenStack.pop();
  52. StyleHelper.updateStyles(mToolbar, getCurrentScreen());
  53. return popped;
  54. }
  55. @Override
  56. public Screen popToRoot(String navigatorId) {
  57. super.popToRoot(navigatorId);
  58. Screen screen = mScreenStack.popToRoot();
  59. StyleHelper.updateStyles(mToolbar, getCurrentScreen());
  60. return screen;
  61. }
  62. @Override
  63. public Screen resetTo(Screen screen) {
  64. super.resetTo(screen);
  65. Screen popped = mScreenStack.resetTo(screen);
  66. StyleHelper.updateStyles(mToolbar, screen);
  67. return popped;
  68. }
  69. @Override
  70. public String getCurrentNavigatorId() {
  71. return mNavigatorId;
  72. }
  73. @Override
  74. public Screen getCurrentScreen() {
  75. Screen currentScreen = super.getCurrentScreen();
  76. if (currentScreen != null) {
  77. return currentScreen;
  78. }
  79. return mScreenStack.peek();
  80. }
  81. @Override
  82. public int getScreenStackSize() {
  83. return mScreenStack.getStackSize();
  84. }
  85. @Override
  86. protected void removeAllReactViews() {
  87. mScreenStack.removeAllReactViews();
  88. }
  89. }