Android-简单的图片选择器

第一次写博客写的不好,大家多多见谅吧!

UI界面很简单,主要是获取所有图片路径的代码,拿到所有的图片之后可以自己根据UI来编写界面

效果图:

 


关键代码:

//存放相册名以及第一张图片用于当封面
private ArrayList<JSONObject> photosDir = new ArrayList<>();
//存放所有的照片;根据相册分组存放
private JSONArray photos = new JSONArray();
private void initImages() {
    //获取存储在外部存储器(SD卡)上的图片文件的资源
    Uri mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
    String key_MIME_TYPE = MediaStore.Images.Media.MIME_TYPE;
    String key_DATA = MediaStore.Images.Media.DATA;
    //内容解析器
    ContentResolver mContentResolver = getContentResolver();
    //query所有图片
    Cursor cursor = mContentResolver.query(mImageUri, new String[] { key_DATA },
            key_MIME_TYPE + "=? or " + key_MIME_TYPE + "=? or " + key_MIME_TYPE + "=?",//条件语句
            new String[] { "image/jpg", "image/jpeg", "image/png" },//条件
            MediaStore.Images.Media.DATE_MODIFIED);
    if (cursor != null) {
        //遍历cursor内容的时候从最后一条遍历;这样便于处理最新照片
        if (cursor.moveToLast()) {
            //相册名Set
            HashSet<String> cachePath = new HashSet<String>();
            //初始化相册List
            photosDir = new ArrayList<JSONObject>();
            //创建一个最新相册
            JSONObject jo_ = new JSONObject();
            try {
                //设置最新相册的显示名称
                jo_.put("imgPath", "最新照片");
            } catch (JSONException e) {
                e.printStackTrace();
            }
            photosDir.add(jo_);
            photos = new JSONArray();
            //创建一个用于存储最新照片的jsonArray
            JSONArray newArrayStrs = new JSONArray();
            photos.put(newArrayStrs);
            //图片数组
            JSONArray arrayStrs = null;
            int i = 0;
            do {
                //获取图片路径
                String imagePath = cursor.getString(0);
                File f = new File(imagePath);
                if (f.exists() == true && f.length() != 0) {
                    //获取相册名[得到该文件的父文件夹的名字]
                    String parentPath = f.getParentFile().getName();
                    if (cachePath.contains(parentPath)) {
                        //如果相册set中存在该图片父文件夹名称;则只把该图片存入图片数组中
                        arrayStrs.put(imagePath);
                    } else {
                        //如果相册set中不存在该图片父文件夹名称;把文件夹名称存入相册set中
                        cachePath.add(parentPath);
                        //创建一个相册名jsonObject;设置相册名称以及封面
                        JSONObject jo = new JSONObject();
                        try {
                            jo.put("imgPath", parentPath);
                            jo.put("fisrtImg", imagePath);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                        //把相册名jsonObject放入相册名数组中
                        photosDir.add(jo);
                        //初始化图片数组;并把图片放入图片数组中再把图片数组放入所有的图片数组集合中
                        arrayStrs = new JSONArray();
                        arrayStrs.put(imagePath);
                        photos.put(arrayStrs);
                    }
                    //最新相册最多只存放80张图片
                    if (i < 80) {
                        if (i == 0) {
                            try {
                                //把第一张图片设置为最新相册的封面
                                jo_.put("fisrtImg", imagePath);
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                        }
                        newArrayStrs.put(imagePath);
                        i++;
                    }
                }
            } while (cursor.moveToPrevious() == true);
        }
        cursor.close();
    }
}

版权声明:本文为博主原创文章,遵循版权协议,转载请附上原文出处链接和本声明。
本文链接:
山东11选5 极速3分彩 上海时时乐 欢乐生肖 三分时时彩 平安彩票 飞速赛车平台 极速快乐十分 澳洲幸运10开奖结果 幸运飞艇官网