diff --git a/library/src/main/java/com/daimajia/androidanimations/library/YoYo.java b/library/src/main/java/com/daimajia/androidanimations/library/YoYo.java index 4d10582..09823bb 100644 --- a/library/src/main/java/com/daimajia/androidanimations/library/YoYo.java +++ b/library/src/main/java/com/daimajia/androidanimations/library/YoYo.java @@ -62,6 +62,21 @@ public static AnimationComposer with(BaseViewAnimator animator) { return new AnimationComposer(animator); } + public interface AnimatorCallback { + public void call(Animator animator); + } + + private static class EmptyAnimatorListener implements Animator.AnimatorListener { + @Override + public void onAnimationStart(Animator animation){} + @Override + public void onAnimationEnd(Animator animation){} + @Override + public void onAnimationCancel(Animator animation){} + @Override + public void onAnimationRepeat(Animator animation){} + } + public static final class AnimationComposer { private List callbacks = new ArrayList(); @@ -101,6 +116,38 @@ public AnimationComposer withListener(Animator.AnimatorListener listener) { return this; } + public AnimationComposer onStart(final AnimatorCallback callback) { + callbacks.add(new EmptyAnimatorListener() { + @Override + public void onAnimationStart(Animator animation) { callback.call(animation); } + }); + return this; + } + + public AnimationComposer onEnd(final AnimatorCallback callback) { + callbacks.add(new EmptyAnimatorListener() { + @Override + public void onAnimationEnd(Animator animation) { callback.call(animation); } + }); + return this; + } + + public AnimationComposer onCancel(final AnimatorCallback callback) { + callbacks.add(new EmptyAnimatorListener() { + @Override + public void onAnimationCancel(Animator animation) { callback.call(animation); } + }); + return this; + } + + public AnimationComposer onRepeat(final AnimatorCallback callback) { + callbacks.add(new EmptyAnimatorListener() { + @Override + public void onAnimationRepeat(Animator animation) { callback.call(animation); } + }); + return this; + } + public YoYoString playOn(View target) { this.target = target; return new YoYoString(new YoYo(this).play(), this.target);