仿微信拍照和图片选择开源库(适配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
- 仿微信拍照和图片选择开源库(适配android7.0)multi-image-selector
- Android7.0调用系统相机拍照、相册选择图片、裁剪
- Android7.0调用系统相机拍照、相册选择图片、裁剪 图片压缩
- Android7.0 拍照 选择照片 权限 实现
- image-chooser-library 相册图片选择,拍照
- 图片选择器之Multi-Image-Selector(国产的)
- Android7.0上拍照与选择照片Crash问题
- Android仿微信图片选择器,支持图片选择和拍照
- 适配Android7.0的拍照,选取照片
- 从相册和相机选择图片以及图片压缩和android7.0相机
- Android图片裁剪(拍照和从相册选择)
- Android 从相册和拍照选择图片
- 拍照和从相册选择图片 截图
- android拍照和本地选择图片
- 拍照和从相册选择图片
- android 拍照和选择相册图片剪切
- 拍照和从相册选择图片
- Android中仿微信选择图片和拍照
- a标签与click的关系
- Shell 命令基础
- CSS3 motion-path 路径动画
- Parajumpers Dame parajumpers long bear
- 怎样写一个解释器
- 仿微信拍照和图片选择开源库(适配android7.0)multi-image-selector
- ARP嗅探和抓包学习
- Word中根据表头动态增加表格行,然后往表格里写数据,以及在Word中添加书签,然后替换书签值
- ExtJs关闭面板时清空面板中的内容
- 微信硬件蓝牙开发各种坑不完全开发指南
- 使用原生javascript生成html内容
- nutch2.3.1爬取marker流程
- 解决PLSQL报错"动态执行表不可访问,本会话的自动统计被禁止"
- SS-libv安装填坑