7 行 ViewPager.Transformer 代码让 ViewPager 有 3D Gallery 效果
public class GalleryTransformer implements ViewPager.PageTransformer {
@Override
public void transformPage(View view, float position) {
float scale = 0.5f;
float scaleValue = 1 - Math.abs(position) * scale;
view.setScaleX(scaleValue);
view.setScaleY(scaleValue);
view.setAlpha(scaleValue);
view.setPivotX(view.getWidth() * (1 - position - (position > 0 ? 1 : -1) * 0.75f) * scale);
view.setElevation(position > -0.25 && position < 0.25 ? 1 : 0);
}
}
- 为了让中间的 Page 显示在最上层使用了 Elevation 只在 API 21 以上有效
- ViewPager 循环借用了 InfiniteViewPager 实现
- 参考了项目 MagicViewPager
MIT