相信大家项目中大多都有图片上传功能,这里我也分享一个很强大的选择器-PictureSelector,包含了图片选择和视频选择
引入部分,在build.gradle里加入:
/** * 多图选择,包含PhotoView,glide */ compile 'com.github.LuckSiege.PictureSelector:picture_library:v2.0.4'
代码部分 跳转进入多图或多视频,音频的选择器页面的自定义
//相册 gallery.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 进入相册 以下是例子:不需要的api可以不写 PictureSelector.create(mActivity) .openGallery(chooseMode)// 全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()、音频.ofAudio() .theme(R.style.picture_style)// 主题样式设置 具体参考 values/styles 用法: R.style.picture.white.style .maxSelectNum(maxSelectNum)// 最大图片选择数量 .minSelectNum(1)// 最小选择数量 .imageSpanCount(4)// 每行显示个数 .selectionMode(PictureConfig.MULTIPLE)// 多选 or 单选 .isCamera(false) .previewImage(false)// 是否可预览图片 .previewVideo(false)// 是否可预览视频 .compressGrade(Luban.THIRD_GEAR)// luban压缩档次,默认3档 Luban.FIRST_GEAR、Luban.CUSTOM_GEAR .enableCrop(false)// 是否裁剪 .compress(true)// 是否压缩 .glideOverride(160, 160)// glide 加载宽高,越小图片列表越流畅,但会影响列表图片浏览的清晰度 .isGif(false)// 是否显示gif图片 .freeStyleCropEnabled(true)// 裁剪框是否可拖拽 .circleDimmedLayer(false)// 是否圆形裁剪 .showCropFrame(false)// 是否显示裁剪矩形边框 圆形裁剪时建议设为false .showCropGrid(false)// 是否显示裁剪矩形网格 圆形裁剪时建议设为false .openClickSound(false)// 是否开启点击声音 .selectionMedia(selectList)// 是否传入已选图片 .forResult(PictureConfig.CHOOSE_REQUEST);//结果回调onActivityResult code } });
这里粘贴上部分选择的文件本地地址怎么获取的截图
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { switch (requestCode) { case PictureConfig.CHOOSE_REQUEST: if (isHeadPort) { // 图片选择结果回调 List<LocalMedia> localMedias = PictureSelector.obtainMultipleResult(data); if (localMedias.isEmpty()) { return; } KLog.a(localMedias.toString()); for (LocalMedia localMedia : localMedias) { mPath = localMedia.getCompressPath(); GlideUtil.displayCircle(ivEditUserInfoHeadPortrait, mPath); editUserInfoPresenter.updateHeadPortrait(mPath, userInfo.getId());//这里本地图片上传到自己的服 务器 }
}
break;
}
}