虚表控件十分重要,尤其是移动设备上,重要程度仅次于 webview 。不像 PC 你可以仗着电脑性能好随便写。
怎么分页也是一种策略,包括界面和数据的分页。
有的分页,需要手动翻页。有的虽然不需要,但是加载分页的速度很慢。。
c++虚表也不难,但是优化比较难。(我就写过,模仿安卓的 ListView 扩展 duilib ,几百行代码,就把这些试了一遍:item 不同高度,按行滚动 vs 按像素滚动,平滑滚动动画)
体验最好的当数浏览器。然而浏览器其实也没有原生的虚表控件,需要用库或者自己写。
小红书网站确实是虚表,然而那体验实在太差了,和抖音不能比。
> @
Chuckle 快速找到并滚动到最后一次看的视频也是个算法题
p 的算法题,主页视频就算千万个,直接 for 循环查找下去也是很快的,不要低估 CPU 的运行速度。(我就写过用户脚本,把小红书变成抖音模式,近似)
---
基于浏览器做个文件管理器,取代老古董 explorer:就类似书签管理器的那套分页 UI ,运用到文件管理里,加载图片也是可以的。直接复用框选多选等逻辑了,爽。
浏览器最棒的是 css ,可以各种粉饰,轻松转换网格和列表布局。
说一下我的分页方法:先分块,再分页
分三个块,滚动到末尾的时候,搬动块。
每个块又分十个页面,每个页面管 30 行。约定一个最小行高度,视口外的页面不含 dom 元素,只有一个最小的高度。然后滚动的时候,触发 bind 函数,渲染视口内的页面。
瑕疵:1. 原生滚动条的位置不准。2. 网格模式下,会有空缺。
优点:1. 降低渲染压力。2. 恢复列表位置