引入
https://github.com/pengjianbo/GalleryFinal
aar 比 jar 更好,更先进,aar可以改后缀rar,打开会发现它里面有一个jar 还有其他资源文件
添加aar的方法和jar差不多 文件复制到libs目录 然后在app的build.gradle文件中 多添加 repositories
repositories { flatDir { dirs 'libs' } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile files('libs/butterknife-7.0.1.jar') compile files('libs/glide-3.7.0.jar') compile(name: 'galleryfinal-1.4.8.7', ext: 'aar') compile(name: 'actionsheet-1.1.6', ext: 'aar') }
在application中 设置 ThemeConfig FunctionConfig ImageLoader CoreConfig
这里可以选择自己用的图片加载方式
然后就可以在逻辑代码中调用了,第一个参数是请求码,回调时可以用,第二个参数是功能配置,如果不设置就默认用application中的配置,第三个是回调
GalleryFinal.openGallerySingle(200,mOnHanlderResultCallback); FunctionConfig functionConfig=new FunctionConfig.Builder().setEnableCamera(true).setEnableEdit(true) .setEnableCrop(true).setEnableRotate(true).setEnablePreview(true).setForceCrop(true).setForceCropEdit(true).build(); GalleryFinal.openCamera(100,functionConfig,mOnHanlderResultCallback);
回调 成功回调onHanlderSuccess 返回请求码i 和 list,可以针对不同的请求码作出不同的操作,这里只选了一张图片,所以直接get(0),再用getPhotoPath()方法得到路径
universalimageloader 加载时前面还要加上 "file:/" ,Glide 则不用,因为源码给的Glide 加载方案中已经加上了 "file:/"
三星手机上 用相机拍出来的照片 用 universalimageloader 加载是 斜的,用Glide 加载就是正常的。其他手机没有这个问题,所以有必要设置一下 功能配置 setForceCropEdit(true) 强制对图片进行编辑:旋转一下
private GalleryFinal.OnHanlderResultCallback mOnHanlderResultCallback=new GalleryFinal.OnHanlderResultCallback() { @Override public void onHanlderSuccess(int i, List<PhotoInfo> list) { if (list!=null){ if (i==100){ Logger.e("openCamera"); }else if (i==200){ Logger.e("openGallerySingle"); } DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnFail(R.drawable.ic_gf_default_photo) .showImageForEmptyUri(R.drawable.ic_gf_default_photo) .showImageOnLoading(R.drawable.ic_gf_default_photo).build(); ImageLoader.getInstance().displayImage("file:/" + list.get(0).getPhotoPath(), imageView, options); ImageLoader.getInstance().displayImage("file:/" + list.get(0).getPhotoPath(), shapedImageView, options); Glide.with(mContext).load(list.get(0).getPhotoPath()).into(imageView2); final BmobFile bmobFile=new BmobFile(new File(list.get(0).getPhotoPath())); bmobFile.uploadblock(new UploadFileListener() { @Override public void done(BmobException e) { if (e==null){ showToast("上传文件成功:" + bmobFile.getFileUrl()); Glide.with(mContext).load(bmobFile.getFileUrl()).into(ivbmob); }else { showToast("上传文件失败:" + e.getMessage()); } } }); } } @Override public void onHanlderFailure(int i, String s) { showToast(s); } };