您的位置:首页 > 移动开发 > 微信开发

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

2016-11-08 16:54 357 查看
资源下载地址,使用时以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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