设置viewpager的PageTransformer属性 ;创建RotateTransformer实现ViewPager.PageTransformer接口,重写transformPage方法
public class RotateTransformer implements ViewPager.PageTransformer { //设置旋转角度度 public float MAX_ROTATE = 180f; @Override public void transformPage(@NonNull View page, float position) { if (position < -1) { } else if (position <= 1) {// a页滑动至b页 ; a页从 0.0 ~ -1 ;b页从1 ~ 0.0 if (position < 0) { page.setRotation(position * MAX_ROTATE); page.setTranslationX(-position * page.getPivotX()*2f); page.setPivotY(page.getHeight()); } else { page.setRotation(position * MAX_ROTATE); page.setTranslationX(-position * page.getPivotX()*2f); page.setPivotY(page.getHeight()); } } } }大致就是这样的效果。
// setRotationX 水平轴旋转 用来做立体的动画效果 // setPivotY 轴心点旋转 用来做平面的动画效果 // setTranslationY 相对于左侧布局的水平位置 用来做一个视图有多张图片 //getPivotX 返回此显示列表在X轴上的枢轴值,以像素为单位。 //getX 当前视图X轴的值 //getTranslationX 返回此显示列表在X轴上的转换值,以像素为单位。 //getWidth 返回视图的宽度 //getScrollX 返回此视图的滚动左侧位置。这是的左边缘视图中显示的部分。您不需要绘制任何像素更左,因为这些是在你的视图框架之外屏幕上。 //getRotationX 返回此显示列表围绕X轴的旋转值,单位为角度