package com.example.administrator.cookman.ui.component.fab_transformation.animation;
import android.view.View;
import android.view.animation.AccelerateDecelerateInterpolator;
import com.nineoldandroids.animation.Animator;
import com.nineoldandroids.animation.AnimatorListenerAdapter;
import com.nineoldandroids.view.ViewPropertyAnimator;
public class FabAnimatorPreL extends FabAnimator {
@Override
final void revealOff(final View fab, final View transformView, final RevealCallback callback) {
SupportAnimator animator = ViewAnimationUtils.createCircularReveal(
transformView,
getCenterX(fab),
getCenterY(fab),
(float) Math.hypot(transformView.getWidth(), transformView.getHeight()) / 2,
fab.getWidth() / 2);
animator.setInterpolator(REVEAL_INTERPOLATOR);
animator.addListener(new SupportAnimator.AnimatorListener() {
@Override
public void onAnimationStart() {
callback.onRevealStart();
}
@Override
public void onAnimationEnd() {
transformView.setVisibility(View.INVISIBLE);
callback.onRevealEnd();
}
@Override
public void onAnimationCancel() {
//
}
@Override
public void onAnimationRepeat() {
//
}
});
if (transformView.getVisibility() == View.VISIBLE) {
animator.setDuration((int) getRevealAnimationDuration());
animator.start();
transformView.setEnabled(true);
}
}
@Override
final void revealOn(final View fab, final View transformView, final RevealCallback callback) {
SupportAnimator animator = ViewAnimationUtils.createCircularReveal(
transformView,
getCenterX(fab),
getCenterY(fab),
fab.getWidth() / 2,
(float) Math.hypot(transformView.getWidth(), transformView.getHeight()) / 2);
transformView.setVisibility(View.VISIBLE);
animator.setInterpolator(FAB_INTERPOLATOR);
animator.addListener(new SupportAnimator.AnimatorListener() {
@Override
public void onAnimationStart() {
callback.onRevealStart();
}
@Override
public void onAnimationEnd() {
callback.onRevealEnd();
}
@Override
public void onAnimationCancel() {
//
}
@Override
public void onAnimationRepeat() {
//
}
});
if (transformView.getVisibility() == View.VISIBLE) {
animator.setDuration((int) getRevealAnimationDuration());
animator.start();
transformView.setEnabled(true);
}
}
@Override
final void fabMoveOut(final View fab, final View transformView, final FabAnimationCallback callback) {
ViewPropertyAnimator.animate(fab)
.scaleX(1)
.scaleY(1)
.translationX(0)
.translationY(0)
.setInterpolator(new AccelerateDecelerateInterpolator())
.setDuration(getFabAnimationDuration())
.setListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
callback.onAnimationStart();
}
@Override
public void onAnimationEnd(Animator animation) {
callback.onAnimationEnd();
}
@Override
public void onAnimationCancel(Animator animation) {
callback.onAnimationCancel();
}
@Override
public void onAnimationRepeat(Animator animation) {
callback.onAnimationRepeat();
}
})
.start();
}
@Override
final void fabMoveIn(final View fab, final View transformView, final FabAnimationCallback callback) {
ViewPropertyAnimator.animate(fab)
.scaleX(FAB_SCALE)
.scaleY(FAB_SCALE)
.translationX(getTranslationX(fab, transformView))
.translationY(getTranslationY(fab, transformView))
.setInterpolator(FAB_INTERPOLATOR)
.setDuration(getFabAnimationDuration())
.setListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
callback.onAnimationStart();
}
@Override
public void onAnimationEnd(Animator animation) {
callback.onAnimationEnd();
}
@Override
public void onAnimationCancel(Animator animation) {
callback.onAnimationCancel();
}
@Override
public void onAnimationRepeat(Animator animation) {
callback.onAnimationRepeat();
}
})
.start();
}
@Override
void showOverlay(final View overlay) {
ViewPropertyAnimator.animate(overlay)
.alpha(1)
.setDuration(getRevealAnimationDuration())
.setInterpolator(OVERLAY_INTERPOLATOR)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
overlay.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationEnd(Animator animation) {
//
}
})
.start();
}
@Override
void hideOverlay(final View overlay) {
ViewPropertyAnimator.animate(overlay)
.alpha(0)
.setDuration(getRevealAnimationDuration())
.setInterpolator(OVERLAY_INTERPOLATOR)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
//
}
@Override
public void onAnimationEnd(Animator animation) {
overlay.setVisibility(View.GONE);
}
})
.start();
}
}