1、首先是获取本机的所有图片的路径,文件名等信息
android本地的媒体信息由MediaStore管理,并通过ContentProvider共享数据。MediaStore有个内部类MediaStore.Images,维护系统中存储的图片信息,通过MediaStore.Images.Media.EXTERNAL_CONTENT_URI可以获取到图片的相关信息,包括路径MediaStore.Images.Media.DATA,文件名MediaStore.Images.Media.DISPLAY_NAME,大小MediaStore.Images.Media.SIZE等信息。考虑到查询的操作可能花费一定的时间,考虑用CursorLoader的对照片信息进行查询并返回。注意由于微信中照片是按照修改时间逆序排列的,所以查询的时候也要返回相应的排序,根据MediaStore.Images.Media.DATE_ADDED字段作降序排列:
new CursorLoader(context,MediaStore.Images.Media.EXTERNAL_CONTENT_URI, { MediaStore.Images.Media.DISPLAY_NAME, MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA }, null, null,MediaStore.Images.Media.DATE_ADDED + " desc");
2、获取相册名称列表
对返回的cursor进行遍历可得到MediaStore.Images.Media.DATA,这个字段描述文件的路径信息,可获取该文件所属的文件夹名称。
3、UI
显示照片的控件选用GridView,相册列表是listview。其中需要注意的几个细节是 ① 相册列表弹出时,背景有一个渐暗的效果,需要叠加一个黑色的蒙层。 ②大图预览返回时应带上选择照片的列表