Skip to content

Commit d895c2b

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

File tree

4 files changed

+60
-48
lines changed

4 files changed

+60
-48
lines changed

.idea/gradle.xml

Lines changed: 0 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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

Lines changed: 46 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
* 5、重复start的动画处理 √
4141
* 6、恢复动画还没结束时,点击收缩会变成恢复的状态 √
4242
* 7、正在显示EndDrawable时,再次点击start会变成恢复状态的加载
43-
* 先执行 beginShrinkAnim(true) 后执行 beginShrinkAnim(false); √
43+
* 先执行 beginChangeSize(true) 后执行 beginChangeSize(false); √
4444
* <p>
4545
* 8、多次start和end 会出错 √
4646
* 9、设置完Drawable大小后,start后再次设置rootView大小失控,是因为原来是wrap_content √
@@ -185,6 +185,7 @@ public void onAnimationStart(Animator animation) {
185185
} else {
186186
//begin restore
187187
curStatus = STATUS.RESTORING;
188+
stopLoading();
188189
if (mOnLoadingListener != null) {
189190
mOnLoadingListener.onRestoring();
190191
}
@@ -202,11 +203,10 @@ public void onAnimationEnd(Animator animation) {
202203

203204
} else {
204205
//restore over
205-
curStatus = STATUS.IDE;
206206
isSizeChanging = false;
207-
restoreStatus();
208-
endCallbackListener();
209207
nextShrinkReverse = false;
208+
toIde();
209+
210210
}
211211
}
212212

