Skip to content

Commit ed96626

Browse files
committed
添加刷过程中的状态处理
1 parent a2e0a47 commit ed96626

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

library/src/main/java/com/think/tlr/TLRCalculator.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,13 +406,17 @@ public void finishRefresh(boolean isSuccess, int errorCode) {
406406
if (isKeepHeadRefreshing) {
407407
resetKeepView();
408408
}
409+
409410
mTLRUiHandler.onFinish(true, isSuccess, errorCode);
411+
412+
mStatusController.finishRefresh();
410413
}
411414

412415
public void finishLoad(boolean isSuccess, int errorCode) {
413416
if (isKeepFootLoading) {
414417
resetKeepView();
415418
}
419+
mStatusController.finishLoad();
416420
mTLRUiHandler.onFinish(false, isSuccess, errorCode);
417421
}
418422

library/src/main/java/com/think/tlr/TLRStatusController.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ class TLRStatusController {
3636
*/
3737
private boolean isAutoRefreshing = false;
3838

39+
private boolean isRefreshing = false, isLoading = false;
40+
3941
private TLRUiHandler mTLRUiHandler;
4042

4143
TLRStatusController(TLRCalculator calculator, Context context, AttributeSet attrs) {
@@ -70,7 +72,7 @@ public void calculateMoveRefreshStatus(boolean moveDown) {
7072
//y 方向移动正值,切Load为初始状态
7173
if (totalOffsetY > 0 && mLoadStatus == LoadStatus.IDLE) {
7274
if (moveDown) {//view向下运动
73-
if (mRefreshStatus == RefreshStatus.IDLE) {
75+
if (mRefreshStatus == RefreshStatus.IDLE && !isRefreshing) {
7476
notifyRefreshStatusChanged(RefreshStatus.PULL_DOWN);
7577
}
7678
if (totalOffsetY >= mRefreshThresholdHeight && mRefreshStatus == RefreshStatus.PULL_DOWN) {
@@ -100,7 +102,7 @@ public void calculateMoveLoadStatus(boolean moveUp) {
100102
int totalOffsetY = mCalculator.getTotalOffsetY();
101103
if (totalOffsetY < 0 && mRefreshStatus == RefreshStatus.IDLE) {
102104
if (moveUp) {//view向上运动
103-
if (totalOffsetY < 0 && mLoadStatus == LoadStatus.IDLE) {
105+
if (mLoadStatus == LoadStatus.IDLE && !isLoading) {
104106
notifyLoadStatusChanged(LoadStatus.PULL_UP);
105107
}
106108
if (Math.abs(totalOffsetY) >= mLoadThresholdHeight && mLoadStatus == LoadStatus.PULL_UP) {
@@ -151,6 +153,9 @@ private void notifyRefreshStatusChanged(RefreshStatus status) {
151153
return;
152154
}
153155
mRefreshStatus = status;
156+
if (mRefreshStatus == RefreshStatus.REFRESHING) {
157+
isRefreshing = true;
158+
}
154159
mTLRUiHandler.onRefreshStatusChanged(mRefreshStatus);
155160
}
156161

@@ -159,6 +164,9 @@ private void notifyLoadStatusChanged(LoadStatus status) {
159164
return;
160165
}
161166
mLoadStatus = status;
167+
if (mLoadStatus == LoadStatus.LOADING) {
168+
isLoading = true;
169+
}
162170
mTLRUiHandler.onLoadStatusChanged(mLoadStatus);
163171
}
164172

@@ -206,4 +214,12 @@ public boolean isReleaseLoad() {
206214
public void setReleaseLoad(boolean releaseLoad) {
207215
isReleaseLoad = releaseLoad;
208216
}
217+
218+
public void finishRefresh() {
219+
isRefreshing = false;
220+
}
221+
222+
public void finishLoad() {
223+
isLoading = false;
224+
}
209225
}

0 commit comments

Comments
 (0)