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
This commit is contained in:
Chet Haase
2012-09-10 13:42:07 -07:00
parent a3909a9395
commit 00177e483d

View File

@@ -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;
}