一.日志数据分析
PageTransformer接口中有transformPage(View view, float position)函数,我用了一个Demo工程的日志得到以下数据。这个Demo工程的ViewPager有三个View。
(1)当有View1左滑到View2时,由transformPage函数的日志获得以下数据(注意顺序):
view2的posion由1 -> 0;
view1的posion由0 -> -1;
(2)当View2右滑到View1时,由transformPage函数的日志获得以下数据(注意顺序):
view2的posion有0 -> 1;
view1的posion由-1 -> 0;
view3的posion有1 -> 2;
(2)当View2右滑到View3时,由transformPage函数的日志获得以下数据(注意顺序):
view2的posion有0 -> -1;
view3的posion有1 -> 0;
view1的posion有-1 -> -2;
二.总结
其实我们在实际使用时,实现滑动效果不会考虑所有ViewPager的子item,只考虑滑动时左右两个item。
当左滑时:左View的posion将会由 0-> -1,右View的posion将会由1 -> 0;
当右滑时:左View的posion将会由 -1-> 0,右View的posion将会由 0-> 1;
其实很好理解:
- 当左滑时,屏幕离左View的距离由不偏离(即0)到左偏离一个ViewPager宽度(即-1)。屏幕离由View的距离由右偏离一个ViewPager宽度(即1)到不偏离(即0)
- 当右滑时,屏幕离右View的距离由不偏离(即0)到右偏离一个ViewPager宽度(即1)。屏幕离左View的距离由左偏离一个ViewPager宽度(即-1)到不偏离(即0)