在项目中做了一个ViewPager+Fragment滑动翻页的效果,在模拟器和小米手机上测试也比较正常。但是换到4.7以上屏幕测试的时候发现老是滑动失效。
因为系统默认的滑动策略是当用户滑动超过半屏之后才会翻页,在网上找了很多方法之后都失败了。我之前还以为是因为我用了viewpagerindicator的原因。后来把viewpagerindicator代码删除后没半点改善,发现其实viewPager的滑动翻页根viewpagerindicator没有半毛关系。全是系统接管的。
然后我试着重写了OnTouch和setOnPageChangeListener方法,虽然可以达到我要的效果,但是没有继承系统的动画,setCurrentIndex()方法很丑陋。我也不想重写PagerAdapter太费事了。在网上找了N个例子之后发现有的例子滑动异常流畅,分析其代码也没什么区别,并且把我写的代码一比一拷贝过去之后也是异常流畅,这样证明不是哥写的代码有问题啊。
纠结了一天后,我终于想到他丫的难道是V4支持包的问题吗?可是我两个jar扩展包都用的是v4啊,然后尝试替换v4扩展包之后果真解决了问题!!!
也就说ViewPager在大屏上滑动不流畅,导致滑不到半屏不能翻页的原因是Google修改了V4包中ViewPager滑动策略,最简单的方式是用旧的V4包替换!
下面附上旧的V4包,我只想说Google太可恶了,修改了V4包也不说一声。。。这个小Bug废了我两天时间......但是同样也会带来一些问题就是旧的V4包里缺少一些新方法。这个就需要大家按照项目需要自己权衡了