官方文档
ViewPager.PageTransformer
接口,并通过 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时效果:
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); }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博客
新闻热点
疑难解答