-
-
Save notsatyarth/330d92c28dc01a969834dc4dc5c00ff2 to your computer and use it in GitHub Desktop.
Flip animation for ViewPager
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import android.support.v4.view.ViewPager; | |
import android.view.View; | |
public class FlipPageViewTransformer implements ViewPager.PageTransformer { | |
@Override | |
public void transformPage(View page, float position) { | |
float percentage = 1 - Math.abs(position); | |
page.setCameraDistance(12000); | |
setVisibility(page, position); | |
setTranslation(page); | |
setSize(page, position, percentage); | |
setRotation(page, position, percentage); | |
} | |
private void setVisibility(View page, float position) { | |
if (position < 0.5 && position > -0.5) { | |
page.setVisibility(View.VISIBLE); | |
} else { | |
page.setVisibility(View.INVISIBLE); | |
} | |
} | |
private void setTranslation(View page) { | |
ViewPager viewPager = (ViewPager) page.getParent(); | |
int scroll = viewPager.getScrollX() - page.getLeft(); | |
page.setTranslationX(scroll); | |
} | |
private void setSize(View page, float position, float percentage) { | |
page.setScaleX((position != 0 && position != 1) ? percentage : 1); | |
page.setScaleY((position != 0 && position != 1) ? percentage : 1); | |
} | |
private void setRotation(View page, float position, float percentage) { | |
if (position > 0) { | |
page.setRotationY(-180 * (percentage + 1)); | |
} else { | |
page.setRotationY(180 * (percentage + 1)); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment