PageTransformer的基本使用


ViewPager在开发中应用的非常普遍,一些基本用法都已经掌握了,但是有个叫PageTransformer的东东,还是第一次接触,用起来的确非常酷。

PageTransformer是一个允许你修改ViewPager默认滑动动画的接口,通过它可以实现一些非常炫酷的滑动动画。

那么它是如何工作的呢?官方文档已经有比较详细的说明了,所以说看文档还是很有必要的。其实使用起来也非常简单:

  • 实现ViewPager.PageTransformer接口
  • 实现transformPage(View view,float position)

其中transformPage()方法中的参数View很好理解,就是显示在屏幕中的page(所以这个view是随着滑动状态的变化而变化的哦), 至于这个position参数是什么意思呢?通过一张图来说明:

position参数

屏幕(确切的说,应该是ViewPager)左边缘为0,右边缘为1,page左边缘的所处的位置,就是此page的position的取值了。

以上图为例,page-0,1,2的当前position值分别为-1、0、1,如果从当前位置滑向page-0,并最终到page-0,那么page-0的position值会从-1逐渐增大到0,page-1的position值会从0逐渐增大到1,page-2的position值会从1逐渐增大。滑动过程中会回调transformPage()方法,我们就可以根据position的值实现一些动画效果了。

不止如此,还有……


transformPage()方法提供了position的值和page所对应的view,一般情况下,我们会对此view进行动画处理,但是不限于此。 我们可以对此view的内部的view进行动画处理,就像下边这样:

动态效果图

代码示例:

工程示例PageTransformerDemo

参考

Great animations with PageTransformer

评论