Android:支持多选的本地相册

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

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

  

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

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

MediaStore.Images.Media.EXTERNAL_CONTENT_URI

获取缩略图的URI是

MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI

我的做法是先遍历所有大图,获取ID和路径,再通过大图的ID去查找缩略图路径,在相册中显示的都是缩略图,这样可以提高显示速度,同时减少内存开销。但是通过大图ID去查找缩略图这一步是需要消耗一点时间的,因此将它在App启动时,开启线程执行。LocalImageHelper类用以执行该操作。

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

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

 

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

转自:http://www.cnblogs.com/linjzong/p/4629800.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值