@@ -186,6 +186,7 @@ public void onAnimationStart(Animator animation) {
186186 } else {
187187 //begin restore
188188 curStatus = STATUS .RESTORING ;
189+ stopLoading ();
189190 if (mOnLoadingListener != null ) {
190191 mOnLoadingListener .onRestoring ();
191192 }
@@ -203,11 +204,10 @@ public void onAnimationEnd(Animator animation) {
203204
204205 } else {
205206 //restore over
206- curStatus = STATUS .IDE ;
207207 isSizeChanging = false ;
208- restoreStatus ();
209- endCallbackListener ();
210208 nextShrinkReverse = false ;
209+ toIde ();
210+
211211 }
212212 }
213213
@@ -221,7 +221,7 @@ public void onAnimationEnd(Animator animation) {
221221 * @param isReverse true:恢复 ,false:收缩
222222 * @param lastFrame 是否只显示最后一帧
223223 */
224- private void beginShrinkAnim (boolean isReverse , boolean lastFrame ) {
224+ private void beginChangeSize (boolean isReverse , boolean lastFrame ) {
225225 if (enableShrink ) {
226226 if (mShrinkAnimator .isRunning ()) {
227227 //如果上一个动画还在执行,就结束到最后一帧
@@ -293,6 +293,13 @@ public void onLayoutChange(View v, int left, int top, int right, int bottom, int
293293
294294 }
295295
296+ private void toIde () {
297+ curStatus = STATUS .IDE ;
298+ restoreStatus ();
299+ endCallbackListener ();
300+
301+ }
302+
296303
297304 /**
298305 * 如果disableClickOnLoading==true,且不是闲置状态,点击会无效
@@ -312,19 +319,27 @@ public boolean onTouchEvent(MotionEvent event) {
312319 */
313320 private void startLoading () {
314321 curStatus = STATUS .LOADING ;
315- mLoadingDrawable .start ();
322+
323+ if (!mLoadingDrawable .isRunning ()) {
324+ mLoadingDrawable .start ();
325+ }
316326
317327 if (mOnLoadingListener != null ) {
318328 mOnLoadingListener .onLoadingStart ();
319329 }
320-
321330 }
322331
323332 /**
324333 * 停止加载
325334 */
326335 private void stopLoading () {
327- mLoadingDrawable .stop ();
336+ if (mLoadingDrawable .isRunning ()) {
337+ mLoadingDrawable .stop ();
338+ if (mOnLoadingListener != null ) {
339+ mOnLoadingListener .onLoadingStop ();
340+ }
341+ }
342+
328343 }
329344
330345 /**
@@ -335,24 +350,20 @@ private void stopLoading() {
335350 private void cancelAllRunning (boolean withAnim ) {
336351 switch (curStatus ) {
337352 case STATUS .SHRINKING :
338- beginShrinkAnim (true , !withAnim );
339- stopLoading ();
353+ beginChangeSize (true , !withAnim );
340354 break ;
341355 case STATUS .LOADING :
342- stopLoading ();
343356 if (enableShrink ) {
344- beginShrinkAnim (true , !withAnim );
357+ beginChangeSize (true , !withAnim );
345358 } else {
346- endCallbackListener ();
347- restoreStatus ();
348- curStatus = STATUS .IDE ;
359+ toIde ();
349360 }
350361 break ;
351362 case STATUS .END_DRAWABLE_SHOWING :
352363 if (mEndDrawable != null ) {
353364 mEndDrawable .cancel (withAnim );
354365 } else {
355- beginShrinkAnim (true , !withAnim );
366+ beginChangeSize (true , !withAnim );
356367 }
357368 break ;
358369 case STATUS .RESTORING :
@@ -376,12 +387,13 @@ private void cancelAllRunning(boolean withAnim) {
376387 */
377388 public void start () {
378389 //cancel last loading
390+
379391 if (curStatus == STATUS .SHRINKING || curStatus == STATUS .LOADING )
380392 isCancel = true ;
381393 cancelAllRunning (false );
382394
383395 if (enableShrink ) {
384- beginShrinkAnim (false , false );
396+ beginChangeSize (false , false );
385397 } else {
386398 saveStatus ();
387399 if (TextUtils .isEmpty (getText ())) {
@@ -403,32 +415,26 @@ public void start() {
403415 */
404416 private void end (boolean isFail ) {
405417
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-
417418 if (mEndDrawable != null ) {
419+ if (mShrinkAnimator .isRunning ())
420+ mShrinkAnimator .end ();
421+
422+ stopLoading ();
418423 mEndDrawable .show (isFail );
419424 } else {
420425 //No EndDrawable,enableShrink
426+ this .isFail = isFail ;
427+
421428 if (enableShrink ) {
422429 if (curStatus == STATUS .LOADING )
423- beginShrinkAnim (true , false );
430+ beginChangeSize (true , false );
424431 else
425- beginShrinkAnim (true , true );
432+ beginChangeSize (true , true );
426433
427434 } else {
428435 //No EndDrawable,disableShrink
429- curStatus = STATUS .IDE ;
430- restoreStatus ();
431- endCallbackListener ();
436+ stopLoading ();
437+ toIde ();
432438 }
433439
434440
@@ -734,11 +740,9 @@ private void init() {
734740 public void run () {
735741 setAnimValue (0 );
736742 if (enableShrink )
737- beginShrinkAnim (true , !nextShrinkReverse );
743+ beginChangeSize (true , !nextShrinkReverse );
738744 else {
739- curStatus = STATUS .IDE ;
740- restoreStatus ();
741- endCallbackListener ();
745+ toIde ();
742746 }
743747 isShowing = false ;
744748 }
@@ -789,16 +793,16 @@ private void show(boolean isFail) {
789793 */
790794 private void cancel (boolean withAnim ) {
791795 isShowing = false ;
796+
797+ getHandler ().removeCallbacks (mRunnable );
792798 if (mAppearAnimator .isRunning ()) {
793799 mAppearAnimator .end ();
794800 }
795- getHandler (). removeCallbacks ( mRunnable );
801+
796802 if (enableShrink )
797- beginShrinkAnim (true , !withAnim );
803+ beginChangeSize (true , !withAnim );
798804 else {
799- endCallbackListener ();
800- restoreStatus ();
801- curStatus = STATUS .IDE ;
805+ toIde ();
802806 }
803807 setAnimValue (0 );
804808 }
0 commit comments