android.animation: prevent NullPointerExceptions

This commit is contained in:
Julian Winkler
2025-06-16 16:37:11 +02:00
committed by Mis012
parent b7843665ef
commit a57da8fcb5
2 changed files with 21 additions and 5 deletions

View File

@@ -576,7 +576,7 @@ public final class ObjectAnimator extends ValueAnimator {
// mValueType may change due to setter/getter setup; do this before calling super.init(), // mValueType may change due to setter/getter setup; do this before calling super.init(),
// which uses mValueType to set up the default type evaluator. // which uses mValueType to set up the default type evaluator.
final Object target = getTarget(); final Object target = getTarget();
if (target != null) { if (target != null && mValues != null) {
final int numValues = mValues.length; final int numValues = mValues.length;
for (int i = 0; i < numValues; ++i) { for (int i = 0; i < numValues; ++i) {
mValues[i].setupSetterAndGetter(target); mValues[i].setupSetterAndGetter(target);
@@ -668,11 +668,13 @@ public final class ObjectAnimator extends ValueAnimator {
void animateValue(float fraction) { void animateValue(float fraction) {
final Object target = getTarget(); final Object target = getTarget();
super.animateValue(fraction); super.animateValue(fraction);
if (mValues != null) {
int numValues = mValues.length; int numValues = mValues.length;
for (int i = 0; i < numValues; ++i) { for (int i = 0; i < numValues; ++i) {
mValues[i].setAnimatedValue(target); mValues[i].setAnimatedValue(target);
} }
} }
}
@Override @Override
boolean isInitialized() { boolean isInitialized() {

View File

@@ -18,6 +18,7 @@ public class PropertyValuesHolder {
PropertyValuesHolder propertyValuesHolder = new PropertyValuesHolder(); PropertyValuesHolder propertyValuesHolder = new PropertyValuesHolder();
propertyValuesHolder.values_float = values; propertyValuesHolder.values_float = values;
propertyValuesHolder.property_name = propertyName; propertyValuesHolder.property_name = propertyName;
propertyValuesHolder.value = values[0];
return propertyValuesHolder; return propertyValuesHolder;
} }
@@ -25,6 +26,7 @@ public class PropertyValuesHolder {
PropertyValuesHolder propertyValuesHolder = new PropertyValuesHolder(); PropertyValuesHolder propertyValuesHolder = new PropertyValuesHolder();
propertyValuesHolder.values_object = values; propertyValuesHolder.values_object = values;
propertyValuesHolder.property_name = propertyName; propertyValuesHolder.property_name = propertyName;
propertyValuesHolder.value = values[0];
return propertyValuesHolder; return propertyValuesHolder;
} }
@@ -32,6 +34,7 @@ public class PropertyValuesHolder {
PropertyValuesHolder propertyValuesHolder = new PropertyValuesHolder(); PropertyValuesHolder propertyValuesHolder = new PropertyValuesHolder();
propertyValuesHolder.values_int = values; propertyValuesHolder.values_int = values;
propertyValuesHolder.property_name = propertyName; propertyValuesHolder.property_name = propertyName;
propertyValuesHolder.value = values[0];
return propertyValuesHolder; return propertyValuesHolder;
} }
@@ -40,6 +43,7 @@ public class PropertyValuesHolder {
propertyValuesHolder.values_float = values; propertyValuesHolder.values_float = values;
propertyValuesHolder.property_name = property.getName(); propertyValuesHolder.property_name = property.getName();
propertyValuesHolder.property = property; propertyValuesHolder.property = property;
propertyValuesHolder.value = values[0];
return propertyValuesHolder; return propertyValuesHolder;
} }
@@ -48,6 +52,7 @@ public class PropertyValuesHolder {
propertyValuesHolder.values_object = values; propertyValuesHolder.values_object = values;
propertyValuesHolder.property_name = property.getName(); propertyValuesHolder.property_name = property.getName();
propertyValuesHolder.property = property; propertyValuesHolder.property = property;
propertyValuesHolder.value = values[0];
return propertyValuesHolder; return propertyValuesHolder;
} }
@@ -56,6 +61,7 @@ public class PropertyValuesHolder {
propertyValuesHolder.values_int = values; propertyValuesHolder.values_int = values;
propertyValuesHolder.property_name = property.getName(); propertyValuesHolder.property_name = property.getName();
propertyValuesHolder.property = property; propertyValuesHolder.property = property;
propertyValuesHolder.value = values[0];
return propertyValuesHolder; return propertyValuesHolder;
} }
@@ -110,7 +116,15 @@ public class PropertyValuesHolder {
} }
public PropertyValuesHolder clone() { 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) { public void setupSetterAndGetter(Object target) {