@@ -220,7 +220,7 @@ public void onAnimationEnd(Animator animation) {
220220
* @param isReverse true:恢复 ,false:收缩
221221
* @param lastFrame 是否只显示最后一帧
222222
*/
223-
private void beginShrinkAnim(boolean isReverse, boolean lastFrame) {
223+
private void beginChangeSize(boolean isReverse, boolean lastFrame) {
224224
if (enableShrink) {
225225
if (mShrinkAnimator.isRunning()) {
226226
//如果上一个动画还在执行,就结束到最后一帧
@@ -292,6 +292,13 @@ public void onLayoutChange(View v, int left, int top, int right, int bottom, int
292292

293293
}
294294

295+
private void toIde() {
296+
curStatus = STATUS.IDE;
297+
restoreStatus();
298+
endCallbackListener();
299+
300+
}
301+
295302

296303
/**
297304
* 如果disableClickOnLoading==true,且不是闲置状态,点击会无效
@@ -311,19 +318,27 @@ public boolean onTouchEvent(MotionEvent event) {
311318
*/
312319
private void startLoading() {
313320
curStatus = STATUS.LOADING;
314-
mLoadingDrawable.start();
321+
322+
if (!mLoadingDrawable.isRunning()) {
323+
mLoadingDrawable.start();
324+
}
315325

316326
if (mOnLoadingListener != null) {
317327
mOnLoadingListener.onLoadingStart();
318328
}
319-
320329
}
321330

322331
/**
323332
* 停止加载
324333
*/
325334
private void stopLoading() {
326-
mLoadingDrawable.stop();
335+
if (mLoadingDrawable.isRunning()) {
336+
mLoadingDrawable.stop();
337+
if (mOnLoadingListener != null) {
338+
mOnLoadingListener.onLoadingStop();
339+
}
340+
}
341+
327342
}
328343

329344
/**
@@ -334,24 +349,20 @@ private void stopLoading() {
334349
private void cancelAllRunning(boolean withAnim) {
335350
switch (curStatus) {
336351
case STATUS.SHRINKING:
337-
beginShrinkAnim(true, !withAnim);
338-
stopLoading();
352+
beginChangeSize(true, !withAnim);
339353
break;
340354
case STATUS.LOADING:
341-
stopLoading();
342355
if (enableShrink) {
343-
beginShrinkAnim(true, !withAnim);
356+
beginChangeSize(true, !withAnim);
344357
} else {
345-
endCallbackListener();
346-
restoreStatus();
347-
curStatus = STATUS.IDE;
358+
toIde();
348359
}
349360
break;
350361
case STATUS.END_DRAWABLE_SHOWING:
351362
if (mEndDrawable != null) {
352363
mEndDrawable.cancel(withAnim);
353364
} else {
354-
beginShrinkAnim(true, !withAnim);
365+
beginChangeSize(true, !withAnim);
355366
}
356367
break;
357368
case STATUS.RESTORING:
@@ -375,12 +386,13 @@ private void cancelAllRunning(boolean withAnim) {
375386
*/
376387
public void start() {
377388
//cancel last loading
389+
378390
if (curStatus == STATUS.SHRINKING || curStatus == STATUS.LOADING)
379391
isCancel = true;
380392
cancelAllRunning(false);
381393

382394
if (enableShrink) {
383-
beginShrinkAnim(false, false);
395+
beginChangeSize(false, false);
384396
} else {
385397
saveStatus();
386398
if (TextUtils.isEmpty(getText())) {
@@ -402,32 +414,26 @@ public void start() {
402414
*/
403415
private void end(boolean isFail) {
404416

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-
416417
if (mEndDrawable != null) {
418+
if (mShrinkAnimator.isRunning())
419+
mShrinkAnimator.end();
420+
421+
stopLoading();
417422
mEndDrawable.show(isFail);
418423
} else {
419424
//No EndDrawable,enableShrink
425+
this.isFail = isFail;
426+
420427
if (enableShrink) {
421428
if (curStatus == STATUS.LOADING)
422-
beginShrinkAnim(true, false);
429+
beginChangeSize(true, false);
423430
else
424-
beginShrinkAnim(true, true);
431+
beginChangeSize(true, true);
425432

426433
} else {
427434
//No EndDrawable,disableShrink
428-
curStatus = STATUS.IDE;
429-
restoreStatus();
430-
endCallbackListener();
435+
stopLoading();
436+
toIde();
431437
}
432438

433439

@@ -733,11 +739,9 @@ private void init() {
733739
public void run() {
734740
setAnimValue(0);
735741
if (enableShrink)
736-
beginShrinkAnim(true, !nextShrinkReverse);
742+
beginChangeSize(true, !nextShrinkReverse);
737743
else {
738-
curStatus = STATUS.IDE;
739-
restoreStatus();
740-
endCallbackListener();
744+
toIde();
741745
}
742746
isShowing = false;
743747
}
@@ -788,16 +792,16 @@ private void show(boolean isFail) {
788792
*/
789793
private void cancel(boolean withAnim) {
790794
isShowing = false;
795+
796+
getHandler().removeCallbacks(mRunnable);
791797
if (mAppearAnimator.isRunning()) {
792798
mAppearAnimator.end();
793799
}
794-
getHandler().removeCallbacks(mRunnable);
800+
795801
if (enableShrink)
796-
beginShrinkAnim(true, !withAnim);
802+
beginChangeSize(true, !withAnim);
797803
else {
798-
endCallbackListener();
799-
restoreStatus();
800-
curStatus = STATUS.IDE;
804+
toIde();
801805
}
802806
setAnimValue(0);
803807
}

README.md

Lines changed: 2 additions & 2 deletions
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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,27 +216,38 @@ private void initLoadingButton() {
216216
.setOnLoadingListener(new LoadingButton.OnLoadingListenerAdapter() {
217217
@Override
218218
public void onCanceled() {
219+
Log.d("LoadingButton","onCanceled");
219220
Toast.makeText(getApplicationContext(), "onCanceled", Toast.LENGTH_SHORT).show();
220221
}
221222

222223
@Override
223224
public void onFailed() {
225+
Log.d("LoadingButton","onFailed");
224226
Toast.makeText(getApplicationContext(), "onFailed", Toast.LENGTH_SHORT).show();
227+
225228
loadingBtn.setText("Submit");
226229
}
227230

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

233237
@Override
234238
public void onLoadingStart() {
239+
Log.d("LoadingButton","onLoadingStart");
235240
loadingBtn.setText(loadingText);
236241
}
237242

243+
@Override
244+
public void onLoadingStop() {
245+
Log.d("LoadingButton","onLoadingStop");
246+
}
247+
238248
@Override
239249
public void onEndDrawableAppear(boolean isSuccess, LoadingButton.EndDrawable endDrawable) {
250+
Log.d("LoadingButton","onEndDrawableAppear");
240251
if (isSuccess) {
241252
loadingBtn.setText(completeText);
242253
} else {
@@ -487,7 +498,7 @@ public void onStopTrackingTouch(SeekBar seekBar) {
487498

488499

489500
private void showEditDialog(String title, DialogInterface.OnClickListener onConfirmClickListener) {
490-
View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit_text, null);
501+
@SuppressLint("InflateParams") View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit_text, null);
491502
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
492503
final EditText editText = view.findViewById(R.id.et);
493504
editText.addTextChangedListener(new TextWatcher() {

0 commit comments

Comments
 (0)