文档章节

Android:支持多选的本地相册

丁佳辉
 丁佳辉
发布于 2015/10/22 09:05
字数 496
阅读 3396
收藏 7

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

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

  

相册列表按图片数量降序排序,相册详情列表按图片时间降序排序,对比了下微信和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

共有 人打赏支持
丁佳辉
粉丝 19
博文 412
码字总数 197400
作品 0
浦东
程序员
加载中

评论(1)

小啊飞
小啊飞
你好,能留一下联系方式吗,我把您的代码集成到我的demo,读、写内存卡的权限声明了,却总是崩溃提示没声明读取的权限 SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=25126, uid=10168 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
react native android 实现图片预览 图片保存 react-native-image-zoom-viewer

上一篇 介绍了ios 的图片预览 和图片保存 ,Android 实现起来就稍微复杂点, android 的 CameraRoll 只支持 本地文件,解决方式就是把图片下载到本地 ,然后调用这个保存到相册的方法。 这里...

JsLin_
07/14
0
0
Android根据图片Uri获取图片path绝对路径的几种方法【转】

在Android 编程中经常会用到Uri转化为文件路径,如我们从相册选择图片上传至服务器,一般上传前需要对图片进行压缩,这时候就要用到图片的绝对路径。 下面对我开发中uri转path路径遇到的问题...

vetter
09/03
0
0
说说 Android 中如何使用摄像头和相册

很多 APP 应用都有用户头像功能,用户既可以调用摄像头马上拍一张美美的自拍,也可以打开相册选取一张心仪的照片作为头像。 1 调用摄像头 布局文件: 活动类代码: getExternalCacheDir() 可...

deniro
05/26
0
0
react native 实现图片预览 图片保存 react-native-image-zoom-viewer

图片 预览,和保存 功能 应该是很常见的APP 功能 。实现起来也很简单。 这里用到的组件是:https://github.com/ascoders/react-native-image-viewer 看下新效果图: 使用 : 下面代码 自己稍...

JsLin_
07/13
0
0
Android 定制系统 - MIUI

MIUI是小米科技推出的一款基于CyanogenMod而深度定制的Android移动操作系统,从Android 4.0开始,已经完全脱离CyanogenMod而改为基于原厂ROM的定制方式,中文名称为“米柚”。它大幅修改了A...

匿名
2013/01/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx开启stub_status模块配置方法

nginx开启stub_status模块配置方法 2017年12月13日 15:57:29 ly_dengle 阅读数:3765 标签: stub_statusnginxnginx开启stub_status模块 更多 个人分类: 软件工具php 版权声明:本文为博主原...

linjin200
33分钟前
3
0
挑逗 Java 程序员的那些 Scala 绝技

有个问题一直困扰着 Scala 社区,为什么一些 Java 开发者将 Scala 捧到了天上,认为它是来自上帝之吻的完美语言;而另外一些 Java 开发者却对它望而却步,认为它过于复杂而难以理解。同样是 ...

joymufeng
36分钟前
94
0
精通Spring Boot——第十三篇:整合Mybatis多数据源

久违了,最近度过了一段倦怠期,这段时间干什么都没有动力,拖延症复发。好在我回来了.... ——From me . 进入今天的主题——在Spring Boot 项目中整合mybatis多数据源,其实很简单,其实并不...

developlee的潇洒人生
36分钟前
11
0
ADB控制电视盒子备忘

连接 adb connect 192.169.2.111 获取安装软件的列表 adb shell pm list package 删除 adb uninstall cn.uc.test 安装 adb install xxx.apk...

乐_然
44分钟前
4
0
Hadoop生态系统

首先我们先了解一下Hadoop的起源。然后介绍一些关于Hadoop生态系统中的具体工具的使用方法。如:HDFS、MapReduce、Yarn、Zookeeper、Hive、HBase、Oozie、Mahout、Pig、Flume、Sqoop。 Hadoop...

瑞查德-Jack
51分钟前
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部