一、需求分析
PageTransformer非常方便的提供了ViewPager页面之间的切换,最近有个需求和交通银行类似,实现3D翻转,说到3D翻转我们下意识的可能想到的是Camera+Matrix错切动画,实际上这也是可行的一种方案,我们在dispatchDraw的时候,旋转canvas即可,但是实现也相对来说比较复杂。我们可以更简单的方式来实现。
二、效果
当参数未30度旋转时
当参数为90度旋转
三、代码实现
public class Rotation3DPageTransformer implements ViewPager.PageTransformer {
private float degree = 30;
public Rotation3DPageTransformer(float degree) {
this.degree = degree>0?Math.min(degree,90) : Math.max(degree,90);
}
private int computPivotX(View page, float position) {
if (position > 0 &&am