summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Cyril Mottier <cyrilmottier@gmail.com> 2013-07-25 10:08:29 +0200
committer Cyril Mottier <cyrilmottier@gmail.com> 2013-07-25 10:08:29 +0200
commitd40acfb89e3222e8da516254341a9489de7fd07b (patch)
tree0f463fb13bfade0844068bcff4cd4e1e686db538
parentdbc51de44fe4f9a7f81528204250de32ec405d39 (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.java22
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();
+ }
}
/**