react-native-navigation的迁移库

NavigationReactModule.java 5.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. package com.reactnativenavigation.bridge;
  2. import com.facebook.react.bridge.ReactApplicationContext;
  3. import com.facebook.react.bridge.ReactContextBaseJavaModule;
  4. import com.facebook.react.bridge.ReactMethod;
  5. import com.facebook.react.bridge.ReadableArray;
  6. import com.facebook.react.bridge.ReadableMap;
  7. import com.reactnativenavigation.controllers.NavigationCommandsHandler;
  8. import com.reactnativenavigation.params.SnackbarParams;
  9. import com.reactnativenavigation.params.TitleBarButtonParams;
  10. import com.reactnativenavigation.params.TitleBarLeftButtonParams;
  11. import com.reactnativenavigation.params.parsers.SnackbarParamsParser;
  12. import com.reactnativenavigation.params.parsers.TitleBarButtonParamsParser;
  13. import com.reactnativenavigation.params.parsers.TitleBarLeftButtonParamsParser;
  14. import java.util.List;
  15. /**
  16. * The basic abstract components we will expose:
  17. * BottomTabs (app) - boolean
  18. * TopBar (per screen)
  19. * - TitleBar
  20. * - - RightButtons
  21. * - - LeftButton
  22. * - TopTabs (segmented control / view pager tabs)
  23. * DeviceStatusBar (app) (colors are per screen)
  24. * AndroidNavigationBar (app) (colors are per screen)
  25. * SideMenu (app) - boolean, (menu icon is screen-based)
  26. */
  27. public class NavigationReactModule extends ReactContextBaseJavaModule {
  28. public static final String NAME = "NavigationReactModule";
  29. public NavigationReactModule(ReactApplicationContext reactContext) {
  30. super(reactContext);
  31. }
  32. @Override
  33. public String getName() {
  34. return NAME;
  35. }
  36. @ReactMethod
  37. public void startApp(final ReadableMap params) {
  38. NavigationCommandsHandler.startApp(BundleConverter.toBundle(params));
  39. }
  40. @ReactMethod
  41. public void setScreenTitleBarTitle(String screenInstanceId, String title) {
  42. NavigationCommandsHandler.setScreenTitleBarTitle(screenInstanceId, title);
  43. }
  44. @ReactMethod
  45. public void setScreenTitleBarButtons(String screenInstanceId, String navigatorEventId,
  46. ReadableArray rightButtonsParams, ReadableMap leftButtonParams) {
  47. if (rightButtonsParams != null) {
  48. setScreenTitleBarRightButtons(screenInstanceId, navigatorEventId, rightButtonsParams);
  49. }
  50. if (leftButtonParams != null) {
  51. setScreenTitleBarLeftButton(screenInstanceId, navigatorEventId, leftButtonParams);
  52. }
  53. }
  54. private void setScreenTitleBarRightButtons(String screenInstanceId, String navigatorEventId, ReadableArray rightButtonsParams) {
  55. List<TitleBarButtonParams> rightButtons = new TitleBarButtonParamsParser()
  56. .parseButtons(BundleConverter.toBundle(rightButtonsParams));
  57. NavigationCommandsHandler.setScreenTitleBarRightButtons(screenInstanceId, navigatorEventId, rightButtons);
  58. }
  59. private void setScreenTitleBarLeftButton(String screenInstanceId, String navigatorEventId, ReadableMap leftButtonParams) {
  60. TitleBarLeftButtonParams leftButton = new TitleBarLeftButtonParamsParser()
  61. .parseSingleButton(BundleConverter.toBundle(leftButtonParams));
  62. NavigationCommandsHandler.setScreenTitleBarLeftButtons(screenInstanceId, navigatorEventId, leftButton);
  63. }
  64. @ReactMethod
  65. public void setBottomTabBadgeByIndex(Integer index, String badge) {
  66. NavigationCommandsHandler.setBottomTabBadgeByIndex(index, badge);
  67. }
  68. @ReactMethod
  69. public void setBottomTabBadgeByNavigatorId(String navigatorId, String badge) {
  70. NavigationCommandsHandler.setBottomTabBadgeByNavigatorId(navigatorId, badge);
  71. }
  72. @ReactMethod
  73. public void selectBottomTabByTabIndex(Integer index) {
  74. NavigationCommandsHandler.selectBottomTabByTabIndex(index);
  75. }
  76. @ReactMethod
  77. public void selectBottomTabByNavigatorId(String navigatorId) {
  78. NavigationCommandsHandler.selectBottomTabByNavigatorId(navigatorId);
  79. }
  80. @ReactMethod
  81. public void toggleSideMenuVisible(boolean animated) {
  82. NavigationCommandsHandler.toggleSideMenuVisible(animated);
  83. }
  84. @ReactMethod
  85. public void setSideMenuVisible(boolean animated, boolean visible) {
  86. NavigationCommandsHandler.setSideMenuVisible(animated, visible);
  87. }
  88. @ReactMethod
  89. public void toggleTopBarVisible(final ReadableMap params) {
  90. }
  91. @ReactMethod
  92. public void setTopBarVisible(String screenInstanceId, boolean hidden, boolean animated) {
  93. NavigationCommandsHandler.setTopBarVisible(screenInstanceId, hidden, animated);
  94. }
  95. @ReactMethod
  96. public void toggleBottomTabsVisible(final ReadableMap params) {
  97. }
  98. @ReactMethod
  99. public void setBottomTabsVisible(boolean hidden, boolean animated) {
  100. NavigationCommandsHandler.setBottomTabsVisible(hidden, animated);
  101. }
  102. @ReactMethod
  103. public void push(final ReadableMap params) {
  104. NavigationCommandsHandler.push(BundleConverter.toBundle(params));
  105. }
  106. @ReactMethod
  107. public void pop(final ReadableMap params) {
  108. NavigationCommandsHandler.pop(BundleConverter.toBundle(params));
  109. }
  110. @ReactMethod
  111. public void popToRoot(final ReadableMap params) {
  112. NavigationCommandsHandler.popToRoot(BundleConverter.toBundle(params));
  113. }
  114. @ReactMethod
  115. public void newStack(final ReadableMap params) {
  116. NavigationCommandsHandler.newStack(BundleConverter.toBundle(params));
  117. }
  118. @ReactMethod
  119. public void showModal(final ReadableMap params) {
  120. NavigationCommandsHandler.showModal(BundleConverter.toBundle(params));
  121. }
  122. @ReactMethod
  123. public void dismissAllModals() {
  124. NavigationCommandsHandler.dismissAllModals();
  125. }
  126. @ReactMethod
  127. public void dismissTopModal() {
  128. NavigationCommandsHandler.dismissTopModal();
  129. }
  130. @ReactMethod
  131. public void showSnackbar(final ReadableMap params) {
  132. SnackbarParams snackbarParams = new SnackbarParamsParser().parse(BundleConverter.toBundle(params));
  133. NavigationCommandsHandler.showSnackbar(snackbarParams);
  134. }
  135. }