@@ -186,6 +186,7 @@ public void onAnimationStart(Animator animation) {
186
186
} else {
187
187
//begin restore
188
188
curStatus = STATUS .RESTORING ;
189
+ stopLoading ();
189
190
if (mOnLoadingListener != null ) {
190
191
mOnLoadingListener .onRestoring ();
191
192
}
@@ -203,11 +204,10 @@ public void onAnimationEnd(Animator animation) {
203
204
204
205
} else {
205
206
//restore over
206
- curStatus = STATUS .IDE ;
207
207
isSizeChanging = false ;
208
- restoreStatus ();
209
- endCallbackListener ();
210
208
nextShrinkReverse = false ;
209
+ toIde ();
210
+
211
211
}
212
212
}
213
213
@@ -221,7 +221,7 @@ public void onAnimationEnd(Animator animation) {
221
221
* @param isReverse true:恢复 ,false:收缩
222
222
* @param lastFrame 是否只显示最后一帧
223
223
*/
224
- private void beginShrinkAnim (boolean isReverse , boolean lastFrame ) {
224
+ private void beginChangeSize (boolean isReverse , boolean lastFrame ) {
225
225
if (enableShrink ) {
226
226
if (mShrinkAnimator .isRunning ()) {
227
227
//如果上一个动画还在执行,就结束到最后一帧
@@ -293,6 +293,13 @@ public void onLayoutChange(View v, int left, int top, int right, int bottom, int
293
293
294
294
}
295
295
296
+ private void toIde () {
297
+ curStatus = STATUS .IDE ;
298
+ restoreStatus ();
299
+ endCallbackListener ();
300
+
301
+ }
302
+
296
303
297
304
/**
298
305
* 如果disableClickOnLoading==true,且不是闲置状态,点击会无效
@@ -312,19 +319,27 @@ public boolean onTouchEvent(MotionEvent event) {
312
319
*/
313
320
private void startLoading () {
314
321
curStatus = STATUS .LOADING ;
315
- mLoadingDrawable .start ();
322
+
323
+ if (!mLoadingDrawable .isRunning ()) {
324
+ mLoadingDrawable .start ();
325
+ }
316
326
317
327
if (mOnLoadingListener != null ) {
318
328
mOnLoadingListener .onLoadingStart ();
319
329
}
320
-
321
330
}
322
331
323
332
/**
324
333
* 停止加载
325
334
*/
326
335
private void stopLoading () {
327
- mLoadingDrawable .stop ();
336
+ if (mLoadingDrawable .isRunning ()) {
337
+ mLoadingDrawable .stop ();
338
+ if (mOnLoadingListener != null ) {
339
+ mOnLoadingListener .onLoadingStop ();
340
+ }
341
+ }
342
+
328
343
}
329
344
330
345
/**
@@ -335,24 +350,20 @@ private void stopLoading() {
335
350
private void cancelAllRunning (boolean withAnim ) {
336
351
switch (curStatus ) {
337
352
case STATUS .SHRINKING :
338
- beginShrinkAnim (true , !withAnim );
339
- stopLoading ();
353
+ beginChangeSize (true , !withAnim );
340
354
break ;
341
355
case STATUS .LOADING :
342
- stopLoading ();
343
356
if (enableShrink ) {
344
- beginShrinkAnim (true , !withAnim );
357
+ beginChangeSize (true , !withAnim );
345
358
} else {
346
- endCallbackListener ();
347
- restoreStatus ();
348
- curStatus = STATUS .IDE ;
359
+ toIde ();
349
360
}
350
361
break ;
351
362
case STATUS .END_DRAWABLE_SHOWING :
352
363
if (mEndDrawable != null ) {
353
364
mEndDrawable .cancel (withAnim );
354
365
} else {
355
- beginShrinkAnim (true , !withAnim );
366
+ beginChangeSize (true , !withAnim );
356
367
}
357
368
break ;
358
369
case STATUS .RESTORING :
@@ -376,12 +387,13 @@ private void cancelAllRunning(boolean withAnim) {
376
387
*/
377
388
public void start () {
378
389
//cancel last loading
390
+
379
391
if (curStatus == STATUS .SHRINKING || curStatus == STATUS .LOADING )
380
392
isCancel = true ;
381
393
cancelAllRunning (false );
382
394
383
395
if (enableShrink ) {
384
- beginShrinkAnim (false , false );
396
+ beginChangeSize (false , false );
385
397
} else {
386
398
saveStatus ();
387
399
if (TextUtils .isEmpty (getText ())) {
@@ -403,32 +415,26 @@ public void start() {
403
415
*/
404
416
private void end (boolean isFail ) {
405
417
406
- //end running Shrinking
407
- if (mShrinkAnimator .isRunning ()) {
408
- mShrinkAnimator .end ();
409
- }
410
-
411
- //StopLoading
412
- stopLoading ();
413
- if (!enableShrink && mOnLoadingListener != null ) {
414
- mOnLoadingListener .onLoadingStop ();
415
- }
416
-
417
418
if (mEndDrawable != null ) {
419
+ if (mShrinkAnimator .isRunning ())
420
+ mShrinkAnimator .end ();
421
+
422
+ stopLoading ();
418
423
mEndDrawable .show (isFail );
419
424
} else {
420
425
//No EndDrawable,enableShrink
426
+ this .isFail = isFail ;
427
+
421
428
if (enableShrink ) {
422
429
if (curStatus == STATUS .LOADING )
423
- beginShrinkAnim (true , false );
430
+ beginChangeSize (true , false );
424
431
else
425
- beginShrinkAnim (true , true );
432
+ beginChangeSize (true , true );
426
433
427
434
} else {
428
435
//No EndDrawable,disableShrink
429
- curStatus = STATUS .IDE ;
430
- restoreStatus ();
431
- endCallbackListener ();
436
+ stopLoading ();
437
+ toIde ();
432
438
}
433
439
434
440
@@ -734,11 +740,9 @@ private void init() {
734
740
public void run () {
735
741
setAnimValue (0 );
736
742
if (enableShrink )
737
- beginShrinkAnim (true , !nextShrinkReverse );
743
+ beginChangeSize (true , !nextShrinkReverse );
738
744
else {
739
- curStatus = STATUS .IDE ;
740
- restoreStatus ();
741
- endCallbackListener ();
745
+ toIde ();
742
746
}
743
747
isShowing = false ;
744
748
}
@@ -789,16 +793,16 @@ private void show(boolean isFail) {
789
793
*/
790
794
private void cancel (boolean withAnim ) {
791
795
isShowing = false ;
796
+
797
+ getHandler ().removeCallbacks (mRunnable );
792
798
if (mAppearAnimator .isRunning ()) {
793
799
mAppearAnimator .end ();
794
800
}
795
- getHandler (). removeCallbacks ( mRunnable );
801
+
796
802
if (enableShrink )
797
- beginShrinkAnim (true , !withAnim );
803
+ beginChangeSize (true , !withAnim );
798
804
else {
799
- endCallbackListener ();
800
- restoreStatus ();
801
- curStatus = STATUS .IDE ;
805
+ toIde ();
802
806
}
803
807
setAnimValue (0 );
804
808
}
0 commit comments