package com.example.administrator.cookman.ui.component.fab_transformation.animation; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.annotation.TargetApi; import android.os.Build; import android.view.View; import android.view.ViewAnimationUtils; public class FabAnimatorLollipop extends FabAnimator { @TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override final void revealOff(final View fab, final View transformView, final RevealCallback callback) { Animator animator = ViewAnimationUtils.createCircularReveal( transformView, getCenterX(transformView), getCenterY(transformView), (float) Math.hypot(transformView.getWidth(), transformView.getHeight()) / 2, fab.getWidth() / 2); animator.setInterpolator(REVEAL_INTERPOLATOR); animator.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { callback.onRevealStart(); } @Override public void onAnimationEnd(Animator animation) { transformView.setVisibility(View.INVISIBLE); callback.onRevealEnd(); } @Override public void onAnimationCancel(Animator animation) { // } @Override public void onAnimationRepeat(Animator animation) { // } }); if (transformView.getVisibility() == View.VISIBLE) { animator.setDuration(getRevealAnimationDuration()); animator.start(); transformView.setEnabled(true); } } @TargetApi(Build.VERSION_CODES.LOLLIPOP) final void revealOn(final View fab, View transformView, final RevealCallback callback) { Animator animator = ViewAnimationUtils.createCircularReveal( transformView, getCenterX(transformView), getCenterY(transformView), fab.getWidth() / 2, (float) Math.hypot(transformView.getWidth(), transformView.getHeight()) / 2); transformView.setVisibility(View.VISIBLE); animator.setInterpolator(REVEAL_INTERPOLATOR); animator.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { callback.onRevealStart(); } @Override public void onAnimationEnd(Animator animation) { callback.onRevealEnd(); } @Override public void onAnimationCancel(Animator animation) { // } @Override public void onAnimationRepeat(Animator animation) { // } }); if (transformView.getVisibility() == View.VISIBLE) { animator.setDuration(getRevealAnimationDuration()); animator.start(); transformView.setEnabled(true); } } @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) @Override final void fabMoveOut(final View fab, final View transformView, final FabAnimationCallback callback) { fab.animate() .scaleX(1) .scaleY(1) .translationX(0) .translationY(0) .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(); } @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) @Override final void fabMoveIn(final View fab, View transformView, final FabAnimationCallback callback) { fab.animate() .scaleX(FAB_SCALE) .scaleY(FAB_SCALE) .translationX(getTranslationX(fab, transformView)) .translationY(getTranslationY(fab, transformView)) .setInterpolator(FAB_INTERPOLATOR) .setDuration(getRevealAnimationDuration()) .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(); } @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) @Override void showOverlay(final View overlay) { overlay.animate() .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(); } @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) @Override void hideOverlay(final View overlay) { overlay.animate() .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(); } }