在ViewPager2的 PageTransformer的定制過程中,會出現(xiàn)各種的疑問.其中比較困擾我的就是 PageTransformer的各個page與position是如何對應(yīng)的呢?
首先聲明一點,本文的position指的是ViewPager2.PageTransformer的回調(diào)方法transformPage(View page, float position)中的postion,和我們所說的集合或者RecyclerView的item的position無關(guān)!
一、 最普通的列表, 如左圖所示: Position是從0,1,2...位按順序排序到 list.size-1位.

ViewPager2.png
二、卡片堆疊排列的列表, 如右圖所示: 滿足以下特征:
- 卡片的初始狀態(tài)和普通列表一致,最頂層的position = 0,其余位置依次順序排列.
2.向上滑動之后,之前position = 0 的page 的會改變成 position = -1,其余的page的postion都會改變成 舊position - 1. 滑動之后顯示在界面頂層的position始終為0.
這是transformPage(View page, float position)回調(diào)方法的規(guī)則: 當(dāng)前的position始終為0,被劃上去的page的position會變成負(fù)數(shù),而在當(dāng)前的頁下面的page的position也會比初始狀態(tài)相應(yīng)減少N個position.這取決于在初始狀態(tài)下,當(dāng)前的頁的初始position為N.
所以我們在計算縮放和位移動畫時,要知道自己修改的是哪一個position.結(jié)合上圖弄清position變化的原理很重要.