1 | import { Transition } from '.';
|
2 |
|
3 | export class FlipTransition extends Transition {
|
4 | constructor(direction, duration, curve) {
|
5 | super(duration, curve);
|
6 | this._direction = direction;
|
7 | }
|
8 | createAndroidAnimator(transitionType) {
|
9 | let objectAnimators;
|
10 | let values;
|
11 | let animator;
|
12 | const animatorSet = new android.animation.AnimatorSet();
|
13 | const fullDuration = this.getDuration() || 300;
|
14 | const interpolator = this.getCurve();
|
15 | const rotationY = this._direction === 'right' ? 180 : -180;
|
16 | switch (transitionType) {
|
17 | case Transition.AndroidTransitionType.enter:
|
18 | objectAnimators = Array.create(android.animation.Animator, 2);
|
19 | values = Array.create('float', 2);
|
20 | values[0] = rotationY;
|
21 | values[1] = 0.0;
|
22 | animator = android.animation.ObjectAnimator.ofFloat(null, 'rotationY', values);
|
23 | animator.setInterpolator(interpolator);
|
24 | animator.setDuration(fullDuration);
|
25 | objectAnimators[0] = animator;
|
26 | values = Array.create('float', 3);
|
27 | values[0] = 0.0;
|
28 | values[1] = 0.0;
|
29 | values[2] = 255.0;
|
30 | animator = android.animation.ObjectAnimator.ofFloat(null, 'alpha', values);
|
31 | animator.setDuration(fullDuration / 2);
|
32 | objectAnimators[1] = animator;
|
33 | break;
|
34 | case Transition.AndroidTransitionType.exit:
|
35 | objectAnimators = Array.create(android.animation.Animator, 2);
|
36 | values = Array.create('float', 2);
|
37 | values[0] = 0.0;
|
38 | values[1] = -rotationY;
|
39 | animator = android.animation.ObjectAnimator.ofFloat(null, 'rotationY', values);
|
40 | animator.setInterpolator(interpolator);
|
41 | animator.setDuration(fullDuration);
|
42 | objectAnimators[0] = animator;
|
43 | values = Array.create('float', 3);
|
44 | values[0] = 255.0;
|
45 | values[1] = 0.0;
|
46 | values[2] = 0.0;
|
47 | animator = android.animation.ObjectAnimator.ofFloat(null, 'alpha', values);
|
48 | animator.setDuration(fullDuration / 2);
|
49 | objectAnimators[1] = animator;
|
50 | break;
|
51 | case Transition.AndroidTransitionType.popEnter:
|
52 | objectAnimators = Array.create(android.animation.Animator, 2);
|
53 | values = Array.create('float', 2);
|
54 | values[0] = -rotationY;
|
55 | values[1] = 0.0;
|
56 | animator = android.animation.ObjectAnimator.ofFloat(null, 'rotationY', values);
|
57 | animator.setInterpolator(interpolator);
|
58 | animator.setDuration(fullDuration);
|
59 | objectAnimators[0] = animator;
|
60 | values = Array.create('float', 3);
|
61 | values[0] = 0.0;
|
62 | values[1] = 0.0;
|
63 | values[2] = 255.0;
|
64 | animator = android.animation.ObjectAnimator.ofFloat(null, 'alpha', values);
|
65 | animator.setDuration(fullDuration / 2);
|
66 | objectAnimators[1] = animator;
|
67 | break;
|
68 | case Transition.AndroidTransitionType.popExit:
|
69 | objectAnimators = Array.create(android.animation.Animator, 2);
|
70 | values = Array.create('float', 2);
|
71 | values[0] = 0.0;
|
72 | values[1] = rotationY;
|
73 | animator = android.animation.ObjectAnimator.ofFloat(null, 'rotationY', values);
|
74 | animator.setInterpolator(interpolator);
|
75 | animator.setDuration(fullDuration);
|
76 | objectAnimators[0] = animator;
|
77 | values = Array.create('float', 3);
|
78 | values[0] = 255.0;
|
79 | values[1] = 0.0;
|
80 | values[2] = 0.0;
|
81 | animator = android.animation.ObjectAnimator.ofFloat(null, 'alpha', values);
|
82 | animator.setDuration(fullDuration / 2);
|
83 | objectAnimators[1] = animator;
|
84 | break;
|
85 | }
|
86 | animatorSet.playTogether(objectAnimators);
|
87 | return animatorSet;
|
88 | }
|
89 | }
|
90 |
|
\ | No newline at end of file |