官方文檔
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博客
新聞熱點
疑難解答