question: 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 ) ; } }
target:  Utility function, called by animateProperty() and animatePropertyBy(), which handles the details of adding a pending animation and posting the request to start the animation.