react-native-navigation的迁移库

OverlayManager.java 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package com.reactnativenavigation.presentation;
  2. import android.view.ViewGroup;
  3. import com.reactnativenavigation.utils.CommandListener;
  4. import com.reactnativenavigation.viewcontrollers.ViewController;
  5. import java.util.HashMap;
  6. public class OverlayManager {
  7. private final HashMap<String, ViewController> overlayRegistry = new HashMap<>();
  8. public void show(ViewGroup root, ViewController overlay, CommandListener listener) {
  9. overlayRegistry.put(overlay.getId(), overlay);
  10. overlay.setOnAppearedListener(() -> listener.onSuccess(overlay.getId()));
  11. root.addView(overlay.getView());
  12. }
  13. public void dismiss(String componentId, CommandListener listener) {
  14. ViewController overlay = overlayRegistry.get(componentId);
  15. if (overlay == null) {
  16. listener.onError("Could not dismiss Overlay. Overlay with id " + componentId + " was not found.");
  17. } else {
  18. overlay.destroy();
  19. overlayRegistry.remove(componentId);
  20. listener.onSuccess(componentId);
  21. }
  22. }
  23. public void destroy() {
  24. for (ViewController view : overlayRegistry.values()) {
  25. view.destroy();
  26. }
  27. overlayRegistry.clear();
  28. }
  29. public int size() {
  30. return overlayRegistry.size();
  31. }
  32. }