背景:使用ViewPager控件完成滑动切换功能。
问题:在编写的PageTransformer类中的transformPage方法,获得的position值不对。在静止状态时,主view的position不等于0,是略大于0的数。
原因:在ViewPager源码中的onPageScrolled方法,看到计算position的方法如下:
final float transformPos = (float) (child.getLeft() - scrollX) / getClientWidth();
这里分子上少减去了左侧padding,导致计算的position偏大。
解决方案:
在transformPage方法中对position进行如下调整:
ViewPager viewPager = (ViewPager) page.getParent();position -= (float) viewPager.getPaddingLeft() /(viewPager.getMeasuredWidth() - viewPager.getPaddingLeft() -viewPager.getPaddingRight());
