react-native-navigation的迁移库

SharedElements.java 1.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package com.reactnativenavigation.parse;
  2. import org.json.JSONArray;
  3. import org.json.JSONException;
  4. import org.json.JSONObject;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. import androidx.annotation.RestrictTo;
  8. public class SharedElements {
  9. private List<SharedElementTransitionOptions> transitions = new ArrayList<>();
  10. public List<SharedElementTransitionOptions> get() {
  11. return transitions;
  12. }
  13. public SharedElements() {
  14. }
  15. @RestrictTo(RestrictTo.Scope.TESTS)
  16. public SharedElements(List<SharedElementTransitionOptions> transitions) {
  17. this.transitions = transitions;
  18. }
  19. public static SharedElements parse(JSONObject json) {
  20. SharedElements result = new SharedElements();
  21. try {
  22. JSONArray sharedElements = json.getJSONArray("sharedElementTransitions");
  23. if (sharedElements == null || sharedElements.length() == 0) return result;
  24. for (int i = 0; i < sharedElements.length(); i++) {
  25. result.add(SharedElementTransitionOptions.parse(sharedElements.getJSONObject(i)));
  26. }
  27. return result;
  28. } catch (JSONException e) {
  29. return result;
  30. }
  31. }
  32. public boolean hasValue() {
  33. return !transitions.isEmpty();
  34. }
  35. void mergeWith(final SharedElements other) {
  36. if (other.hasValue()) transitions = other.transitions;
  37. }
  38. void mergeWithDefault(SharedElements defaultOptions) {
  39. if (!hasValue()) transitions = defaultOptions.transitions;
  40. }
  41. private void add(SharedElementTransitionOptions transition) {
  42. transitions.add(transition);
  43. }
  44. }