diff --git a/loadtoast/src/main/java/net/steamcrafted/loadtoast/LoadToast.java b/loadtoast/src/main/java/net/steamcrafted/loadtoast/LoadToast.java index 868f531..41e317e 100644 --- a/loadtoast/src/main/java/net/steamcrafted/loadtoast/LoadToast.java +++ b/loadtoast/src/main/java/net/steamcrafted/loadtoast/LoadToast.java @@ -26,6 +26,8 @@ public class LoadToast { private boolean mToastCanceled = false; private boolean mInflated = false; private boolean mVisible = false; + private boolean mShowAnimationActive = false; + private boolean mSlideUpPending = false; public LoadToast(Context context){ @@ -87,9 +89,34 @@ public LoadToast show(){ ViewHelper.setAlpha(mView, 0f); ViewHelper.setTranslationY(mView, -mView.getHeight() + mTranslationY); //mView.setVisibility(View.VISIBLE); - ViewPropertyAnimator.animate(mView).alpha(1f).translationY(25 + mTranslationY) + ViewPropertyAnimator showAnimator = ViewPropertyAnimator.animate(mView).alpha(1f).translationY(25 + mTranslationY) .setInterpolator(new DecelerateInterpolator()) - .setDuration(300).setStartDelay(0).start(); + .setDuration(300).setStartDelay(0); + showAnimator.setListener(new Animator.AnimatorListener() { + @Override + public void onAnimationStart(Animator animation) { + mShowAnimationActive = true; + } + + @Override + public void onAnimationEnd(Animator animation) { + mShowAnimationActive = false; + if (mSlideUpPending) { + slideUp(); + } + } + + @Override + public void onAnimationCancel(Animator animation) { + + } + + @Override + public void onAnimationRepeat(Animator animation) { + + } + }); + showAnimator.start(); mVisible = true; checkZPosition(); @@ -130,6 +157,11 @@ private void checkZPosition(){ } private void slideUp(){ + if (mShowAnimationActive) { + mSlideUpPending = true; + return; + } + mSlideUpPending = false; ViewPropertyAnimator.animate(mView).setStartDelay(1000).alpha(0f) .translationY(-mView.getHeight() + mTranslationY) .setInterpolator(new AccelerateInterpolator())