react-native-navigation的迁移库

TransitionAnimatorCreator.java 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package com.reactnativenavigation.views.element;
  2. import android.animation.Animator;
  3. import com.reactnativenavigation.parse.Transition;
  4. import com.reactnativenavigation.views.element.animators.BackgroundColorAnimator;
  5. import com.reactnativenavigation.views.element.animators.MatrixAnimator;
  6. import com.reactnativenavigation.views.element.animators.PropertyAnimatorCreator;
  7. import com.reactnativenavigation.views.element.animators.ScaleXAnimator;
  8. import com.reactnativenavigation.views.element.animators.ScaleYAnimator;
  9. import com.reactnativenavigation.views.element.animators.TextChangeAnimator;
  10. import com.reactnativenavigation.views.element.animators.XAnimator;
  11. import com.reactnativenavigation.views.element.animators.YAnimator;
  12. import java.util.ArrayList;
  13. import java.util.Arrays;
  14. import java.util.Collection;
  15. import java.util.Collections;
  16. import java.util.List;
  17. import java.util.Map;
  18. public class TransitionAnimatorCreator {
  19. public Collection<Animator> create(List<Transition> transitions, Map<String, Element> from, Map<String, Element> to) {
  20. if (transitions.isEmpty()) return Collections.EMPTY_LIST;
  21. List<Animator> animators = new ArrayList<>();
  22. for (Transition transition : transitions) {
  23. animators.addAll(create(transition, from.get(transition.fromId.get()), to.get(transition.toId.get())));
  24. }
  25. return animators;
  26. }
  27. protected Collection<? extends Animator> create(Transition transition, Element from, Element to) {
  28. Collection<Animator> animators = new ArrayList<>();
  29. for (PropertyAnimatorCreator creator : getAnimators(from, to)) {
  30. if (creator.shouldAnimateProperty()) animators.add(creator.create(transition));
  31. }
  32. return animators;
  33. }
  34. protected List<PropertyAnimatorCreator> getAnimators(Element from, Element to) {
  35. return Arrays.asList(
  36. new XAnimator(from, to),
  37. new YAnimator(from, to),
  38. new MatrixAnimator(from, to),
  39. new ScaleXAnimator(from, to),
  40. new ScaleYAnimator(from, to),
  41. new BackgroundColorAnimator(from, to),
  42. new TextChangeAnimator(from, to)
  43. );
  44. }
  45. }