玩翻的ViewPager
最近看到很多人发的各式的ViewPager,简直玩翻,今天我就剖析下ViewPager,为什么能玩这么嗨
让大家也能创造出各式各样的Viewpager
其实ViewPager的核心玩法是一个方法public void setPageTransformer(boolean reverseDrawingOrder, PageTransformer transformer);
关键就是第二个参数,这就是PageTransformer,一个接口,咱们需要实现它,这就是我实现的一个类,大家可以用,看看效果
public class My3DTransformer implements ViewPager.PageTransformer {
@Override
public void transformPage(View page, float position) {
if (position < -1) { // [-Infinity,-1)
// This page is way off-screen to the left.
page.setAlpha(0);
} else if (position <= 0) { // [-1,0]
// Use the default slide transition when moving to the left page
page.setAlpha(1);
page.setPivotX( page.getWidth());
page.setPivotY(page.getHeight()*0.5f);
page.setRotationY(position*90);
} else if (position <= 1) { // (0,1]
page.setAlpha(1);
page.setPivotX(0f);
page.setPivotY(page.getHeight()*0.5f);
page.setRotationY(position*90);
} else { // (1,+Infinity]
// This page is way off-screen to the right.
page.setAlpha(0);
}
}
}
其核心就是实现这个transformPage(View page, float position)方法
第一个参数是ViewPager的当前页面,注意ViewPager每个页面都会调用这个方法,所以其实page是指当前
页面(不是你看到的页面,是调用这个方法的页面),你的每次滑动,所有没有销毁的页面都会调用这个方法
第二个参数是当前页面的左上角坐标,从-1到1
如图所示
然后就可以根据属性动画做各种动画啦,发挥各位创造力的时候到了