Browse Source

Minor refactor to Animators

Guy Carmeli 6 years ago
parent
commit
ae69d9e471

+ 14
- 16
lib/android/app/src/main/java/com/reactnativenavigation/anim/BaseAnimator.java View File

3
 
3
 
4
 import android.animation.AnimatorSet;
4
 import android.animation.AnimatorSet;
5
 import android.animation.ObjectAnimator;
5
 import android.animation.ObjectAnimator;
6
+import android.animation.TimeInterpolator;
6
 import android.content.Context;
7
 import android.content.Context;
7
 import android.support.annotation.NonNull;
8
 import android.support.annotation.NonNull;
8
 import android.view.View;
9
 import android.view.View;
9
-import android.view.animation.AccelerateInterpolator;
10
+import android.view.animation.AccelerateDecelerateInterpolator;
10
 import android.view.animation.DecelerateInterpolator;
11
 import android.view.animation.DecelerateInterpolator;
11
 
12
 
12
 import com.reactnativenavigation.parse.AnimationsOptions;
13
 import com.reactnativenavigation.parse.AnimationsOptions;
13
 import com.reactnativenavigation.utils.UiUtils;
14
 import com.reactnativenavigation.utils.UiUtils;
14
 
15
 
16
+import static android.view.View.ALPHA;
17
+import static android.view.View.TRANSLATION_Y;
18
+
15
 class BaseAnimator {
19
 class BaseAnimator {
16
 
20
 
17
     private static final int DURATION = 300;
21
     private static final int DURATION = 300;
18
-    private static final DecelerateInterpolator DECELERATE_INTERPOLATOR = new DecelerateInterpolator();
19
-    private static final AccelerateInterpolator ACCELERATE_INTERPOLATOR = new AccelerateInterpolator();
22
+    private static final TimeInterpolator DECELERATE = new DecelerateInterpolator();
23
+    private static final TimeInterpolator ACCELERATE_DECELERATE = new AccelerateDecelerateInterpolator();
20
 
24
 
21
     protected AnimationsOptions options = new AnimationsOptions();
25
     protected AnimationsOptions options = new AnimationsOptions();
22
 
26
 
28
 
32
 
29
     @NonNull
33
     @NonNull
30
     AnimatorSet getDefaultPushAnimation(View view) {
34
     AnimatorSet getDefaultPushAnimation(View view) {
31
-        ObjectAnimator alpha = ObjectAnimator.ofFloat(view, View.ALPHA, 0, 1);
32
-        alpha.setInterpolator(DECELERATE_INTERPOLATOR);
33
-
34
         AnimatorSet set = new AnimatorSet();
35
         AnimatorSet set = new AnimatorSet();
35
-        ObjectAnimator translationY = ObjectAnimator.ofFloat(view, View.TRANSLATION_Y, this.translationY, 0);
36
-        set.setInterpolator(DECELERATE_INTERPOLATOR);
36
+        set.setInterpolator(DECELERATE);
37
         set.setDuration(DURATION);
37
         set.setDuration(DURATION);
38
+        ObjectAnimator translationY = ObjectAnimator.ofFloat(view, TRANSLATION_Y, this.translationY, 0);
39
+        ObjectAnimator alpha = ObjectAnimator.ofFloat(view, ALPHA, 0, 1);
38
         set.playTogether(translationY, alpha);
40
         set.playTogether(translationY, alpha);
39
         return set;
41
         return set;
40
     }
42
     }
43
     @NonNull
45
     @NonNull
44
     AnimatorSet getDefaultPopAnimation(View view) {
46
     AnimatorSet getDefaultPopAnimation(View view) {
45
         AnimatorSet set = new AnimatorSet();
47
         AnimatorSet set = new AnimatorSet();
46
-
47
-        ObjectAnimator alpha = ObjectAnimator.ofFloat(view, View.ALPHA, 1, 0);
48
-        alpha.setInterpolator(ACCELERATE_INTERPOLATOR);
49
-
50
-        ObjectAnimator translationY = ObjectAnimator.ofFloat(view, View.TRANSLATION_Y, 0, this.translationY);
51
-        translationY.setInterpolator(ACCELERATE_INTERPOLATOR);
52
-        translationY.setDuration(DURATION);
53
-        alpha.setDuration(DURATION);
48
+        set.setInterpolator(ACCELERATE_DECELERATE);
49
+        set.setDuration(DURATION);
50
+        ObjectAnimator translationY = ObjectAnimator.ofFloat(view, TRANSLATION_Y, 0, this.translationY);
51
+        ObjectAnimator alpha = ObjectAnimator.ofFloat(view, ALPHA, 1, 0);
54
         set.playTogether(translationY, alpha);
52
         set.playTogether(translationY, alpha);
55
         return set;
53
         return set;
56
     }
54
     }

+ 13
- 9
lib/android/app/src/main/java/com/reactnativenavigation/anim/TopBarAnimator.java View File

7
 import android.animation.ObjectAnimator;
7
 import android.animation.ObjectAnimator;
8
 import android.animation.TimeInterpolator;
8
 import android.animation.TimeInterpolator;
9
 import android.view.View;
9
 import android.view.View;
10
+import android.view.animation.AccelerateDecelerateInterpolator;
10
 import android.view.animation.DecelerateInterpolator;
11
 import android.view.animation.DecelerateInterpolator;
11
 import android.view.animation.LinearInterpolator;
12
 import android.view.animation.LinearInterpolator;
12
 
13
 
15
 
16
 
16
 import javax.annotation.Nullable;
17
 import javax.annotation.Nullable;
17
 
18
 
19
+import static android.view.View.TRANSLATION_Y;
20
+
18
 public class TopBarAnimator {
21
 public class TopBarAnimator {
19
 
22
 
20
     private static final int DEFAULT_COLLAPSE_DURATION = 100;
23
     private static final int DEFAULT_COLLAPSE_DURATION = 100;
21
-    private static final int DURATION_TOPBAR = 300;
22
-    private final DecelerateInterpolator decelerateInterpolator = new DecelerateInterpolator();
23
-    private final LinearInterpolator linearInterpolator = new LinearInterpolator();
24
+    private static final int DURATION = 300;
25
+    private static final TimeInterpolator DECELERATE = new DecelerateInterpolator();
26
+    private static final TimeInterpolator LINEAR = new LinearInterpolator();
27
+    private static final TimeInterpolator ACCELERATE_DECELERATE = new AccelerateDecelerateInterpolator();
24
 
28
 
25
     private TopBar topBar;
29
     private TopBar topBar;
26
     private String stackId;
30
     private String stackId;
40
         if (options.hasValue() && (!options.id.hasValue() || options.id.get().equals(stackId))) {
44
         if (options.hasValue() && (!options.id.hasValue() || options.id.get().equals(stackId))) {
41
             showAnimator = options.getAnimation(topBar);
45
             showAnimator = options.getAnimation(topBar);
42
         } else {
46
         } else {
43
-            showAnimator = getDefaultShowAnimator(-1 * topBar.getMeasuredHeight(), decelerateInterpolator, DURATION_TOPBAR);
47
+            showAnimator = getDefaultShowAnimator(-1 * topBar.getMeasuredHeight(), DECELERATE, DURATION);
44
         }
48
         }
45
         show();
49
         show();
46
     }
50
     }
47
 
51
 
48
     public void show(float startTranslation) {
52
     public void show(float startTranslation) {
49
-        showAnimator = getDefaultShowAnimator(startTranslation, linearInterpolator, DEFAULT_COLLAPSE_DURATION);
53
+        showAnimator = getDefaultShowAnimator(startTranslation, LINEAR, DEFAULT_COLLAPSE_DURATION);
50
         show();
54
         show();
51
     }
55
     }
52
 
56
 
62
     }
66
     }
