package pl.polidea.androidflip3d;
import android.util.Log;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
/**
* Chooses correct view during animation. Swaps them when animation ends.
*
*/
public final class GetToTheMiddleOfFlipping implements Animation.AnimationListener {
private static final String TAG = GetToTheMiddleOfFlipping.class.getSimpleName();
private final int originalViewIndex;
private final View[] views;
private final long animationLength;
private final int direction;
private final AnimationListener finishFlippingListener;
/**
* Animation listener for continuing flipping when reached the middle.
*
* @param originalViewIndex
* current view index
* @param views
* views
* @param animationLength
* length of animation
* @param direction
* direction in which to animate
* @param finishFlippingListener
* listener to run on finishing flipping
*/
public GetToTheMiddleOfFlipping(final int originalViewIndex, final View[] views, final long animationLength, // NOPMD
final int direction, final AnimationListener finishFlippingListener) {
this.originalViewIndex = originalViewIndex;
this.views = views;
this.animationLength = animationLength;
this.direction = direction;
this.finishFlippingListener = finishFlippingListener;
}
@Override
public void onAnimationStart(final Animation animation) {
Log.v(TAG, "Animation started.");
}
@Override
public void onAnimationEnd(final Animation animation) {
views[originalViewIndex].post(new SwapViews(originalViewIndex, views, animationLength, direction,
finishFlippingListener));
Log.v(TAG, "Animation finished.");
}
@Override
public void onAnimationRepeat(final Animation animation) {
// Do nothing.
}
}