快把你繁重的viewpager换成recyclerview吧

相信viewpager+fragment在各个APP都已经是熟面孔了,大家对他们应该都比较熟悉了。 最近在项目中使用的这个组合被吐槽有各种问题,因为vp中使用的fragment分量比较重(view数目比较多),而且vp嵌套的布局也存在一些问题(NestScroll嵌套vp+recyclerview等),暴露出了上下滑动灵敏,左右滑动卡顿等问题。 想过的解决方案

  1. 自定义view。(没达到预期效果,对于滑动处理同样存在问题)
  2. recyclerview第一项嵌套vp。(相信很多APP都是这样做的,不过可能是由于上述所说,fragment分量问题,vp滑动没有问题,但rv滑动到第一项就出现卡顿了)
  3. recyclerview第一项嵌套recyclerview。(你没看错,第一项嵌套一个横向布局的rv,最后结果是无比的顺畅)

现在说说第3点的实现

  1. rv实现vp效果,这种效果github上面一搜估计就会有了,不过!!!现在是谷歌原生支持了!!!普天同庆。 而且代码十分简单粗暴,一行代码实现vp滑动效果(关于Snaphelper,自行搜索一下)

  1. 不过这种实现方式对比vp来说也存在一些缺点,缺少了一些相应的监听或者API。 比如滑动结束监听、获取当前position、左滑还是右滑。不过上有政策下有对策,只需要我们手动加一些代码即可 首先是获取当前position和左滑还是右滑

然后是滑动结束监听

不过当你调用

这个API的时候,上面那个滑动状态改变监听事件是不会触发的,故需要自己去调用滑动结束的事件,缺点之一

还有一个缺点就是没有viewpager那种Transformer效果,不过同样的,rv带来的效率和流畅性不是vp+fragment能比的。故针对项目需要,各取所需吧!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值