ViewPagerTransformer学习

官方文档

1.使用PageTransformer自定义翻页动画

  1. 创建类实现ViewPager.PageTransformer接口,
  2. 并通过
    ViewPager.setPageTransformer(boolean reverseDrawingOrder, PageTransformer transformer); 给ViewPager设置该翻页动画。

reverseDrawingOrder: true if the supplied PageTransformer requires page views to be drawn from last to first instead of first to last. true则从后向前画,false则从前往后画。

可以感受下:

设置为false时效果:

设置为true时效果:

2. 该接口方法说明

    public interface PageTransformer {
        public void transformPage(View page, float position);
    }

if page three is visible and the user drags towards page four, transformPage() is called for pages two, three, and four at each step of the gesture. 比如当前页面是第3个,当用户滑向第4个时,该方法会依次被 第2个,第3个,第4个页面调用。

经过实测,该方法会对每一个缓存页面调用该方法。可以通过viewPager.setOffscreenPageLimit(limit); 设置缓存页面个数。

The position parameter indicates where a given page is located relative to the center of the screen.
回调回来的position参数,指的是被调用的page页面相对最中间的页面的位置。比如当前页面是第3个,当用户滑向第4个时,该方法会依次被 第2个,第3个,第4个页面调用。滑动完到第4个时,第2个的position = -1.0,第3个position = 0.0; 第4个 position = 1.0。

可以打印log查看,能更加理解该参数

 public void transformPage(View page, float position){
    //在adapter中设置该page的tag,可以清晰查看到
    LogUtil.d(page.getTag() + ", " + position);
 }

3. 动画设置

Based on the position of the pages on the screen, you can create custom slide animations by setting page properties with methods such as setAlpha(), setTranslationX(), or setScaleY().
依靠该position参数,可以通过setAlpha(),setTranslationX(),setScaleY()等方法设置动画。

官网示例了ZoomoutPageTransformer和DepthPageTransformer两种。可以在github上查看更多。

该PageTransformer用在 无限轮播图Banner中,作为增强功能。


更多:
Hongyang博客

你可能感兴趣的:(viewpager,文档)