diff --git a/circlerefresh/src/main/java/com/tuesda/walker/circlerefresh/CircleRefreshLayout.java b/circlerefresh/src/main/java/com/tuesda/walker/circlerefresh/CircleRefreshLayout.java index cc8e8fe..788ad1c 100644 --- a/circlerefresh/src/main/java/com/tuesda/walker/circlerefresh/CircleRefreshLayout.java +++ b/circlerefresh/src/main/java/com/tuesda/walker/circlerefresh/CircleRefreshLayout.java @@ -253,8 +253,48 @@ public void finishRefreshing() { } mIsRefreshing = false; mHeader.setRefreshing(false); + + new Timer().schedule(new TimerTask() { + + @Override + public void run() { + Activity activity = (Activity) context; + activity.runOnUiThread(new Runnable() { + + @Override + public void run() { + back(); + } + }); + + } + }, 500); + } + public boolean isRefreshing() { + return mIsRefreshing; + } + + private void back() { + float height = mChildView.getTranslationY(); + ValueAnimator backTopAni = ValueAnimator.ofFloat(height, 0); + backTopAni.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator animation) { + float val = (float) animation.getAnimatedValue(); + val = decelerateInterpolator.getInterpolation(val / mHeaderHeight) * val; + if (mChildView != null) { + mChildView.setTranslationY(val); + } + mHeader.getLayoutParams().height = (int) val; + mHeader.requestLayout(); + } + }); + backTopAni.setDuration((long) (height * BACK_TOP_DUR / mHeaderHeight)); + backTopAni.start(); + } + private OnCircleRefreshListener onCircleRefreshListener; public void setOnRefreshListener(OnCircleRefreshListener onCircleRefreshListener) {