Android 自定义ViewPager的滑动切换页面效果

来源:互联网 发布:浙江大学会计专硕 知乎 编辑:程序博客网 时间:2024/06/05 16:37

先借用网上图片效果


自定义效果最重要的一个方法就是

   viewPager.setPageTransformer(boolean,PageTransformer)这个方法就是设置viewpager的滑动效果的方法,里面需要传递两个参数:第一个参数传true就行了   第二个参数就是重点了我们需要创建一个效果类,继承PageTransformer这个类然后来实现我们的自定义效果
class DepthPageTransformer implements ViewPager.PageTransformer {        @Override        public void transformPage(View view, float position) {            int pageWidth = view.getWidth();            int pageHeight = view.getHeight();            if (position < -1) {            } else if (position <= 0) {                view.setPivotX(pageWidth / 2);                view.setPivotY(pageHeight);                view.setRotation(15 * position);            } else if (position <= 1) {                view.setPivotX(pageWidth / 2);                view.setPivotY(pageHeight);                view.setRotation(15 * position);            } else {            }        }//        //去除默认横向滑动//        view.setTranslationX(pageWidth * -position);    }
继承类里面就一个方法 解释一下,transformPage这个方法里面传来了两个值,一个是view,一个是position
这个view就是我们需要进行操作(旋转,放大,缩小等效果)的view,直接就可以用view.setRotation(),setTranslation()等
这些方法进行操作
而这个Position就重要了,Position就是两个页面滑动之间的系数,表示滑动了多少,viewpager加载三个页面,
当前显示的和左右两个页面

左边的页id为-1 当前显示的页id为0 右边的页id为1


如果Position从-1慢慢变大变成了0就说明id=-1的页面在向id=0的页面移动,就是向右滑动,反之也是一样向左滑动
这样我们就能很好理解Position的变化值的意思了

所以我们只要判断 -1<position<=0 的时候就说明id=-1的页面在左右滑动
当 0>position<=1 的时候就说明id=0的页面在左右滑动
所以我们通常看到 Position一会是负数,一会又是正数,因为每次滑动都是相邻两个页面一起动的

以上都是我自己的理解,记录下来。我觉得这样解释起来会更容易理解,有什么错误麻烦指出

0 0
原创粉丝点击