相信viewpager+fragment在各个APP都已是熟面孔了,你们对他们应该都比较熟悉了。 最近在项目中使用的这个组合被吐槽有各类问题,由于vp中使用的fragment份量比较重(view数目比较多),并且vp嵌套的布局也存在一些问题(NestScroll嵌套vp+recyclerview等),暴露出了上下滑动灵敏,左右滑动卡顿等问题。 想过的解决方案git
- 自定义view。(没达到预期效果,对于滑动处理一样存在问题)
- recyclerview第一项嵌套vp。(相信不少APP都是这样作的,不过多是因为上述所说,fragment份量问题,vp滑动没有问题,但rv滑动到第一项就出现卡顿了)
- recyclerview第一项嵌套recyclerview。(你没看错,第一项嵌套一个横向布局的rv,最后结果是无比的顺畅)
如今说说第3点的实现github
- rv实现vp效果,这种效果github上面一搜估计就会有了,不过!!!如今是谷歌原生支持了!!!普天同庆。 并且代码十分简单粗暴,一行代码实现vp滑动效果(关于Snaphelper,自行搜索一下)
- 不过这种实现方式对比vp来讲也存在一些缺点,缺乏了一些相应的监听或者API。 好比滑动结束监听、获取当前position、左滑仍是右滑。不过上有政策下有对策,只须要咱们手动加一些代码便可 首先是获取当前position和左滑仍是右滑
而后是滑动结束监听布局
不过当你调用 orm
这个API的时候,上面那个滑动状态改变监听事件是不会触发的,故须要本身去调用滑动结束的事件,缺点之一
还有一个缺点就是没有viewpager那种Transformer效果,不过一样的,rv带来的效率和流畅性不是vp+fragment能比的。故针对项目须要,各取所需吧!!事件