private void animateOffsetToCorrectPosition() { mFrom = mCurrentOffsetTop; mFromDragPercent = mCurrentDragPercent; mAnimateToCorrectPosition.reset(); mAnimateToCorrectPosition.setDuration(MAX_OFFSET_ANIMATION_DURATION); mAnimateToCorrectPosition.setInterpolator(mDecelerateInterpolator); mRefreshView.clearAnimation(); mRefreshView.startAnimation(mAnimateToCorrectPosition); if (mRefreshing) { mBaseRefreshView.start(); if (mNotify) { if (mListener != null) { mListener.onRefresh(); } } } else { mBaseRefreshView.stop(); animateOffsetToStartPosition(); } mCurrentOffsetTop = mTarget.getTop(); mTarget.setPadding( mTargetPaddingLeft, mTargetPaddingTop, mTargetPaddingRight, mTotalDragDistance); }
@Override public void onAnimationEnd(Animation animation) { mBaseRefreshView.stop(); mCurrentOffsetTop = mTarget.getTop(); }