From f17e87555ec61e70d237a548f759feea7aa7e5bf Mon Sep 17 00:00:00 2001 From: dingqiqi Date: Sat, 8 Oct 2016 17:13:53 +0800 Subject: [PATCH 1/2] =?UTF-8?q?1=E3=80=81Resolving=20a=20fragment=20in=20a?= =?UTF-8?q?=20refresh=20can=20not=20be=20stopped=202=E3=80=81Modify=20When?= =?UTF-8?q?=20the=20drop-down=20to=20refresh=20a=20certain=20distance=20wh?= =?UTF-8?q?en=20the=20slide=20to=20let=20go,=20the=20control=20on=20the=20?= =?UTF-8?q?card=20does=20not=20move?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tuesda/walker/circlerefresh/AnimationView.java | 11 ++++++----- .../walker/circlerefresh/CircleRefreshLayout.java | 7 +++++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/circlerefresh/src/main/java/com/tuesda/walker/circlerefresh/AnimationView.java b/circlerefresh/src/main/java/com/tuesda/walker/circlerefresh/AnimationView.java index 364834e..800d22d 100644 --- a/circlerefresh/src/main/java/com/tuesda/walker/circlerefresh/AnimationView.java +++ b/circlerefresh/src/main/java/com/tuesda/walker/circlerefresh/AnimationView.java @@ -374,7 +374,8 @@ private void drawDone(Canvas canvas) { private int mLastHeight; private int getRelHeight() { - return (int) (mSpriDeta * (1 - getRelRatio())); + //Modify When the drop-down to refresh a certain distance when the slide to let go, the control on the card does not move + return (mSpriDeta * (1 - getRelRatio())) > 0 ? (int) (mSpriDeta * (1 - getRelRatio())) : 0; } private int getSpringDelta() { @@ -382,7 +383,7 @@ private int getSpringDelta() { } - private static long REL_DRAG_DUR = 200; + private static long REL_DRAG_DUR = 100; private long mStart; private long mStop; @@ -427,7 +428,7 @@ private float getSprRatio() { return Math.min(1, ratio); } - private static final long POP_BALL_DUR = 300; + private static final long POP_BALL_DUR = 200; private long mPopStart; private long mPopStop; @@ -448,7 +449,7 @@ private float getPopRatio() { return Math.min(ratio, 1); } - private static final long OUTER_DUR = 200; + private static final long OUTER_DUR = 100; private long mOutStart; private long mOutStop; @@ -474,7 +475,7 @@ private float getOutRatio() { return Math.min(ratio, 1); } - private static final long DONE_DUR = 1000; + private static final long DONE_DUR = 300; private long mDoneStart; private long mDoneStop; 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..d4c16fe 100644 --- a/circlerefresh/src/main/java/com/tuesda/walker/circlerefresh/CircleRefreshLayout.java +++ b/circlerefresh/src/main/java/com/tuesda/walker/circlerefresh/CircleRefreshLayout.java @@ -21,7 +21,7 @@ public class CircleRefreshLayout extends FrameLayout { private static String TAG = "pullToRefresh"; - private static final long BACK_TOP_DUR = 600; + private static final long BACK_TOP_DUR = 400; private static final long REL_DRAG_DUR = 200; private int mHeaderBackColor = 0xff8b90af; @@ -135,7 +135,10 @@ public void onAnimationUpdate(ValueAnimator animation) { @Override public void viewAniDone() { // Log.i(TAG, "should invoke"); - mUpTopAnimator.start(); + //Resolving a fragment in a refresh can not be stopped + if(!mUpTopAnimator.isStarted()) { + mUpTopAnimator.start(); + } } }); From 894dab924bec774db9ed17e98be7de75871454cc Mon Sep 17 00:00:00 2001 From: dingqiqi Date: Wed, 19 Oct 2016 17:50:14 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=81=9C=E6=AD=A2?= =?UTF-8?q?=E5=88=B7=E6=96=B0=EF=BC=8C=E7=AD=89=E5=8A=A8=E7=94=BB=E7=BB=93?= =?UTF-8?q?=E6=9D=9F=E6=A0=87=E5=BF=97=E4=BD=8D=E5=9C=A8=E9=87=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../circlerefresh/CircleRefreshLayout.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) 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 d4c16fe..740f0c9 100644 --- a/circlerefresh/src/main/java/com/tuesda/walker/circlerefresh/CircleRefreshLayout.java +++ b/circlerefresh/src/main/java/com/tuesda/walker/circlerefresh/CircleRefreshLayout.java @@ -6,6 +6,7 @@ import android.support.annotation.NonNull; import android.support.v4.view.ViewCompat; import android.util.AttributeSet; +import android.util.Log; import android.util.TypedValue; import android.view.Gravity; import android.view.MotionEvent; @@ -127,6 +128,9 @@ public void onAnimationUpdate(ValueAnimator animation) { } mHeader.getLayoutParams().height = (int) val; mHeader.requestLayout(); + if (mHeader.getLayoutParams().height == 0) { + mIsRefreshing = false; + } } }); mUpTopAnimator.setDuration(BACK_TOP_DUR); @@ -136,7 +140,7 @@ public void onAnimationUpdate(ValueAnimator animation) { public void viewAniDone() { // Log.i(TAG, "should invoke"); //Resolving a fragment in a refresh can not be stopped - if(!mUpTopAnimator.isStarted()) { + if (!mUpTopAnimator.isStarted()) { mUpTopAnimator.start(); } } @@ -165,14 +169,13 @@ private boolean canChildScrollUp() { return false; } - return ViewCompat.canScrollVertically(mChildView, -1); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { if (mIsRefreshing) { - return true; + return false; } switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: @@ -192,7 +195,8 @@ public boolean onInterceptTouchEvent(MotionEvent ev) { @Override public boolean onTouchEvent(MotionEvent event) { if (mIsRefreshing) { - return super.onTouchEvent(event); + // return super.onTouchEvent(event); + return false; } switch (event.getAction()) { @@ -221,7 +225,7 @@ public boolean onTouchEvent(MotionEvent event) { mUpBackAnimator.start(); mHeader.releaseDrag(); mIsRefreshing = true; - if (onCircleRefreshListener!=null) { + if (onCircleRefreshListener != null) { onCircleRefreshListener.refreshing(); } @@ -254,7 +258,7 @@ public void finishRefreshing() { if (onCircleRefreshListener != null) { onCircleRefreshListener.completeRefresh(); } - mIsRefreshing = false; +// mIsRefreshing = false; mHeader.setRefreshing(false); }