Merge "Add additional type check for animating along a path"
diff --git a/core/java/android/animation/AnimatorInflater.java b/core/java/android/animation/AnimatorInflater.java
index 7d5931f..f69bbfd3 100644
--- a/core/java/android/animation/AnimatorInflater.java
+++ b/core/java/android/animation/AnimatorInflater.java
@@ -439,8 +439,7 @@
         }
 
         if (arrayObjectAnimator != null) {
-            setupObjectAnimator(anim, arrayObjectAnimator, valueType == VALUE_TYPE_FLOAT,
-                    pixelSize);
+            setupObjectAnimator(anim, arrayObjectAnimator, valueType, pixelSize);
         }
     }
 
@@ -494,7 +493,7 @@
      *                  maximum error for path animations.
      */
     private static void setupObjectAnimator(ValueAnimator anim, TypedArray arrayObjectAnimator,
-            boolean getFloats, float pixelSize) {
+            int valueType, float pixelSize) {
         ObjectAnimator oa = (ObjectAnimator) anim;
         String pathData = arrayObjectAnimator.getString(R.styleable.PropertyAnimator_pathData);
 
@@ -512,6 +511,11 @@
             String propertyYName =
                     arrayObjectAnimator.getString(R.styleable.PropertyAnimator_propertyYName);
 
+            if (valueType == VALUE_TYPE_PATH || valueType == VALUE_TYPE_UNDEFINED) {
+                // When pathData is defined, we are in case #2 mentioned above. ValueType can only
+                // be float type, or int type. Otherwise we fallback to default type.
+                valueType = VALUE_TYPE_FLOAT;
+            }
             if (propertyXName == null && propertyYName == null) {
                 throw new InflateException(arrayObjectAnimator.getPositionDescription()
                         + " propertyXName or propertyYName is needed for PathData");
@@ -521,7 +525,7 @@
                 PathKeyframes keyframeSet = KeyframeSet.ofPath(path, error);
                 Keyframes xKeyframes;
                 Keyframes yKeyframes;
-                if (getFloats) {
+                if (valueType == VALUE_TYPE_FLOAT) {
                     xKeyframes = keyframeSet.createXFloatKeyframes();
                     yKeyframes = keyframeSet.createYFloatKeyframes();
                 } else {