diff options
author | 2013-07-25 10:08:29 +0200 | |
---|---|---|
committer | 2013-07-25 10:08:29 +0200 | |
commit | d40acfb89e3222e8da516254341a9489de7fd07b (patch) | |
tree | 0f463fb13bfade0844068bcff4cd4e1e686db538 | |
parent | dbc51de44fe4f9a7f81528204250de32ec405d39 (diff) |
Return the actual interpolator of the ViewPropertyAnimator
The implementation of getInterpolator() was always returning null
(probably a quick copy-paste from the default Animator implementation).
This patch fixes the problem by returning the interpolator set by
setInterpolator(TimeInterpolator) or the default one if none has been
set yet.
This patch also avoid creating multiple instances of ValueAnimator in
order to retrieve some default values.
Change-Id: I8880f419f021a8b980fb32bebe927915fde19bf7
-rw-r--r-- | core/java/android/view/ViewPropertyAnimator.java | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/core/java/android/view/ViewPropertyAnimator.java b/core/java/android/view/ViewPropertyAnimator.java index 71a85bc7a2f5..e6bf420acccc 100644 --- a/core/java/android/view/ViewPropertyAnimator.java +++ b/core/java/android/view/ViewPropertyAnimator.java @@ -98,6 +98,12 @@ public class ViewPropertyAnimator { private Animator.AnimatorListener mListener = null; /** + * A lazily-created ValueAnimator used in order to get some default animator properties + * (duration, start delay, interpolator, etc.). + */ + private ValueAnimator mTempValueAnimator; + + /** * This listener is the mechanism by which the underlying Animator causes changes to the * properties currently being animated, as well as the cleanup after an animation is * complete. @@ -268,7 +274,10 @@ public class ViewPropertyAnimator { } else { // Just return the default from ValueAnimator, since that's what we'd get if // the value has not been set otherwise - return new ValueAnimator().getDuration(); + if (mTempValueAnimator == null) { + mTempValueAnimator = new ValueAnimator(); + } + return mTempValueAnimator.getDuration(); } } @@ -328,7 +337,16 @@ public class ViewPropertyAnimator { * @return The timing interpolator for this animation. */ public TimeInterpolator getInterpolator() { - return null; + if (mInterpolatorSet) { + return mInterpolator; + } else { + // Just return the default from ValueAnimator, since that's what we'd get if + // the value has not been set otherwise + if (mTempValueAnimator == null) { + mTempValueAnimator = new ValueAnimator(); + } + return mTempValueAnimator.getInterpolator(); + } } /** |