-
Notifications
You must be signed in to change notification settings - Fork 3k
PictureSelector 2.0 用前需知
Luck edited this page Jan 9, 2022
·
1 revision
v2.5.3版本开始默认采用分页加载模式,api提供3个参数.isPageStrategy();1、是否开启分页 2、pageSize每页最大数 3、是否过滤已损坏图片
2.5.1新增.loadCacheResourcesCallback(); api,优化华为Android 10 loading过长问题;
具体使用方式如下;
.loadCacheResourcesCallback(new CacheResourcesEngine() {
@Override
public String onCachePath(Context context, String url) {
/**
* Glide版本号,请根据用户集成为准 这里只是模拟;如果是其他图片加载框架请根据具体的
* 使用方式实现
*/
int GLIDE_VERSION = 4;
File cacheFile;
if (GLIDE_VERSION >= 4) {
// Glide 4.x
cacheFile = ImageCacheUtils.getCacheFileTo4x(context, url);
} else {
// Glide 3.x
cacheFile = ImageCacheUtils.getCacheFileTo3x(context, url);
}
return cacheFile != null ? cacheFile.getAbsolutePath() : "";
}
});
/**
* 2.5.1新增自定义拍照回调接口
* PictureSelector自定义的一些回调接口
*/
private OnPictureSelectorInterfaceListener interfaceListener = new OnPictureSelectorInterfaceListener() {
@Override
public void onCameraClick(Context context, PictureSelectionConfig config, int type) {
// TODO 必须使用context.startActivityForResult(activity.class,PictureConfig.REQUEST_CAMERA);
// TODO 注意:使用自定义相机时,需要设置PictureSelectionConfig两个值
// 1、config.cameraPath (文件输出路径)
// 2、 config.cameraMimeType (相机类型 图片or视频)
switch (type) {
case PictureConfig.TYPE_IMAGE:
// 拍照
ToastUtils.s(getContext(), "Click Camera Image");
break;
case PictureConfig.TYPE_VIDEO:
// 录视频
ToastUtils.s(getContext(), "Click Camera Video");
break;
case PictureConfig.TYPE_AUDIO:
// 录音
ToastUtils.s(getContext(), "Click Camera Recording");
break;
default:
break;
}
}
};
v2.4.6增加接口Callback方式返回结果... 主要用于解决老的requestCode方式Bundle传值过大闪退问题,
这个可以自己根据业务场景需要替换,如果选择图片过多可以使用Callback方式。
.forResult(new OnResultCallbackListener() {
@Override
public void onResult(List<LocalMedia> result) {
// Callback方式返回结果...
}
@Override
public void onCancel() {
// 取消选择
Log.i(TAG, "PictureSelector Cancel");
}
});
另增加.bindCustomPlayVideoCallback();// 自定义使用自己的视频播放器回调
v2.4.3增加 .isUseCustomCamera(true);// 是否使用自定义相机api,
但使用前需要在Application中,实现implements CameraXConfig.Provider接口并实现如下方法:
@NonNull
@Override
public CameraXConfig getCameraXConfig() {
return Camera2Config.defaultConfig();
}
具体可参考Demo中Application类中的实现方式
v2.3.2开始移除了glide,所以使用v2.3.2版本以后的用户一定要配制好图片加载引擎 否则列表图片加载不出来!!!
.loadImageEngine(GlideEngine.createGlideEngine())// 外部传入图片加载引擎,必传项
具体请参考Demo MainActivity.java实现方式
v2.3.3 新增动态配制主题,建议不要与.theme(R.theme.style);方式共用 两者只选其一配制 个人建议使用动态配制为好!!!
// 动态自定义相册主题
PictureParameterStyle mPictureParameterStyle = new PictureParameterStyle();
// 动态自定义裁剪主题
PictureCropParameterStyle mCropParameterStyle = new PictureCropParameterStyle();
// 自定义相册弹起动画配制
PictureWindowAnimationStyle windowAnimationStyle = new PictureWindowAnimationStyle();
windowAnimationStyle.ofAllAnimation(R.anim.picture_anim_up_in, R.anim.picture_anim_down_out);
以上两者具体使用方法请参考Demo MainActivity.java
v2.3.8 PictureSelector加入日志管理工具-自由选择
1.PictureSelector加入Crash日志管理工具方便错误分析,具体使用方式请查看Demo Application类中...
Application onCreate加入两行代码
/** PictureSelector日志管理配制开始 **/
// PictureSelector 绑定监听用户获取全局上下文或其他...
PictureAppMaster.getInstance().setApp(this);
// PictureSelector Crash日志监听
PictureSelectorCrashUtils.init((t, e) -> {
// Crash之后的一些操作可再此处理,没有就忽略...
});
/** PictureSelector日志管理配制结束 **/