package dk.thoerup.side9.anim; import android.view.View; import android.view.animation.DecelerateInterpolator; import android.widget.ImageView; public final class SwapViews implements Runnable { private boolean mIsFirstView; ImageView image1; ImageView image2; boolean forward; public SwapViews(boolean isFirstView, boolean forward, ImageView image1, ImageView image2) { mIsFirstView = isFirstView; this.image1 = image1; this.image2 = image2; this.forward = forward; } public void run() { final float centerX = image1.getWidth() / 2.0f; final float centerY = image1.getHeight() / 2.0f; Flip3dAnimation rotation; if (mIsFirstView) { image1.setVisibility(View.GONE); image2.setVisibility(View.VISIBLE); image2.requestFocus(); } else { image2.setVisibility(View.GONE); image1.setVisibility(View.VISIBLE); image1.requestFocus(); } int startAngle = forward ? 90 : -90; rotation = new Flip3dAnimation(startAngle, 0, centerX, centerY); rotation.setDuration(250); rotation.setFillAfter(true); rotation.setInterpolator(new DecelerateInterpolator()); if (mIsFirstView) { image2.startAnimation(rotation); } else { image1.startAnimation(rotation); } } }