Skip to content

Commit 68e396c

Browse files
committed
修复未设置EndDrawable出现的无法结束loading的错误,
修复无文字时的错误
1 parent e80e3f4 commit 68e396c

File tree

4 files changed

+60
-45
lines changed

4 files changed

+60
-45
lines changed

Loadingbutton-support/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ android {
77
defaultConfig {
88
minSdkVersion 17
99
targetSdkVersion 28
10-
versionCode 103
11-
versionName "1.0.3"
10+
versionCode 104
11+
versionName "1.0.4"
1212
}
1313

1414
buildTypes {

Loadingbutton-support/src/main/java/com/flod/loadingbutton/LoadingButton.java

+45-41
Original file line numberDiff line numberDiff line change
@@ -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
}

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@
2323

2424
dependencies {
2525
//Androidx
26-
implementation 'com.github.FlodCoding:LoadingButton:1.0.3'
26+
implementation 'com.github.FlodCoding:LoadingButton:1.0.4'
2727

2828
//Support-appcompat
29-
implementation 'com.github.FlodCoding:LoadingButton:1.0.3-support'
29+
implementation 'com.github.FlodCoding:LoadingButton:1.0.4-support'
3030
}
3131

3232

app/src/main/java/com/flod/loadingbutton/app/MainActivity.java

+11
Original file line numberDiff line numberDiff line change
@@ -215,27 +215,38 @@ private void initLoadingButton() {
215215
.setOnLoadingListener(new LoadingButton.OnLoadingListenerAdapter() {
216216
@Override
217217
public void onCanceled() {
218+
Log.d("LoadingButton","onCanceled");
218219
Toast.makeText(getApplicationContext(), "onCanceled", Toast.LENGTH_SHORT).show();
219220
}
220221

221222
@Override
222223
public void onFailed() {
224+
Log.d("LoadingButton","onFailed");
223225
Toast.makeText(getApplicationContext(), "onFailed", Toast.LENGTH_SHORT).show();
226+
224227
loadingBtn.setText("Submit");
225228
}
226229

227230
@Override
228231
public void onCompleted() {
232+
Log.d("LoadingButton","onCompleted");
229233
Toast.makeText(getApplicationContext(), "onCompleted", Toast.LENGTH_SHORT).show();
230234
}
231235

232236
@Override
233237
public void onLoadingStart() {
238+
Log.d("LoadingButton","onLoadingStart");
234239
loadingBtn.setText(loadingText);
235240
}
236241

242+
@Override
243+
public void onLoadingStop() {
244+
Log.d("LoadingButton","onLoadingStop");
245+
}
246+
237247
@Override
238248
public void onEndDrawableAppear(boolean isSuccess, LoadingButton.EndDrawable endDrawable) {
249+
Log.d("LoadingButton","onEndDrawableAppear");
239250
if (isSuccess) {
240251
loadingBtn.setText(completeText);
241252
} else {

0 commit comments

Comments
 (0)