1
/*
2
* Copyright 2013 The Android Open Source Project
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*/
16
17
18
19
20
package com.example.android.batchstepsensor.cardstream;
21
22
import android.animation.ObjectAnimator;
23
import android.animation.PropertyValuesHolder;
24
import android.annotation.TargetApi;
25
import android.content.Context;
26
import android.graphics.Point;
27
import android.os.Build;
28
import android.view.View;
29
import android.view.WindowManager;
30
import android.view.animation.BounceInterpolator;
31
32
class DefaultCardStreamAnimator extends CardStreamAnimator {
33
34
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
35
@Override
36
public ObjectAnimator getDisappearingAnimator(Context context){
37
38
ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(new Object(),
39
PropertyValuesHolder.ofFloat("alpha", 1.f, 0.f),
40
PropertyValuesHolder.ofFloat("scaleX", 1.f, 0.f),
41
PropertyValuesHolder.ofFloat("scaleY", 1.f, 0.f),
42
PropertyValuesHolder.ofFloat("rotation", 0.f, 270.f));
43
44
animator.setDuration((long) (200 * mSpeedFactor));
45
return animator;
46
}
47
48
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
49
@Override
50
public ObjectAnimator getAppearingAnimator(Context context){
51
52
final Point outPoint = new Point();
53
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
54
wm.getDefaultDisplay().getSize(outPoint);
55
56
ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(new Object(),
57
PropertyValuesHolder.ofFloat("alpha", 0.f, 1.f),
58
PropertyValuesHolder.ofFloat("translationY", outPoint.y / 2.f, 0.f),
59
PropertyValuesHolder.ofFloat("rotation", -45.f, 0.f));
60
61
animator.setDuration((long) (200 * mSpeedFactor));
62
return animator;
63
}
64
65
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
66
@Override
67
public ObjectAnimator getInitalAnimator(Context context){
68
69
ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(new Object(),
70
PropertyValuesHolder.ofFloat("alpha", 0.5f, 1.f),
71
PropertyValuesHolder.ofFloat("rotation", 60.f, 0.f));
72
73
animator.setDuration((long) (200 * mSpeedFactor));
74
return animator;
75
}
76
77
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
78
@Override
79
public ObjectAnimator getSwipeInAnimator(View view, float deltaX, float deltaY){
80
81
float deltaXAbs = Math.abs(deltaX);
82
83
float fractionCovered = 1.f - (deltaXAbs / view.getWidth());
84
long duration = Math.abs((int) ((1 - fractionCovered) * 200 * mSpeedFactor));
85
86
// Animate position and alpha of swiped item
87
88
ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(view,
89
PropertyValuesHolder.ofFloat("alpha", 1.f),
90
PropertyValuesHolder.ofFloat("translationX", 0.f),
91
PropertyValuesHolder.ofFloat("rotationY", 0.f));
92
93
animator.setDuration(duration).setInterpolator(new BounceInterpolator());
94
95
return animator;
96
}
97
98
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
99
@Override
100
public ObjectAnimator getSwipeOutAnimator(View view, float deltaX, float deltaY){
101
102
float endX;
103
float endRotationY;
104
105
float deltaXAbs = Math.abs(deltaX);
106
107
float fractionCovered = 1.f - (deltaXAbs / view.getWidth());
108
long duration = Math.abs((int) ((1 - fractionCovered) * 200 * mSpeedFactor));
109
110
endX = deltaX < 0 ? -view.getWidth() : view.getWidth();
111
if (deltaX > 0)
112
endRotationY = -15.f;
113
else
114
endRotationY = 15.f;
115
116
// Animate position and alpha of swiped item
117
return ObjectAnimator.ofPropertyValuesHolder(view,
118
PropertyValuesHolder.ofFloat("alpha", 0.f),
119
PropertyValuesHolder.ofFloat("translationX", endX),
120
PropertyValuesHolder.ofFloat("rotationY", endRotationY)).setDuration(duration);
121
122
}
123
124
}