react-native-navigation的迁移库

BaseAnimator.java 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package com.reactnativenavigation.anim;
  2. import android.animation.AnimatorSet;
  3. import android.animation.ObjectAnimator;
  4. import android.animation.TimeInterpolator;
  5. import android.content.Context;
  6. import android.support.annotation.NonNull;
  7. import android.view.View;
  8. import android.view.animation.AccelerateDecelerateInterpolator;
  9. import android.view.animation.DecelerateInterpolator;
  10. import com.reactnativenavigation.utils.UiUtils;
  11. import static android.view.View.ALPHA;
  12. import static android.view.View.TRANSLATION_Y;
  13. class BaseAnimator {
  14. private static final int DURATION = 300;
  15. private static final TimeInterpolator DECELERATE = new DecelerateInterpolator();
  16. private static final TimeInterpolator ACCELERATE_DECELERATE = new AccelerateDecelerateInterpolator();
  17. private float translationY;
  18. BaseAnimator(Context context) {
  19. translationY = UiUtils.getWindowHeight(context);
  20. }
  21. @NonNull
  22. AnimatorSet getDefaultPushAnimation(View view) {
  23. AnimatorSet set = new AnimatorSet();
  24. set.setInterpolator(DECELERATE);
  25. set.setDuration(DURATION);
  26. ObjectAnimator translationY = ObjectAnimator.ofFloat(view, TRANSLATION_Y, this.translationY, 0);
  27. ObjectAnimator alpha = ObjectAnimator.ofFloat(view, ALPHA, 0, 1);
  28. set.playTogether(translationY, alpha);
  29. return set;
  30. }
  31. @NonNull
  32. AnimatorSet getDefaultPopAnimation(View view) {
  33. AnimatorSet set = new AnimatorSet();
  34. set.setInterpolator(ACCELERATE_DECELERATE);
  35. set.setDuration(DURATION);
  36. ObjectAnimator translationY = ObjectAnimator.ofFloat(view, TRANSLATION_Y, 0, this.translationY);
  37. ObjectAnimator alpha = ObjectAnimator.ofFloat(view, ALPHA, 1, 0);
  38. set.playTogether(translationY, alpha);
  39. return set;
  40. }
  41. }