ViewPropertyAnimator: call onAnimationEnd() at the right time

This commit is contained in:
Julian Winkler
2024-05-06 06:29:47 +02:00
parent cd4cd90f59
commit 9fcec8b64c

View File

@@ -2,10 +2,14 @@ package android.view;
import android.animation.Animator; import android.animation.Animator;
import android.animation.TimeInterpolator; import android.animation.TimeInterpolator;
import android.os.Handler;
public class ViewPropertyAnimator { public class ViewPropertyAnimator {
private View view; private View view;
private Animator.AnimatorListener listener;
private long startDelay;
private long duration;
public ViewPropertyAnimator(View view) { public ViewPropertyAnimator(View view) {
this.view = view; this.view = view;
@@ -18,8 +22,7 @@ public class ViewPropertyAnimator {
} }
public ViewPropertyAnimator setListener(Animator.AnimatorListener listener) { public ViewPropertyAnimator setListener(Animator.AnimatorListener listener) {
if (listener != null) this.listener = listener;
listener.onAnimationEnd(new Animator());
return this; return this;
} }
@@ -29,10 +32,12 @@ public class ViewPropertyAnimator {
} }
public ViewPropertyAnimator setDuration(long duration) { public ViewPropertyAnimator setDuration(long duration) {
this.duration = duration;
return this; return this;
} }
public ViewPropertyAnimator setStartDelay(long duration) { public ViewPropertyAnimator setStartDelay(long startDelay) {
this.startDelay = startDelay;
return this; return this;
} }
@@ -56,5 +61,14 @@ public class ViewPropertyAnimator {
return this; return this;
} }
public void start() {} public void start() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (listener != null)
listener.onAnimationEnd(new Animator());
}
}, startDelay+duration);
}
} }