Android关于复杂页面的优化处理(如recycleview嵌套)

最近在商城项目中,首页布局设计的十分复杂,出现了需要recycleview互相嵌套才能实现的情况。费劲千辛万苦终于实现了效果,但是又出现一个令人头疼的问题:快速滑动页面会产生卡顿。于是,又一轮优化之旅就开启了:

1.万年不变的过度绘制:打开手机开发者选项中的过度绘制功能,修改布局(如去掉重复背景、减少布局层次)将页面中所有红色部分(过度绘制)尽量消除;

2.监听recycleview滑动状态,当滑动停止时加载图片,否则暂停加载;

3.对于内层recycleview,由于嵌套的原因,每个都会新建自己的视图池(viewpool),此处new一个全局变量,给所有内层recycleview指定同一个viewpool,增加视图复用,减少内层压力;

4.设置recycleview的缓存

mRecyclerView.setItemViewCacheSize(20);
mRecyclerView.setDrawingCacheEnabled(true);
mRecyclerView.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
mRecyclerView.setNestedScrollingEnabled(false);

给内外层recycleview设置预加载数量:
manager.setInitialPrefetchItemCount(12);

 取消默认动画:rv.setItemAnimator(null);

   优化adapter中的逻辑(例如多用增强for循环、减少new onclicklistener使用全局onclicklistener)等。

经过上述一系列的优化操作,卡顿问题终于得到解决。

PS:在网上还看到另外一种解决方案:将列表中的所有视图(包括需要嵌套的recycleview)都当做footerView和headerView添加到外层的recycleview中,这种方案也亲测可以解决卡顿问题,但是容易引起内存溢出,慎用!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值