private void animatePropertyBy(int constantName,float startValue,float byValue){
  if (mAnimatorMap.size() > 0) {
    Animator animatorToCancel=null;
    Set<Animator> animatorSet=mAnimatorMap.keySet();
    for (    Animator runningAnim : animatorSet) {
      PropertyBundle bundle=mAnimatorMap.get(runningAnim);
      if (bundle.cancel(constantName)) {
        if (bundle.mPropertyMask == NONE) {
          animatorToCancel=runningAnim;
          break;
        }
      }
    }
    if (animatorToCancel != null) {
      animatorToCancel.cancel();
    }
  }
  NameValuesHolder nameValuePair=new NameValuesHolder(constantName,startValue,byValue);
  mPendingAnimations.add(nameValuePair);
  View v=mView.get();
  if (v != null) {
    v.removeCallbacks(mAnimationStarter);
    v.post(mAnimationStarter);
  }
}

private void animatePropertyBy ( int constantName , float startValue , float byValue ) { if ( mAnimatorMap . size ( ) > 0 ) { Animator animatorToCancel = null ; Set < Animator > animatorSet = mAnimatorMap . keySet ( ) ; for ( Animator runningAnim : animatorSet ) { PropertyBundle bundle = mAnimatorMap . get ( runningAnim ) ; if ( bundle . cancel ( constantName ) ) { if ( bundle . mPropertyMask == NONE ) { animatorToCancel = runningAnim ; break ; } } } if ( animatorToCancel != null ) { animatorToCancel . cancel ( ) ; } } NameValuesHolder nameValuePair = new NameValuesHolder ( constantName , startValue , byValue ) ; mPendingAnimations . add ( nameValuePair ) ; View v = mView . get ( ) ; if ( v != null ) { v . removeCallbacks ( mAnimationStarter ) ; v . post ( mAnimationStarter ) ; } }
utility function , called by animateproperty ( ) and animatepropertyby ( ) , which handles the details of adding a pending animation and posting the request to start the animation .
