package me.ccrama.redditslide.Views;
import android.animation.Animator;
import android.animation.ObjectAnimator;
import android.support.v4.view.animation.FastOutSlowInInterpolator;
import android.view.View;
import android.view.animation.AccelerateDecelerateInterpolator;
import io.codetail.animation.SupportAnimator;
import io.codetail.animation.ViewAnimationUtils;
import me.ccrama.redditslide.R;
/**
* Created by carlo_000 on 2/24/2016.
*/
public class AnimateHelper {
private AnimateHelper() {
}
public static void setFlashAnimation(final View vBig, final View from, final int color) {
// get the center for the clipping circle
final View v = vBig.findViewById(R.id.vote);
v.post(new Runnable() {
@Override
public void run() {
v.setBackgroundColor(color);
v.setVisibility(View.VISIBLE);
v.setAlpha(1f);
final int cx = (from.getLeft() + from.getRight()) / 2;
final int cy = vBig.getHeight() - (from.getHeight() / 2);//from.getRight() - ( from.getWidth()/ 2);
// get the final radius for the clipping circle
int dx = Math.max(cx, vBig.getWidth() - cx);
int dy = Math.max(cy, vBig.getHeight() - cy);
final float finalRadius = (float) Math.hypot(dx, dy);
try {
SupportAnimator animator =
ViewAnimationUtils.createCircularReveal(v, cx, cy, 0, finalRadius);
animator.setInterpolator(new FastOutSlowInInterpolator());
animator.setDuration(250);
animator.start();
v.postDelayed(new Runnable() {
@Override
public void run() {
ObjectAnimator animator2 = ObjectAnimator.ofFloat(v, View.ALPHA, 1f, 0f);
animator2.setInterpolator(new AccelerateDecelerateInterpolator());
animator2.setDuration(450);
animator2.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
v.setVisibility(View.GONE);
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
animator2.start();
}
}, 450);
} catch(Exception e){
v.setVisibility(View.GONE);
}
}
});
}
}