question: public boolean computeAngleOffset ( ) { if ( mFinished ) { return false ; } long systemClock = AnimationUtils . currentAnimationTimeMillis ( ) ; long timePassed = systemClock - mStartTime ; if ( timePassed < mDuration ) { switch ( mMode ) { case SCROLL_MODE : float sc = ( float ) timePassed / mDuration ; mCurrAngle = mStartAngle + Math . round ( mDeltaAngle * sc ) ; break ; case FLING_MODE : float timePassedSeconds = timePassed / 1000.0f ; float distance ; if ( mVelocity < 0 ) { distance = mCoeffVelocity * mVelocity * timePassedSeconds - ( mDeceleration * timePassedSeconds * timePassedSeconds / 2.0f ) ; } else { distance = - mCoeffVelocity * mVelocity * timePassedSeconds - ( mDeceleration * timePassedSeconds * timePassedSeconds / 2.0f ) ; } mCurrAngle = mStartAngle - Math . signum ( mVelocity ) * Math . round ( distance ) ; break ; } return true ; } else { mFinished = true ; return false ; } }
target:  Call this when you want to know the new location. If it returns true, the animation is not yet finished. loc will be altered to provide the new location.