add depth to scrolling the viewpager

This commit is contained in:
tibbi 2016-05-23 23:10:09 +02:00
parent 77e25ae9a7
commit 1d76f572f2

View file

@ -72,6 +72,7 @@ public class ViewPagerActivity extends AppCompatActivity
pager.setCurrentItem(pos); pager.setCurrentItem(pos);
pager.addOnPageChangeListener(this); pager.addOnPageChangeListener(this);
pager.setOnTouchListener(this); pager.setOnTouchListener(this);
pager.setPageTransformer(true, new DepthPageTransformer());
getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(this); getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(this);
updateActionbarTitle(); updateActionbarTitle();
@ -376,4 +377,29 @@ public class ViewPagerActivity extends AppCompatActivity
super.onPause(); super.onPause();
deleteFile(); deleteFile();
} }
public class DepthPageTransformer implements ViewPager.PageTransformer {
private static final float MIN_SCALE = 0.75f;
public void transformPage(View view, float position) {
int pageWidth = view.getWidth();
if (position < -1) {
view.setAlpha(0);
} else if (position <= 0) {
view.setAlpha(1);
view.setTranslationX(0);
view.setScaleX(1);
view.setScaleY(1);
} else if (position <= 1) {
view.setAlpha(1 - position);
view.setTranslationX(pageWidth * -position);
float scaleFactor = MIN_SCALE + (1 - MIN_SCALE) * (1 - Math.abs(position));
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor);
} else {
view.setAlpha(0);
}
}
}
} }