玩翻的ViewPager

玩翻的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
如图所示


然后就可以根据属性动画做各种动画啦,发挥各位创造力的时候到了



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值