summaryrefslogtreecommitdiffstats
path: root/core/java/android/animation/KeyframeSet.java
diff options
context:
space:
mode:
authorDoris Liu <tianliu@google.com>2015-03-31 15:17:32 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-03-31 15:17:32 +0000
commit9e6afce34a07257bbd15b51851ac7394823e0ab7 (patch)
tree9ade0df99871f0104bbd9c0227434c6c28002f32 /core/java/android/animation/KeyframeSet.java
parent3af4330c5371f20ac5a378e6abe6bf1c356b0a06 (diff)
parent6df99053ebd6d32ed1c0e83516b480a6843770c3 (diff)
downloadframeworks_base-9e6afce34a07257bbd15b51851ac7394823e0ab7.zip
frameworks_base-9e6afce34a07257bbd15b51851ac7394823e0ab7.tar.gz
frameworks_base-9e6afce34a07257bbd15b51851ac7394823e0ab7.tar.bz2
Merge "Fix per-keyframe interpolators"
Diffstat (limited to 'core/java/android/animation/KeyframeSet.java')
-rw-r--r--core/java/android/animation/KeyframeSet.java8
1 files changed, 4 insertions, 4 deletions
diff --git a/core/java/android/animation/KeyframeSet.java b/core/java/android/animation/KeyframeSet.java
index c80e162..32edd4d 100644
--- a/core/java/android/animation/KeyframeSet.java
+++ b/core/java/android/animation/KeyframeSet.java
@@ -201,7 +201,6 @@ class KeyframeSet implements Keyframes {
* @return The animated value.
*/
public Object getValue(float fraction) {
-
// Special-case optimization for the common case of only two keyframes
if (mNumKeyframes == 2) {
if (mInterpolator != null) {
@@ -238,12 +237,13 @@ class KeyframeSet implements Keyframes {
Keyframe nextKeyframe = mKeyframes.get(i);
if (fraction < nextKeyframe.getFraction()) {
final TimeInterpolator interpolator = nextKeyframe.getInterpolator();
- if (interpolator != null) {
- fraction = interpolator.getInterpolation(fraction);
- }
final float prevFraction = prevKeyframe.getFraction();
float intervalFraction = (fraction - prevFraction) /
(nextKeyframe.getFraction() - prevFraction);
+ // Apply interpolator on the proportional duration.
+ if (interpolator != null) {
+ intervalFraction = interpolator.getInterpolation(intervalFraction);
+ }
return mEvaluator.evaluate(intervalFraction, prevKeyframe.getValue(),
nextKeyframe.getValue());
}