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