diff options
author | Doris Liu <tianliu@google.com> | 2015-03-30 16:03:59 -0700 |
---|---|---|
committer | Doris Liu <tianliu@google.com> | 2015-03-30 16:11:53 -0700 |
commit | 6df99053ebd6d32ed1c0e83516b480a6843770c3 (patch) | |
tree | a75700a4b2befaa4a57fea15e62cad4f3bb22500 /core/java/android/animation/FloatKeyframeSet.java | |
parent | 1c6bfd69442e91458bb5c10490d0cff579f47e06 (diff) | |
download | frameworks_base-6df99053ebd6d32ed1c0e83516b480a6843770c3.zip frameworks_base-6df99053ebd6d32ed1c0e83516b480a6843770c3.tar.gz frameworks_base-6df99053ebd6d32ed1c0e83516b480a6843770c3.tar.bz2 |
Fix per-keyframe interpolators
Support different interpolators on every keyframe by running
interpolators on proportional duration instead of raw fraction.
Bug: 19928396
Change-Id: Ifb8c3a3b56785582cd6b0121d7bfb44534866300
Diffstat (limited to 'core/java/android/animation/FloatKeyframeSet.java')
-rw-r--r-- | core/java/android/animation/FloatKeyframeSet.java | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/core/java/android/animation/FloatKeyframeSet.java b/core/java/android/animation/FloatKeyframeSet.java index 56da940..0173079 100644 --- a/core/java/android/animation/FloatKeyframeSet.java +++ b/core/java/android/animation/FloatKeyframeSet.java @@ -118,13 +118,14 @@ class FloatKeyframeSet extends KeyframeSet implements Keyframes.FloatKeyframes { FloatKeyframe nextKeyframe = (FloatKeyframe) mKeyframes.get(i); if (fraction < nextKeyframe.getFraction()) { final TimeInterpolator interpolator = nextKeyframe.getInterpolator(); - if (interpolator != null) { - fraction = interpolator.getInterpolation(fraction); - } float intervalFraction = (fraction - prevKeyframe.getFraction()) / (nextKeyframe.getFraction() - prevKeyframe.getFraction()); float prevValue = prevKeyframe.getFloatValue(); float nextValue = nextKeyframe.getFloatValue(); + // Apply interpolator on the proportional duration. + if (interpolator != null) { + intervalFraction = interpolator.getInterpolation(intervalFraction); + } return mEvaluator == null ? prevValue + intervalFraction * (nextValue - prevValue) : ((Number)mEvaluator.evaluate(intervalFraction, prevValue, nextValue)). |