react-native-navigation的迁移库

NestedAnimationsOptions.java 2.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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 = new AnimationOptions(json.optJSONObject("content"));
  11. options.bottomTabs = new AnimationOptions(json.optJSONObject("bottomTabs"));
  12. options.topBar = new AnimationOptions(json.optJSONObject("topBar"));
  13. options.enabled = BoolParser.parseFirst(json, "enabled", "enable");
  14. options.waitForRender = BoolParser.parse(json, "waitForRender");
  15. options.sharedElements = SharedElements.parse(json);
  16. options.elementTransitions = ElementTransitions.Companion.parse(json);
  17. return options;
  18. }
  19. public Bool enabled = new NullBool();
  20. public Bool waitForRender = new NullBool();
  21. public AnimationOptions content = new AnimationOptions();
  22. public AnimationOptions bottomTabs = new AnimationOptions();
  23. public AnimationOptions topBar = new AnimationOptions();
  24. public SharedElements sharedElements = new SharedElements();
  25. public ElementTransitions elementTransitions = new ElementTransitions();
  26. void mergeWith(NestedAnimationsOptions other) {
  27. topBar.mergeWith(other.topBar);
  28. content.mergeWith(other.content);
  29. bottomTabs.mergeWith(other.bottomTabs);
  30. sharedElements.mergeWith(other.sharedElements);
  31. elementTransitions.mergeWith(other.elementTransitions);
  32. if (other.enabled.hasValue()) enabled = other.enabled;
  33. if (other.waitForRender.hasValue()) waitForRender = other.waitForRender;
  34. }
  35. void mergeWithDefault(NestedAnimationsOptions defaultOptions) {
  36. content.mergeWithDefault(defaultOptions.content);
  37. bottomTabs.mergeWithDefault(defaultOptions.bottomTabs);
  38. topBar.mergeWithDefault(defaultOptions.topBar);
  39. sharedElements.mergeWithDefault(defaultOptions.sharedElements);
  40. elementTransitions.mergeWithDefault(defaultOptions.elementTransitions);
  41. if (!enabled.hasValue()) enabled = defaultOptions.enabled;
  42. if (!waitForRender.hasValue()) waitForRender = defaultOptions.waitForRender;
  43. }
  44. public boolean hasValue() {
  45. return topBar.hasValue() || content.hasValue() || bottomTabs.hasValue() || waitForRender.hasValue();
  46. }
  47. }