问一下这个性能 手机上可以跑不?

Draw Call 650左右

这个是一个列表的 100个列表项的情况
如果 这6个子也签 都有200个左右列表项,手机还能跑到50帧吗?
当然不是同时显示, 同时只有1个也签的 列表 200个列表项
但其他的子也签 也在内存中,
CONTENT.active = true;
再显示,并且隐藏之前的列表

能跑,就是打开和切换的时候,会卡

200 dc中低端都卡了,自己想想 600 是什么情况吧

这个肯定卡的,得优化Draw Call
1、列表子项最好能循环利用,最好的再加一个列表分层;
2、文本与图片分开,不要穿插使用;
3、合图集;
这样大概能减少90%的DC

这显示窗口内的 列表项 才显示
itemNode.active = true;
否则
itemNode.active = false;
这个就能解决一部分吗?

你这个很容易用虚拟列表啊,然后如果不想用,判断一下,不显示的那些item的透明度设置为0就好了,active会使layout出问题。

好的 多谢啦!

这ui不错:+1:,但drawcall有些高

能解决一点,但是重点在于列表占用了太多的DC,所以主要在这个做优化

这个如何优化?吧 头像放一个大图集里?

image
就算相同的头像 也还是DC很高 !

列表的优化,论坛很多帖子,先去看看~

这个很好优化啊,这种界面drawcall不会过20的

肯定用虚拟列表啊

下面的文本可以用位图 能减少不少DC

https://009-1251343714.cos.ap-guangzhou.myqcloud.com/web/CmStar/index.html
我这也高 照样跑

我遇到vivo一台20年的千元机,50drawcall左右,只有40帧左右。。。cpu是晓龙430。。。

我之前搞过一个大列表的需求,根据列表数量计算content的height,监听ScrollView的scrolling事件,用content的y,计算处于展示框的下标范围,更新item的内容和坐标,只需要创建8~9个就能实现一个三千左右的大列表,不过在低端机上没试过,没太注意性能

你是说 超出可视范围 不创建,仅给出CONTENT的高度,
再可视范围 时再用 8·9个列表项来更改 列表项UI的内容

我现在是 都创建,但可视窗口外的 透明度=0,这样创建时间有点卡,之后 滚动就顺滑了
如果在 滚动时 再修改列表项内容 不知道会不会 滚动不顺啊!

这里得性能开销主要有两个,一个是大量创建预制体时候的开销,还有一个创建好了后,drawcall带来的性能问题。600多的drawcall是一定会卡的,打开的时候卡顿明显,还有就是手机发热严重。
针对大量创建预制体的性能开销,你可以选择分帧加载,不要一下子创建完。这种方案虽然解决了创建问题,但是drawcall并没有减少。针对drawcall带来的性能问题,可以判断节点有没有在mask节点内,不在的话,就把节点的opacity改为0。这样就会解决drawcall过高的问题,但是如果你的列表里节点过多,会带来新的开销:在列表滑动的过程中,一直判断节点是不是在mask节点内。
所以,一劳永逸的办法就是,创建比可视区域多一两个节点的方案,这样就解决了上述两个问题。