Skip to content

Commit 52fb227

Browse files
committed
优化滑动,刷新过程中,可以通过滑动显示出RefreshDrawable
1 parent 1ce8d18 commit 52fb227

File tree

1 file changed

+27
-5
lines changed

1 file changed

+27
-5
lines changed

library/src/main/java/com/baoyz/widget/PullRefreshLayout.java

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ private void ensureTarget() {
171171
@Override
172172
public boolean onInterceptTouchEvent(MotionEvent ev) {
173173

174-
if (!isEnabled() || canChildScrollUp()) {
174+
if (!isEnabled() || (canChildScrollUp() && !mRefreshing)) {
175175
return false;
176176
}
177177

@@ -219,6 +219,7 @@ public boolean onInterceptTouchEvent(MotionEvent ev) {
219219
}
220220

221221
return mIsBeingDragged;
222+
// return false;
222223
}
223224

224225
@Override
@@ -242,7 +243,10 @@ public boolean onTouchEvent(MotionEvent ev) {
242243
int targetY;
243244
if (mRefreshing) {
244245
targetY = (int) (mInitialOffsetTop + yDiff);
245-
if (targetY < 0) {
246+
if (canChildScrollUp()) {
247+
targetY = -1;
248+
mInitialMotionY = y;
249+
mInitialOffsetTop = 0;
246250
if (mDispatchTargetTouchDown) {
247251
mTarget.dispatchTouchEvent(ev);
248252
} else {
@@ -251,9 +255,27 @@ public boolean onTouchEvent(MotionEvent ev) {
251255
mDispatchTargetTouchDown = true;
252256
mTarget.dispatchTouchEvent(obtain);
253257
}
254-
targetY = 0;
255-
} else if (targetY > mTotalDragDistance) {
256-
targetY = mTotalDragDistance;
258+
} else {
259+
if (targetY < 0) {
260+
if (mDispatchTargetTouchDown) {
261+
mTarget.dispatchTouchEvent(ev);
262+
} else {
263+
MotionEvent obtain = MotionEvent.obtain(ev);
264+
obtain.setAction(MotionEvent.ACTION_DOWN);
265+
mDispatchTargetTouchDown = true;
266+
mTarget.dispatchTouchEvent(obtain);
267+
}
268+
targetY = 0;
269+
} else if (targetY > mTotalDragDistance) {
270+
targetY = mTotalDragDistance;
271+
} else {
272+
if (mDispatchTargetTouchDown) {
273+
MotionEvent obtain = MotionEvent.obtain(ev);
274+
obtain.setAction(MotionEvent.ACTION_CANCEL);
275+
mDispatchTargetTouchDown = false;
276+
mTarget.dispatchTouchEvent(obtain);
277+
}
278+
}
257279
}
258280
} else {
259281
final float scrollTop = yDiff * DRAG_RATE;

0 commit comments

Comments
 (0)