viewpager过渡动画--PagerTransformer实现

本篇是对上一篇<界面3D立体旋转效果的实现>的拓展,对于PagerTransformer的相关知识,请参考上一篇分享文章.
基于之前的结论:

  • 当向左滑动时, position会返回每个页面的区间变化值,如果设置预加载值为1(默认为1),就会返回3个区间变化值。分别是前一个界面左边边界的变化值[-2,-1] ; 当前界面左边边界的变化值[-1,0] ; 后一个界面左边边界的变化值[0,1].
    对应position就应该是: 左边:p1(-1 到 -2 ); 当前:p2(0 到 -1 ); 右边:p3(1 到 0 );
  • 当向右滑动时, position会返回每个页面的区间变化值,如果设置预加载值为1(默认为1),就会返回3个区间变化值。分别是前一个界面右边边界的变化值[-1,0] ; 当前界面右边边界的变化值[0,1] ; 后一个界面右边边界的变化值[1,2].
    对应position就应该是: 左边:p1(-1 到 0 ); 当前:p2(0 到 1 ); 右边:p3(1 到 2 );

有上面两点可以观察到,[-1,0]和[0,1]这两个变化区间,无论是向左还是向右滑都会出现,而且变化方向正好相反,也是用户可见的变化区间.所有我们只用关注这两个区间.
下面就看看一些实现的效果图:

点击标题查看源码
3D水平旋转
4593470-4653b79f38dc5f5d.gif
3d.gif
3D水平旋转(内部视角)
4593470-6fe949a6c9acdac9.gif
3din.gif
渐变
4593470-38198818d7970801.gif
fadein.gif
缩放
4593470-5f974d2cc5ea3b26.gif
scale.gif
层叠
4593470-63a138d6d0e8e4c2.gif
overlap.gif
相关:
  • 要实现同时看见两侧的view,如下图所示,需要给viewpager的父控件以及自己设置android:clipChildren="false".然后设置margin就可以了.可以与上面的缩放效果配合使用,达到画廊效果.如下图
    4593470-5bd7dccee34d4ab8.png
    image.png
  • 如果使用上面的效果,两侧的view没有缩小,或者只有侧的缩小显示,另一侧没有缩小,如下图,右侧的view没有缩小显示,此时需要设置viewpager.setOffscreenPageLimit(2);设定预加载页数
    4593470-2c62905c64e360c6.png
    image.png

    点击上面标题查看具体代码
    点击查看源码以及示例demo
    如果需要使用,将transformerLib包下的相关源码放入自己的项目中(不需要的效果可以删除),使用viewpager.setPageTransformer(true, MyTransformer.getMyTransformer(TransType.H3D));设置即可.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

truemi.73

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值