// PictureSelector图片选择
implementation 'com.github.xuexiangjys.PictureSelector:picture-core:1.0.5'
//需要裁剪时使用
implementation 'com.github.xuexiangjys.PictureSelector:picture-ucrop:1.0.5'
//==========图片选择===========//
/**
* 获取图片选择的配置
*
* @param fragment
* @return
*/
public static PictureSelectionModel getPictureSelector(Fragment fragment) {
return PictureSelector.create(fragment)
.openGallery(PictureMimeType.ofImage())
// .theme(SettingUtils.isUseCustomTheme() ? R.style.XUIPictureStyle_Custom : R.style.XUIPictureStyle)
.maxSelectNum(8)
.minSelectNum(1)
.selectionMode(PictureConfig.MULTIPLE)
.previewImage(true)
.isCamera(true)
.enableCrop(false)
.compress(true)
.previewEggs(true);
}
public static PictureSelectionModel getPictureSelector(Activity activity) {
return PictureSelector.create(activity)
.openGallery(PictureMimeType.ofImage())
// .theme(SettingUtils.isUseCustomTheme() ? R.style.XUIPictureStyle_Custom : R.style.XUIPictureStyle)
.maxSelectNum(8)
.minSelectNum(1)
.selectionMode(PictureConfig.MULTIPLE)
.previewImage(true)
.isCamera(true)
.enableCrop(false)
.compress(true)
.previewEggs(true);
}
Utils.getPictureSelector(this)
.enableCrop(true)//是否裁剪
.withAspectRatio(1, 1)//裁剪比例 如16:9 3:2 3:4 1:1可自定义
.cropWH(1,1)//裁剪宽高比,设置如果大于图片本身宽高则无效
.freeStyleCropEnabled(true)//裁剪框是否可拖拽
.scaleEnabled(true)//裁剪是否可放大缩小图片
.showCropGrid(true)//是否显示裁剪矩形网格 圆形裁剪时建议设为false
.cropCompressQuality(90)//裁剪压缩质量
.maxSelectNum(1)//最大图片选择数量
.selectionMode(PictureConfig.SINGLE)//多选or单选
.forResult(PictureConfig.CHOOSE_REQUEST);
回调使用:
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PictureConfig.CHOOSE_REQUEST:
// 图片、视频、音频选择结果回调
List<LocalMedia> selectList = PictureSelector.obtainMultipleResult(data);
// 例如 LocalMedia 里面返回三种path
// 1.media.getPath(); 为原图path
// 2.media.getCutPath();为裁剪后path,需判断media.isCut();是否为true 注意:音视频除外
// 3.media.getCompressPath();为压缩后path,需判断media.isCompressed();是否为true 注意:音视频除外
// 如果裁剪并压缩了,以取压缩路径为准,因为是先裁剪后压缩的
if (selectList.get(0).isCut()) upimg(selectList.get(0).getCompressPath());
else upimg(selectList.get(0).getPath());
// binding.rivHeadPic.setImageBitmap(BitmapFactory.decodeFile(selectList.get(0).getPath()));
break;
}
}
}
API说明:
PictureSelector.create(MainActivity.this)
.openGallery(chooseMode)//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
.theme(themeId)//主题样式设置 具体参考values/styles用法:R.style.picture.white.style
.maxSelectNum(maxSelectNum)//最大图片选择数量
.minSelectNum(1)//最小选择数量
.selectionMode(cb_choose_mode.isChecked() ?
PictureConfig.MULTIPLE: PictureConfig.SINGLE)//多选or单选
.previewImage(cb_preview_img.isChecked())//是否可预览图片
.previewVideo(cb_preview_video.isChecked())//是否可预览视频
.compressGrade(Luban.THIRD_GEAR)// luban压缩档次,默认3档Luban.FIRST_GEAR、Luban.CUSTOM_GEAR
.isCamera(cb_isCamera.isChecked())//是否显示拍照按钮
.enableCrop(cb_crop.isChecked())//是否裁剪
.compress(cb_compress.isChecked())//是否压缩
.compressMode(compressMode)//系统自带or鲁班压缩.glideOverride(160,160)// glide加载宽高,越小图片列表越流畅,但会影响列表图片浏览的清晰度
.withAspectRatio(aspect_ratio_x,aspect_ratio_y)//裁剪比例 如16:9 3:2 3:4 1:1可自定义
.hideBottomControls(cb_hide.isChecked() ?false:true)//是否显示uCrop工具栏,默认不显示
.isGif(cb_isGif.isChecked())//是否显示gif图片
.freeStyleCropEnabled(cb_styleCrop.isChecked())//裁剪框是否可拖拽
.circleDimmedLayer(cb_crop_circular.isChecked())//是否圆形裁剪
.showCropFrame(cb_showCropFrame.isChecked())//是否显示裁剪矩形边框 圆形裁剪时建议设为false
.showCropGrid(cb_showCropGrid.isChecked())//是否显示裁剪矩形网格 圆形裁剪时建议设为false
.openClickSound(cb_voice.isChecked())//是否开启点击声音
.selectionMedia(selectList)//是否传入已选图片
.previewEggs(false)//预览图片时 是否增强左右滑动图片体验(图片滑动一半即可看到上一张是否选中)
.isRemove(true)//是否移除图片列表已损坏的图片
.cropCompressQuality(90)//裁剪压缩质量
.compressMaxKB(1024)//压缩最大值kb compressGrade()为Luban.CUSTOM_GEAR有效
.compressWH(4,5)//压缩宽高比compressGrade()为Luban.CUSTOM_GEAR有效
.cropWH(4,5)//裁剪宽高比,设置如果大于图片本身宽高则无效
.rotateEnabled(false)//裁剪是否可旋转图片
.scaleEnabled(true)//裁剪是否可放大缩小图片
.videoQuality(1)//视频录制质量0 or 1
.videoSecond(0)//显示多少秒以内的视频
.forResult(PictureConfig.CHOOSE_REQUEST);//结果回调onActivityResult code
发表评论 取消回复