diff --git a/src/api-impl/android/animation/ObjectAnimator.java b/src/api-impl/android/animation/ObjectAnimator.java index 0d4de497..e6a68250 100644 --- a/src/api-impl/android/animation/ObjectAnimator.java +++ b/src/api-impl/android/animation/ObjectAnimator.java @@ -576,7 +576,7 @@ public final class ObjectAnimator extends ValueAnimator { // mValueType may change due to setter/getter setup; do this before calling super.init(), // which uses mValueType to set up the default type evaluator. final Object target = getTarget(); - if (target != null) { + if (target != null && mValues != null) { final int numValues = mValues.length; for (int i = 0; i < numValues; ++i) { mValues[i].setupSetterAndGetter(target); @@ -668,9 +668,11 @@ public final class ObjectAnimator extends ValueAnimator { void animateValue(float fraction) { final Object target = getTarget(); super.animateValue(fraction); - int numValues = mValues.length; - for (int i = 0; i < numValues; ++i) { - mValues[i].setAnimatedValue(target); + if (mValues != null) { + int numValues = mValues.length; + for (int i = 0; i < numValues; ++i) { + mValues[i].setAnimatedValue(target); + } } } diff --git a/src/api-impl/android/animation/PropertyValuesHolder.java b/src/api-impl/android/animation/PropertyValuesHolder.java index 17abcf36..7195171e 100644 --- a/src/api-impl/android/animation/PropertyValuesHolder.java +++ b/src/api-impl/android/animation/PropertyValuesHolder.java @@ -18,6 +18,7 @@ public class PropertyValuesHolder { PropertyValuesHolder propertyValuesHolder = new PropertyValuesHolder(); propertyValuesHolder.values_float = values; propertyValuesHolder.property_name = propertyName; + propertyValuesHolder.value = values[0]; return propertyValuesHolder; } @@ -25,6 +26,7 @@ public class PropertyValuesHolder { PropertyValuesHolder propertyValuesHolder = new PropertyValuesHolder(); propertyValuesHolder.values_object = values; propertyValuesHolder.property_name = propertyName; + propertyValuesHolder.value = values[0]; return propertyValuesHolder; } @@ -32,6 +34,7 @@ public class PropertyValuesHolder { PropertyValuesHolder propertyValuesHolder = new PropertyValuesHolder(); propertyValuesHolder.values_int = values; propertyValuesHolder.property_name = propertyName; + propertyValuesHolder.value = values[0]; return propertyValuesHolder; } @@ -40,6 +43,7 @@ public class PropertyValuesHolder { propertyValuesHolder.values_float = values; propertyValuesHolder.property_name = property.getName(); propertyValuesHolder.property = property; + propertyValuesHolder.value = values[0]; return propertyValuesHolder; } @@ -48,6 +52,7 @@ public class PropertyValuesHolder { propertyValuesHolder.values_object = values; propertyValuesHolder.property_name = property.getName(); propertyValuesHolder.property = property; + propertyValuesHolder.value = values[0]; return propertyValuesHolder; } @@ -56,6 +61,7 @@ public class PropertyValuesHolder { propertyValuesHolder.values_int = values; propertyValuesHolder.property_name = property.getName(); propertyValuesHolder.property = property; + propertyValuesHolder.value = values[0]; return propertyValuesHolder; } @@ -110,7 +116,15 @@ public class PropertyValuesHolder { } public PropertyValuesHolder clone() { - return null; + PropertyValuesHolder propertyValuesHolder = new PropertyValuesHolder(); + propertyValuesHolder.property = property; + propertyValuesHolder.property_name = property_name; + propertyValuesHolder.setter = setter; + propertyValuesHolder.value = value; + propertyValuesHolder.values_float = values_float; + propertyValuesHolder.values_int = values_int; + propertyValuesHolder.values_object = values_object; + return propertyValuesHolder; } public void setupSetterAndGetter(Object target) {