From 00177e483dd5b703545e742e6e2f8346dd4f624f Mon Sep 17 00:00:00 2001 From: Chet Haase Date: Mon, 10 Sep 2012 13:42:07 -0700 Subject: [PATCH] Fix clone() for Animators with just a 'to' value Previously, clone() on an Animator with only one value would mistakenly think that the clone had a real starting value (which would end up being 0 in the int and float cases). Fix is to set the 'mHasFirstValue' flag appropriately for the clone, based on the state of the cloned animator. Issue #7106442 ObjectAnimator.clone() does not work properly for single parameter Change-Id: I08bf03b7687a65eb613c1671a58e4cbfae66a30e --- core/java/android/animation/Keyframe.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/core/java/android/animation/Keyframe.java b/core/java/android/animation/Keyframe.java index e98719a75311c..dc8538fc60037 100644 --- a/core/java/android/animation/Keyframe.java +++ b/core/java/android/animation/Keyframe.java @@ -261,7 +261,7 @@ public abstract class Keyframe implements Cloneable { @Override public ObjectKeyframe clone() { - ObjectKeyframe kfClone = new ObjectKeyframe(getFraction(), mValue); + ObjectKeyframe kfClone = new ObjectKeyframe(getFraction(), mHasValue ? mValue : null); kfClone.setInterpolator(getInterpolator()); return kfClone; } @@ -306,7 +306,9 @@ public abstract class Keyframe implements Cloneable { @Override public IntKeyframe clone() { - IntKeyframe kfClone = new IntKeyframe(getFraction(), mValue); + IntKeyframe kfClone = mHasValue ? + new IntKeyframe(getFraction(), mValue) : + new IntKeyframe(getFraction()); kfClone.setInterpolator(getInterpolator()); return kfClone; } @@ -350,7 +352,9 @@ public abstract class Keyframe implements Cloneable { @Override public FloatKeyframe clone() { - FloatKeyframe kfClone = new FloatKeyframe(getFraction(), mValue); + FloatKeyframe kfClone = mHasValue ? + new FloatKeyframe(getFraction(), mValue) : + new FloatKeyframe(getFraction()); kfClone.setInterpolator(getInterpolator()); return kfClone; }