/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package com.linkbubble.util;
import android.animation.Animator;
import android.view.View;
import android.view.animation.AnticipateOvershootInterpolator;
public class ScaleUpAnimHelper {
enum AnimState {
None,
Hiding,
Showing,
}
AnimState mAnimState = AnimState.None;
View mView;
private float mAlpha;
public ScaleUpAnimHelper(View view, float alpha) {
mView = view;
mAlpha = alpha;
}
public void show() {
int duration = 667;
if (mView.getVisibility() != View.VISIBLE) {
duration = 500;
mView.animate().cancel();
mView.setAlpha(0f);
mView.setScaleX(0.33f);
mView.setScaleY(0.33f);
} else if (mAnimState == AnimState.Hiding) {
mView.animate().cancel();
}
mView.setVisibility(View.VISIBLE);
mView.animate().alpha(mAlpha).scaleX(1f).scaleY(1f)
.setDuration(duration)
.setInterpolator(new AnticipateOvershootInterpolator())
.setListener(mShowListener);
}
public void hide() {
mView.animate().alpha(0.f).scaleX(0.33f).scaleY(0.33f)
.setDuration(500)
.setInterpolator(new AnticipateOvershootInterpolator())
.setListener(mHideListener);
}
// Empty listener is set so that the mHideListener is not still used, potentially setting the view visibilty as GONE
private Animator.AnimatorListener mShowListener = new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
mAnimState = AnimState.Showing;
}
@Override
public void onAnimationEnd(Animator animation) {
mAnimState = AnimState.None;
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
};
private Animator.AnimatorListener mHideListener = new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
mAnimState = AnimState.Hiding;
}
@Override
public void onAnimationEnd(Animator animation) {
mView.setVisibility(View.GONE);
mAnimState = AnimState.None;
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
};
}