react-native-navigation的迁移库

NestedAnimationsOptions.java 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package com.reactnativenavigation.parse;
  2. import com.reactnativenavigation.parse.params.Bool;
  3. import com.reactnativenavigation.parse.params.NullBool;
  4. import com.reactnativenavigation.parse.parsers.BoolParser;
  5. import org.json.JSONObject;
  6. public class NestedAnimationsOptions {
  7. public static NestedAnimationsOptions parse(JSONObject json) {
  8. NestedAnimationsOptions options = new NestedAnimationsOptions();
  9. if (json == null) return options;
  10. options.content = AnimationOptions.parse(json.optJSONObject("content"));
  11. options.bottomTabs = AnimationOptions.parse(json.optJSONObject("bottomTabs"));
  12. options.topBar = AnimationOptions.parse(json.optJSONObject("topBar"));
  13. options.enable = BoolParser.parse(json, "enable");
  14. options.waitForRender = BoolParser.parse(json, "waitForRender");
  15. return options;
  16. }
  17. public Bool enable = new NullBool();
  18. public Bool waitForRender = new NullBool();
  19. public AnimationOptions content = new AnimationOptions();
  20. public AnimationOptions bottomTabs = new AnimationOptions();
  21. public AnimationOptions topBar = new AnimationOptions();
  22. void mergeWith(NestedAnimationsOptions other) {
  23. topBar.mergeWith(other.topBar);
  24. content.mergeWith(other.content);
  25. bottomTabs.mergeWith(other.bottomTabs);
  26. if (other.enable.hasValue()) enable = other.enable;
  27. if (other.waitForRender.hasValue()) waitForRender = other.waitForRender;
  28. }
  29. void mergeWithDefault(NestedAnimationsOptions defaultOptions) {
  30. content.mergeWithDefault(defaultOptions.content);
  31. bottomTabs.mergeWithDefault(defaultOptions.bottomTabs);
  32. topBar.mergeWithDefault(defaultOptions.topBar);
  33. if (!enable.hasValue()) enable = defaultOptions.enable;
  34. if (!waitForRender.hasValue()) waitForRender = defaultOptions.waitForRender;
  35. }
  36. public boolean hasValue() {
  37. return topBar.hasValue() || content.hasValue() || bottomTabs.hasValue() || waitForRender.hasValue();
  38. }
  39. }