@@ -36,6 +36,8 @@ class TLRStatusController {
36
36
*/
37
37
private boolean isAutoRefreshing = false ;
38
38
39
+ private boolean isRefreshing = false , isLoading = false ;
40
+
39
41
private TLRUiHandler mTLRUiHandler ;
40
42
41
43
TLRStatusController (TLRCalculator calculator , Context context , AttributeSet attrs ) {
@@ -70,7 +72,7 @@ public void calculateMoveRefreshStatus(boolean moveDown) {
70
72
//y 方向移动正值,切Load为初始状态
71
73
if (totalOffsetY > 0 && mLoadStatus == LoadStatus .IDLE ) {
72
74
if (moveDown ) {//view向下运动
73
- if (mRefreshStatus == RefreshStatus .IDLE ) {
75
+ if (mRefreshStatus == RefreshStatus .IDLE && ! isRefreshing ) {
74
76
notifyRefreshStatusChanged (RefreshStatus .PULL_DOWN );
75
77
}
76
78
if (totalOffsetY >= mRefreshThresholdHeight && mRefreshStatus == RefreshStatus .PULL_DOWN ) {
@@ -100,7 +102,7 @@ public void calculateMoveLoadStatus(boolean moveUp) {
100
102
int totalOffsetY = mCalculator .getTotalOffsetY ();
101
103
if (totalOffsetY < 0 && mRefreshStatus == RefreshStatus .IDLE ) {
102
104
if (moveUp ) {//view向上运动
103
- if (totalOffsetY < 0 && mLoadStatus == LoadStatus .IDLE ) {
105
+ if (mLoadStatus == LoadStatus .IDLE && ! isLoading ) {
104
106
notifyLoadStatusChanged (LoadStatus .PULL_UP );
105
107
}
106
108
if (Math .abs (totalOffsetY ) >= mLoadThresholdHeight && mLoadStatus == LoadStatus .PULL_UP ) {
@@ -151,6 +153,9 @@ private void notifyRefreshStatusChanged(RefreshStatus status) {
151
153
return ;
152
154
}
153
155
mRefreshStatus = status ;
156
+ if (mRefreshStatus == RefreshStatus .REFRESHING ) {
157
+ isRefreshing = true ;
158
+ }
154
159
mTLRUiHandler .onRefreshStatusChanged (mRefreshStatus );
155
160
}
156
161
@@ -159,6 +164,9 @@ private void notifyLoadStatusChanged(LoadStatus status) {
159
164
return ;
160
165
}
161
166
mLoadStatus = status ;
167
+ if (mLoadStatus == LoadStatus .LOADING ) {
168
+ isLoading = true ;
169
+ }
162
170
mTLRUiHandler .onLoadStatusChanged (mLoadStatus );
163
171
}
164
172
@@ -206,4 +214,12 @@ public boolean isReleaseLoad() {
206
214
public void setReleaseLoad (boolean releaseLoad ) {
207
215
isReleaseLoad = releaseLoad ;
208
216
}
217
+
218
+ public void finishRefresh () {
219
+ isRefreshing = false ;
220
+ }
221
+
222
+ public void finishLoad () {
223
+ isLoading = false ;
224
+ }
209
225
}
0 commit comments