code: public void setIntValues(int... values) {
          if (values == null || values.length == 0) {
              return;
          }
          if (mValues == null || mValues.length == 0) {
              setValues(new PropertyValuesHolder[]{PropertyValuesHolder.ofInt("", values)});
          } else {
              PropertyValuesHolder valuesHolder = mValues[0];
              valuesHolder.setIntValues(values);
          }
          // New property/values/target should cause re-initialization prior to starting
          mInitialized = false;
      }
docs: Sets int values that will be animated between. A single
  value implies that that value is the one being animated to. However, this is not typically
  useful in a ValueAnimator object because there is no way for the object to determine the
  starting value for the animation (unlike ObjectAnimator, which can derive that value
  from the target object and property being animated). Therefore, there should typically
  be two or more values.
  
  <p>If there are already multiple sets of values defined for this ValueAnimator via more
  than one PropertyValuesHolder object, this method will set the values for the first
  of those objects.</p>
  
  @param values A set of values that the animation will animate between over time.