Skip to content

Commit 188b662

Browse files
committed
1 parent cbabf91 commit 188b662

File tree

1 file changed

+37
-12
lines changed

1 file changed

+37
-12
lines changed

shapeloading/src/main/java/com/mingle/widget/LoadingView.java

+37-12
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ public class LoadingView extends FrameLayout {
3939
private int mTextAppearance;
4040

4141
private String mLoadText;
42-
42+
private AnimatorSet mUpAnimatorSet;
43+
private AnimatorSet mDownAnimatorSet;
4344

4445
public LoadingView(Context context) {
4546
super(context);
@@ -118,7 +119,7 @@ public void run() {
118119
};
119120

120121
private void startLoading(long delay) {
121-
if (mAnimatorSet != null && mAnimatorSet.isRunning()) {
122+
if (mDownAnimatorSet != null && mDownAnimatorSet.isRunning()) {
122123
return;
123124
}
124125
this.removeCallbacks(mFreeFallRunnable);
@@ -129,13 +130,37 @@ private void startLoading(long delay) {
129130
}
130131
}
131132

133+
@Override
134+
protected void onDetachedFromWindow() {
135+
super.onDetachedFromWindow();
136+
stopLoading();
137+
}
138+
132139
private void stopLoading() {
133140
if (mAnimatorSet != null) {
134141
if (mAnimatorSet.isRunning()) {
135142
mAnimatorSet.cancel();
136143
}
137144
mAnimatorSet = null;
138145
}
146+
if (mUpAnimatorSet != null) {
147+
if (mUpAnimatorSet.isRunning()) {
148+
mUpAnimatorSet.cancel();
149+
}
150+
mUpAnimatorSet.removeAllListeners();
151+
for (Animator animator : mUpAnimatorSet.getChildAnimations()) {
152+
animator.removeAllListeners();
153+
}
154+
}
155+
if (mDownAnimatorSet != null) {
156+
if (mDownAnimatorSet.isRunning()) {
157+
mDownAnimatorSet.cancel();
158+
}
159+
mDownAnimatorSet.removeAllListeners();
160+
for (Animator animator : mDownAnimatorSet.getChildAnimations()) {
161+
animator.removeAllListeners();
162+
}
163+
}
139164
this.removeCallbacks(mFreeFallRunnable);
140165
}
141166

@@ -194,12 +219,12 @@ public void upThrow() {
194219
objectAnimator1.setDuration(ANIMATION_DURATION);
195220
objectAnimator.setInterpolator(new DecelerateInterpolator(factor));
196221
objectAnimator1.setInterpolator(new DecelerateInterpolator(factor));
197-
AnimatorSet animatorSet = new AnimatorSet();
198-
animatorSet.setDuration(ANIMATION_DURATION);
199-
animatorSet.playTogether(objectAnimator, objectAnimator1, scaleIndication);
222+
mUpAnimatorSet = new AnimatorSet();
223+
mUpAnimatorSet.setDuration(ANIMATION_DURATION);
224+
mUpAnimatorSet.playTogether(objectAnimator, objectAnimator1, scaleIndication);
200225

201226

202-
animatorSet.addListener(new Animator.AnimatorListener() {
227+
mUpAnimatorSet.addListener(new Animator.AnimatorListener() {
203228
@Override
204229
public void onAnimationStart(Animator animation) {
205230

@@ -222,7 +247,7 @@ public void onAnimationRepeat(Animator animation) {
222247

223248
}
224249
});
225-
animatorSet.start();
250+
mUpAnimatorSet.start();
226251

227252

228253
}
@@ -240,10 +265,10 @@ public void freeFall() {
240265

241266
objectAnimator.setDuration(ANIMATION_DURATION);
242267
objectAnimator.setInterpolator(new AccelerateInterpolator(factor));
243-
AnimatorSet animatorSet = new AnimatorSet();
244-
animatorSet.setDuration(ANIMATION_DURATION);
245-
animatorSet.playTogether(objectAnimator, scaleIndication);
246-
animatorSet.addListener(new Animator.AnimatorListener() {
268+
mDownAnimatorSet = new AnimatorSet();
269+
mDownAnimatorSet.setDuration(ANIMATION_DURATION);
270+
mDownAnimatorSet.playTogether(objectAnimator, scaleIndication);
271+
mDownAnimatorSet.addListener(new Animator.AnimatorListener() {
247272
@Override
248273
public void onAnimationStart(Animator animation) {
249274

@@ -267,7 +292,7 @@ public void onAnimationRepeat(Animator animation) {
267292

268293
}
269294
});
270-
animatorSet.start();
295+
mDownAnimatorSet.start();
271296

272297

273298
}

0 commit comments

Comments
 (0)