一、背景
ByPhoto是个安卓图片选择库, 在启动渲染速度上做了很多优化; 荣耀8真机测试,图库里有3000多张图片。 冷启动图片选择页渲染完成需800ms左右, 热启动(即第二次打开Activity)渲染需要300ms。 真正实现了秒开的用户体验。



二、需求
1、支持图片预加载, 即将图库的前几张图片加载到内存中; 使用了Glide的preload;
2、数据库分段回调, 即图片有几千张图片时, 每查询一定数量时(例如10条)就通知UI补充数据; RecyclerView不会刷新屏幕外的图片,只是缓存了文件路径; PS:这里还可以再优化一下,例如列表向下滑动时预加载后半段数据; 但考虑到字符串占用内存不大,几兆的样子,暂未实现;
3、数据结构, 使用适当的数据结构Map、Set降低读写时间复杂度;
4、支持手指在屏幕滑动时自动勾选经过的图片;
5、勾选图片时只刷新选中图标, 不刷新item图片;避免纵向滑动时刷新闪烁的问题;
6、支持设置单行图片数量和最多选中数量;

三、核心代码

ByPhoto是一个优化了启动渲染速度的安卓图片选择库,实现了秒开效果。支持图片预加载、数据库分段回调、适配不同数据结构、手指滑动选图等功能。核心代码包括在子线程分批加载数据、预加载图片到Glide缓存,以及自定义RecyclerView处理滑动事件。该项目在GitHub上有源码可供参考。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



