Android:支持多选的本地相册

前段时间在作一个动态发布功能,须要用到图片上传。一开始直接调用的系统相册和相机,因为系统相机不支持多选,就花点时间作了个本地相册,在此开源下。git

先上截图,依次为选择相册界面、相册详情界面、查看图片大图界面github

  

相册列表按图片数量降序排序,相册详情列表按图片时间降序排序,对比了下微信和QQ的相册,读取的文件基本一致。数据库

接下来讲下相册文件遍历的思路。首先确定不会是经过文件夹逐级遍历的,这样效率过低。查了下API发现Android的系统数据库已经存储了全部的图片路径和缩略图路径(若是有),可直接经过ContentProvider来获取,获取大图的URI是缓存

MediaStore.Images.Media.EXTERNAL_CONTENT_URI

获取缩略图的URI是微信

MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI

个人作法是先遍历全部大图,获取ID和路径,再经过大图的ID去查找缩略图路径,在相册中显示的都是缩略图,这样能够提升显示速度,同时减小内存开销。可是经过大图ID去查找缩略图这一步是须要消耗一点时间的,所以将它在App启动时,开启线程执行。LocalImageHelper类用以执行该操做。ide

待完善点:相册的初始化是放在应用启动时,初始化一次后就再也不从新执行,所以假如在应用开启后,设备内添加了新的图片或删除了图片,应用内缓存的相册仍然不会改变,下一步能够在每次打开相册时和本地图片作一次对比,对新增的和删除的图片作一个更新。spa

Demo中使用了ImageLoader库来展现图片,使用的是Android Studio开发。线程

 

GitHub地址:https://github.com/LinJZong/LocalAlbum.gitcode

相关文章
相关标签/搜索