Last active
November 7, 2019 05:33
-
-
Save JMPergar/6eb76173a5f7941fcc6f 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
How to move from one fragment to other automatically....means I want to call this transformation inside fragment?