仿微信拍照和图片选择开源库(适配android7.0)multi-image-selector

来源:互联网 发布:淘宝开店哪里找货源 编辑:程序博客网 时间:2024/05/23 13:47

资源下载地址,使用时以Module的形式导入项目中使用
链接:http://pan.baidu.com/s/1cbySwe
提取码:yl9u

使用准备

  /**     * 选择的照片     */    private List<String> selectImages = new ArrayList<>(); private static final int TAKE_PICTURE = 0x000001;    private static final int REQUEST_IMAGE = 0x012;

1、只开启相册,且相片数量为一张

  MultiImageSelector selector = MultiImageSelector.create();selector.showCamera(false);selector.single();selector.origin((ArrayList<String>) selectImages);selector.start(mActivity, REQUEST_IMAGE);

2、只开启相册,且相片数量可设置,

  MultiImageSelector selector = MultiImageSelector.create();selector.showCamera(false);selector.count(5);//数量可变selector.multi();selector.origin((ArrayList<String>) selectImages);selector.start(mActivity, REQUEST_IMAGE);

3、相册和拍照功能,且相片数量唯一(一般用于头像选择),

 MultiImageSelector selector = MultiImageSelector.create();     selector.showCamera(true);     selector.single();     selector.origin((ArrayList<String>) selectImages);     selector.start(this, REQUEST_IMAGE);

4、照相和相册,且相片数量可设置,

 MultiImageSelector selector = MultiImageSelector.create();selector.showCamera(true);selector.count(5);selector.multi();selector.origin((ArrayList<String>) selectImages);selector.start(mActivity, REQUEST_IMAGE);

5、单独的拍照功能

 public void photo() {        Intent openCameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);        startActivityForResult(openCameraIntent, TAKE_PICTURE);    }

6、结果处理

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {        if (resultCode == RESULT_OK) {            switch (requestCode) {                case TAKE_PICTURE://拍照                    String fileName = String.valueOf(System.currentTimeMillis());                    Bitmap bm = (Bitmap) data.getExtras().get("data");                    String path = FileUtils.saveBitmap(bm, fileName);                    if (!StringUtil.isBland(path))                        selectImages.add(path);                    UIUtils.showToast("selectImages.size() = " + selectImages.size());                    break;                case REQUEST_IMAGE://相册                    selectImages = data.getStringArrayListExtra(MultiImageSelector.EXTRA_RESULT);                    UIUtils.showToast("selectImages.size() = " + selectImages.size());                    break;            }        }        super.onActivityResult(requestCode, resultCode, data);    }

最后selectImages集合里就是图片了,你可以自己看需求处理了

下面给出用到的FileUtils类和StringUtil类

一、FileUtils类

package cn.hnshangyu.htmlopencamera.utils;import android.graphics.Bitmap;import android.os.Environment;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class FileUtils {    public static String SDPATH = Environment.getExternalStorageDirectory() + "/Photo_Open/";    public static String saveBitmap(Bitmap bm, String picName) {        String path = "";        try {            if (!isFileExist("")) {                File tempf = createSDDir("");            }            File f = new File(SDPATH, picName + ".jpg");            if (f.exists()) {                f.delete();            }            path = f.getAbsolutePath();            FileOutputStream out = new FileOutputStream(f);            bm.compress(Bitmap.CompressFormat.JPEG, 90, out);            out.flush();            out.close();        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return path;    }    public static File createSDDir(String dirName) throws IOException {        File dir = new File(SDPATH + dirName);        if (Environment.getExternalStorageState().equals(                Environment.MEDIA_MOUNTED)) {            System.out.println("createSDDir:" + dir.getAbsolutePath());            System.out.println("createSDDir:" + dir.mkdir());        }        return dir;    }    public static boolean isFileExist(String fileName) {        File file = new File(SDPATH + fileName);        file.isFile();        return file.exists();    }    public static void delFile(String fileName) {        File file = new File(SDPATH + fileName);        if (file.isFile()) {            file.delete();        }        file.exists();    }    public static void deleteDir() {        File dir = new File(SDPATH);        if (dir == null || !dir.exists() || !dir.isDirectory())            return;        for (File file : dir.listFiles()) {            if (file.isFile())                file.delete();            else if (file.isDirectory())                deleteDir();        }        dir.delete();    }    public static boolean fileIsExists(String path) {        try {            File f = new File(path);            if (!f.exists()) {                return false;            }        } catch (Exception e) {            return false;        }        return true;    }}

二、StringUtil类

public class StringUtil {/**     * 判断给定字符串是否空白串 空白串是指由空格、制表符、回车符、换行符组成的字符串 若输入字符串为null或空字符串,返回true     */    public static boolean isBland(CharSequence input) {        if (input == null || "".equals(input) || "null".equals(input))            return true;        for (int i = 0; i < input.length(); i++) {            char c = input.charAt(i);            if (c != ' ' && c != '\t' && c != '\r' && c != '\n') {                return false;            }        }        return true;    }}
0 0
原创粉丝点击