63
 
67
 
64
     private AnimatorSet getDefaultShowAnimator(float startTranslation, TimeInterpolator interpolator, int duration) {
68
     private AnimatorSet getDefaultShowAnimator(float startTranslation, TimeInterpolator interpolator, int duration) {
65
-        ObjectAnimator showAnimator = ObjectAnimator.ofFloat(topBar, View.TRANSLATION_Y, startTranslation, 0);
69
+        ObjectAnimator showAnimator = ObjectAnimator.ofFloat(topBar, TRANSLATION_Y, startTranslation, 0);
66
         showAnimator.setInterpolator(interpolator);
70
         showAnimator.setInterpolator(interpolator);
67
         showAnimator.setDuration(duration);
71
         showAnimator.setDuration(duration);
68
         AnimatorSet set = new AnimatorSet();
72
         AnimatorSet set = new AnimatorSet();
74
         if (options.hasValue() && (!options.id.hasValue() || options.id.get().equals(stackId))) {
78
         if (options.hasValue() && (!options.id.hasValue() || options.id.get().equals(stackId))) {
75
             hideAnimator = options.getAnimation(topBar);
79
             hideAnimator = options.getAnimation(topBar);
76
         } else {
80
         } else {
77
-            hideAnimator = getDefaultHideAnimator(0, linearInterpolator, DURATION_TOPBAR);
81
+            hideAnimator = getDefaultHideAnimator(0, ACCELERATE_DECELERATE, DURATION);
78
         }
82
         }
79
         hide(onAnimationEnd);
83
         hide(onAnimationEnd);
80
     }
84
     }
81
 
85
 
82
     void hide(float startTranslation) {
86
     void hide(float startTranslation) {
83
-        hideAnimator = getDefaultHideAnimator(startTranslation, linearInterpolator, DEFAULT_COLLAPSE_DURATION);
87
+        hideAnimator = getDefaultHideAnimator(startTranslation, LINEAR, DEFAULT_COLLAPSE_DURATION);
84
         hide(() -> {});
88
         hide(() -> {});
85
     }
89
     }
86
 
90
 
96
     }
100
     }
97
 
101
 
98
     private Animator getDefaultHideAnimator(float startTranslation, TimeInterpolator interpolator, int duration) {
102
     private Animator getDefaultHideAnimator(float startTranslation, TimeInterpolator interpolator, int duration) {
99
-        ObjectAnimator hideAnimator = ObjectAnimator.ofFloat(topBar, View.TRANSLATION_Y, startTranslation, -1 * topBar.getMeasuredHeight());
103
+        ObjectAnimator hideAnimator = ObjectAnimator.ofFloat(topBar, TRANSLATION_Y, startTranslation, -1 * topBar.getMeasuredHeight());
100
         hideAnimator.setInterpolator(interpolator);
104
         hideAnimator.setInterpolator(interpolator);
101
         hideAnimator.setDuration(duration);
105
         hideAnimator.setDuration(duration);
102
         return hideAnimator;
106
         return hideAnimator;