仿微信拍照和图片选择开源库(适配android7.0)multi-image-selector
2016-11-08 16:54
357 查看
资源下载地址,使用时以Module的形式导入项目中使用
链接:http://pan.baidu.com/s/1cbySwe
提取码:yl9u
使用准备
1、只开启相册,且相片数量为一张
2、只开启相册,且相片数量可设置,
3、相册和拍照功能,且相片数量唯一(一般用于头像选择),
4、照相和相册,且相片数量可设置,
5、单独的拍照功能
6、结果处理
最后selectImages集合里就是图片了,你可以自己看需求处理了
下面给出用到的FileUtils类和StringUtil类
一、FileUtils类
二、StringUtil类
链接: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; } }
相关文章推荐
- 第三方开源库:图片选择MultiImageSelector
- Android中多图片选择器PhotoPicker库的使用(仿微信,秒杀MultiImageSelector)自己修改的多选
- 第三方开源库:图片选择MultiImageSelector
- Android中多图片选择器PhotoPicker库的使用(仿微信,秒杀MultiImageSelector)
- 微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
- 问题解决--实现仿微信多图选择的开源项目(MultiImageSelector)
- Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等
- Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等
- Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等
- Android-ImageView显示选择本地图片或拍照
- Android-ImageView显示选择本地图片或拍照
- Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等
- Android仿微信图片选择器,支持图片选择和拍照
- android-ImageView显示选择本地图片或拍照
- Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等
- Android仿微信多图片选择,拍照等,适合快速导入到自己项目中
- Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等
- 类似微信图片选择器-MultiImageSelector
- Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等 .
- Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等