react-native-navigation的迁移库

SnackbarAndFabContainer.java 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package com.reactnativenavigation.views;
  2. import android.content.Context;
  3. import android.support.design.widget.CoordinatorLayout;
  4. import com.reactnativenavigation.events.Event;
  5. import com.reactnativenavigation.events.EventBus;
  6. import com.reactnativenavigation.events.FabSetEvent;
  7. import com.reactnativenavigation.events.ScreenChangedEvent;
  8. import com.reactnativenavigation.events.Subscriber;
  9. import com.reactnativenavigation.params.FabParams;
  10. import com.reactnativenavigation.params.SnackbarParams;
  11. public class SnackbarAndFabContainer extends CoordinatorLayout implements Snakbar.OnDismissListener, Subscriber{
  12. private Snakbar snakbar;
  13. private FloatingActionButtonCoordinator fabCoordinator;
  14. public SnackbarAndFabContainer(Context context) {
  15. super(context);
  16. fabCoordinator = new FloatingActionButtonCoordinator(this);
  17. EventBus.instance.register(this);
  18. }
  19. public void showSnackbar(final String navigatorEventId, final SnackbarParams params) {
  20. snakbar = new Snakbar(this, navigatorEventId, params);
  21. snakbar.show();
  22. }
  23. @Override
  24. public void onDismiss(Snakbar snakbar) {
  25. if (this.snakbar == snakbar) {
  26. this.snakbar = null;
  27. }
  28. }
  29. public void destroy() {
  30. EventBus.instance.unregister(this);
  31. }
  32. @Override
  33. public void onEvent(Event event) {
  34. if (ScreenChangedEvent.TYPE.equals(event.getType())) {
  35. onScreenChange(((ScreenChangedEvent) event).fabParams);
  36. }
  37. if (FabSetEvent.TYPE.equals(event.getType())) {
  38. updateFab(((FabSetEvent) event).fabParams);
  39. }
  40. }
  41. private void onScreenChange(FabParams fabParams) {
  42. dismissSnackbar();
  43. updateFab(fabParams);
  44. }
  45. private void dismissSnackbar() {
  46. if (snakbar != null) {
  47. snakbar.dismiss();
  48. snakbar = null;
  49. }
  50. }
  51. private void updateFab(final FabParams fabParams) {
  52. fabCoordinator.remove(new Runnable() {
  53. @Override
  54. public void run() {
  55. if (fabParams != null) {
  56. fabCoordinator.add(fabParams);
  57. }
  58. }
  59. });
  60. }
  61. }