react-native-navigation的迁移库

NavigationReactModule.java 5.0KB

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