leavesCZY / Matisse

A Image/Video Selector Implemented with Jetpack Compose(一个用 Jetpack Compose 实现的 Android 图片视频选择框架)
https://github.com/leavesCZY/Matisse/wiki
Apache License 2.0
768 stars 60 forks source link

能否支持仅加载相册、列表分页加载和缩略图展示 #27

Closed xiaozhikang0916 closed 1 year ago

xiaozhikang0916 commented 1 year ago

试用了一下app,感觉不错,但是有几个点不知道能不能优化一下:

首先是如果设备里有很多照片、分了很多相册的话,直接加载全部照片有较长的等待时间,不知道能不能实现仅加载相册(包括分页加载),可以提前按需选择相册;

还有就是现在列表页中的照片的读取加载也稍微有点慢,我了解到安卓系统有提供原生的缩略图加载功能,是否考虑在库中集成使用,例如说为MediaResource增加一个suspend fun getThumbNail(): Bitmap之类的函数直接调用?

leavesCZY commented 1 year ago

@xiaozhikang0916 感谢建议哈

1、关于第一点。我可以增加一个属性值,交由外部控制是否要显示默认相册。分页加载你是指分页加载当前相册内的图片吗?由于从 ContentResolver 读取图片列表这个操作貌似是无法分页读取的,而 LazyVerticalGrid 也只会等到要显示了才会去加载当前的图片,所以不太懂你说的分页加载具体是指哪里。至于提前按需选择相册,按我的理解,app 是无法提前知道用户会有哪些相册名的,从而也就没有所谓的提前按需选择了

2、关于第二点。引用方是可以自己通过 ImageEngine 接口来决定要如何加载图片的,开放 ImageEngine 接口的目的也是为了让引用方可以自由决定应该如何显示图片,也区分了 Thumbnail 和 Image 两种图片加载类型

xiaozhikang0916 commented 1 year ago

1里我在意的点是,对于照片很多的设备,一下子从contentResolver中加载数千个数据实体进入内存,会不会需要很长的加载时间(如 #22 中提到的,加载了十几秒),所以我设想是不是可以利用contentResolver的limit、offset、groupBy之类的操作,实现数据实体的分页加载和初始化仅加载相册、不加载全部照片,达到优化首屏速度的效果。

2明白了,这个库只负责照片数据的加载和构造,不负责图片bitmap或者drawable的加载。

leavesCZY commented 1 year ago

明白你的意思了,感觉不是太容易能实现 😂 后续我想想应该如何对这一点进行优化下