Skip to content

Documentation_2.x

杨培星 edited this page Dec 7, 2019 · 1 revision

小红书图片选择器

属性配置

ImagePicker.withCrop(new RedBookCropPresenter())//设置presenter
           .setMaxCount(9)//设置选择数量
           .showCamera(true)//设置显示拍照
           .setColumnCount(4)//设置列数
           .mimeType(MimeType.ofImage())//设置需要加载的文件类型
           .filterMimeType(MimeType.GIF)//设置需要过滤掉的文件类型
           .setFirstImageItem(null)//设置上一次选中的图片
           .setFirstImageUrl(null)//设置上一次选中的图片地址
           .setVideoSinglePick(true)//设置视频单选
           .setCropPicSaveFilePath("剪裁图片保存路径")
           .setMaxVideoDuration(2000L)//设置可选区的最大视频时长
           .setMinVideoDuration(60000L)//设置视频可选取的最小时长
           .pick(this, new OnImagePickCompleteListener() {
                @Override
                public void onImagePickComplete(ArrayList<ImageItem> items) {
                    //图片剪裁回调,主线程
                    //注意:剪裁回调里的ImageItem中getCropUrl()才是剪裁过后的图片地址
                }
            });

自定义Presenter

继承自ICropPickerBindPresenter并实现如下方法,具体使用可参考demo中RedBookCropPresenter实现

public class RedBookCropPresenter implements ICropPickerBindPresenter {
    /**
     * 加载列表图片
     *
     * @param imageView imageView
     * @param item      当前图片信息
     */
    @Override
    public void displayListImage(ImageView imageView, ImageItem item, int size) {
        //Glide or other ImageLoader
    }

    /**
     * 加载剪裁区域里的图片
     *
     * @param imageView imageView
     * @param item      当前图片信息
     */
    @Override
    public void displayCropImage(ImageView imageView, ImageItem item) {
         //Glide or other ImageLoader
    }

    /**
     * 设置自定义ui显示样式
     *
     * @param context 上下文
     * @return PickerUiConfig
     */
    @Override
    public CropUiConfig getUiConfig(Context context) {
        return new CropUiConfig();
    }

    /**
     * 提示
     *
     * @param context 上下文
     * @param msg     提示文本
     */
    @Override
    public void tip(Context context, String msg) {
        //Toast or dialog ...
    }

    /**
     * 选择超过数量限制提示
     *
     * @param context  上下文
     * @param maxCount 最大数量
     */
    @Override
    public void overMaxCountTip(Context context, int maxCount) {
        //Toast or dialog ...
    }

    /**
     * 拦截选择器取消操作,用于弹出二次确认框
     *
     * @param activity     当前选择器页面
     * @param selectedList 当前已经选择的文件列表
     * @return true:则拦截选择器取消, false,不处理选择器取消操作
     */
    @Override
    public boolean interceptPickerCancel(final Activity activity, ArrayList<ImageItem> selectedList) {
        return false;
    }

    /**
     * 满足selectConfig.isVideoSinglePick()==true 时,才会触发此方法
     * 在单选视频里,点击视频item会触发此方法
     *
     * @param activity  页面
     * @param imageItem 当前选中视频
     * @return true:则拦截外部回调,直接执行该方法, false,不处理视频点击
     */
    @Override
    public boolean interceptVideoClick(Activity activity, ImageItem imageItem) {
        return false;
    }

    /**
     * @param context context
     * @return 配置选择器一些提示文本和常量
     */
    @NonNull
    @Override
    public PickConstants getPickConstants(Context context) {
        return new PickConstants(context);
    }
}

自定义UI

@Override
public CropUiConfig getUiConfig(Context context) {
    CropUiConfig config = new CropUiConfig();
    //设置主题色,包含选中样式的圆形背景色和边框色
    config.setThemeColor(Color.parseColor("#ff2442"));
    //设置item未选中图标
    config.setUnSelectIconID(R.mipmap.picker_icon_unselect);
    //设置相机图标
    config.setCameraIconID(R.mipmap.picker_ic_camera);
    //设置返回图标
    config.setBackIconID(R.mipmap.picker_icon_close_black);
    //设置剪裁区域自适应图标
    config.setFitIconID(R.mipmap.picker_icon_fit);
    //设置剪裁区域充满图标
    config.setFullIconID(R.mipmap.picker_icon_full);
    //设置留白图标
    config.setGapIconID(R.mipmap.picker_icon_haswhite);
    //设置填充图标
    config.setFillIconID(R.mipmap.picker_icon_fill);
    //设置视频暂停图标
    config.setVideoPauseIconID(R.mipmap.picker_icon_video);
    //设置返回按钮颜色
    config.setBackIconColor(Color.WHITE);
    //设置剪裁区域颜色
    config.setCropViewBackgroundColor(Color.parseColor("#111111"));
    //设置拍照图标背景色
    config.setCameraBackgroundColor(Color.BLACK);
    //设置标题栏背景色
    config.setTitleBarBackgroundColor(Color.BLACK);
    //设置下一步按钮选中文字颜色
    config.setNextBtnSelectedTextColor(Color.WHITE);
    //设置下一步按钮未选中文字颜色
    config.setNextBtnUnSelectTextColor(Color.WHITE);
    //设置标题文字颜色
    config.setTitleTextColor(Color.WHITE);
    //设置item列表背景色
    config.setGridBackgroundColor(Color.BLACK);
    //设置下一步按钮未选中时背景drawable
    config.setNextBtnUnSelectBackground(PCornerUtils.cornerDrawable(Color.parseColor("#50B0B0B0")
        ,PViewSizeUtils.dp(context, 30)));
    //设置下一步按钮选中时背景drawable
    config.setNextBtnSelectedBackground(PCornerUtils.cornerDrawable(Color.parseColor("#ff2442")
        , PViewSizeUtils.dp(context, 30)));
    //设置是否显示下一步数量提示
    config.setShowNextCount(false);
    //设置下一步按钮文字
    config.setNextBtnText("下一步");
    config.setTitleArrowIconID(R.mipmap.picker_arrow_down);

    config.setShowStatusBar(false);
    return config;
}

Activity样式

ImagePicker.withCrop(new RedBookCropPresenter())//设置presenter
        //...省略若干属性
        .pick(this, new OnImagePickCompleteListener() {
            @Override
            public void onImagePickComplete(ArrayList<ImageItem> items) {
                //图片剪裁回调,主线程
                //注意:剪裁回调里的ImageItem中getCropUrl()才是剪裁过后的图片地址
            }
        });

Fragment样式

ImagePickAndCropFragment fragment= ImagePicker.withCrop(new RedBookCropPresenter())//设置presenter
        //...省略若干属性
        .pickWithFragment(new OnImagePickCompleteListener() {
            @Override
            public void onImagePickComplete(ArrayList<ImageItem> items) {
                //图片剪裁回调,主线程
                //注意:剪裁回调里的ImageItem中getCropUrl()才是剪裁过后的图片地址
            }
        });
  • 外部activity需要复写onBackPressed
@Override
public void onBackPressed() {
    if (fragment != null && fragment.onBackPressed()) {
        return;
    }
    super.onBackPressed();
}

微信图片选择器

属性配置

ImagePicker.withMulti(new WXImgPickerPresenter())//指定presenter
           .setMaxCount(9)//设置选择的最大数
           .setColumnCount(4)//设置列数
           .mimeType(MimeType.ofAll())//设置要加载的文件类型,可指定单一类型
           .filterMimeType(MimeType.GIF)//设置需要过滤掉加载的文件类型
           .showCamera(true)//显示拍照
           .setPreview(true)//开启预览
           .setVideoSinglePick(true)//设置视频单选
           .setSinglePickImageOrVideoType(true)//设置图片和视频单一类型选择
           .setMaxVideoDuration(2000L)//设置视频可选取的最大时长
           .setMinVideoDuration(60000L)//设置视频可选取的最小时长
           .setLastImageList(null)//设置上一次操作的图片列表,下次选择时默认恢复上一次选择的状态
           .setShieldList(null)//设置需要屏蔽掉的图片列表,下次选择时已屏蔽的文件不可选择
           .pick(this, new OnImagePickCompleteListener() {
                @Override
                public void onImagePickComplete(ArrayList<ImageItem> items) {
                    //图片选择回调,主线程
                }
            });

自定义Presenter

继承自IMultiPickerBindPresenter并实现如下方法,具体使用可参考demo中WXImgPickerPresenter实现

public class WXImgPickerPresenter implements IMultiPickerBindPresenter {
    /**
     * 加载列表缩略图
     *
     * @param imageView imageView
     * @param item      图片信息
     * @param size      加载尺寸
     */
    @Override
    public void displayListImage(ImageView imageView, ImageItem item, int size) {
        //Glide or other ImageLoader
    }

   /**
     * 加载详情预览图片
     *
     * @param imageView imageView
     * @param url       图片地址
     */
    @Override
    public void displayPerViewImage(ImageView imageView, String url) {
       //Glide or other ImageLoader
    }

    /**
     * 设置ui显示样式
     *
     * @param context 上下文
     * @return PickerUiConfig
     */
    @Override
    public PickerUiConfig getUiConfig(Context context) {
        PickerUiConfig config = new PickerUiConfig();
        return config;
    }

    /**
     * 提示
     *
     * @param context 上下文
     * @param msg     提示文本
     */
    @Override
    public void tip(Context context, String msg) {
         //Toast or dialog ...
    }

    /**
     * 选择超过数量限制提示
     *
     * @param context  上下文
     * @param maxCount 最大数量
     */
    @Override
    public void overMaxCountTip(Context context, int maxCount) {
        //Toast or dialog ...
    }

    /**
     * 拦截选择器取消操作,用于弹出二次确认框
     *
     * @param activity     当前选择器页面
     * @param selectedList 当前已经选择的文件列表
     * @return true:则拦截选择器取消, false,不处理选择器取消操作
     */
    @Override
    public boolean interceptPickerCancel(final Activity activity, ArrayList<ImageItem> selectedList) {
        return false;
    }

    /**
     * 满足selectConfig.isVideoSinglePick()==true 时,才会触发此方法
     * 在单选视频里,点击视频item会触发此方法
     *
     * @param activity  页面
     * @param imageItem 当前选中视频
     * @return true:则拦截外部回调,直接执行该方法, false,不处理视频点击
     */
    @Override
    public boolean interceptVideoClick(Activity activity, ImageItem imageItem) {
        return false;
    }

   /**
     * 动态配置提示文本
     *
     * @param context context
     * @return PickConstants
     */
    @NonNull
    @Override
    public PickConstants getPickConstants(Context context) {
        return new PickConstants(context);
    }


    /**
     * 图片点击事件
     *
     * @param context         上下文
     * @param imageItem       当前图片
     * @param selectImageList 当前选中列表
     * @param allSetImageList 当前文件夹所有图片
     * @param adapter         当前列表适配器,用于刷新数据
     *                        <p>
     *                        该方法只有在setPreview(false)的时候才会调用,默认点击图片会跳转预览页面。如果指定了剪裁模式,则不走该方法
     */
    @Override
    public void imageItemClick(Context context, 
                            ImageItem imageItem, 
                            ArrayList<ImageItem>  selectImageList,
                            ArrayList<ImageItem> allSetImageList, 
                            MultiGridAdapter adapter) {
    }
}

自定义UI

@Override
public PickerUiConfig getUiConfig(Context context) {
    PickerUiConfig config = new PickerUiConfig();
    //是否沉浸式状态栏,状态栏颜色将根据TopBarBackgroundColor指定,
    // 并动态更改状态栏图标颜色
    config.setImmersionBar(true);
    //设置主题色
    config.setThemeColor(Color.parseColor("#09C768"));
    //设置选中和未选中时图标
    config.setSelectedIconID(R.mipmap.picker_wechat_select);
    config.setUnSelectIconID(R.mipmap.picker_wechat_unselect);
    //设置返回图标以及返回图标颜色
    config.setBackIconID(R.mipmap.picker_icon_back_black);
    config.setBackIconColor(Color.BLACK);
    //设置标题栏背景色和对齐方式,设置标题栏文本颜色
    config.setTitleBarBackgroundColor(Color.parseColor("#F1F1F1"));
    config.setTitleBarGravity(Gravity.START);
    config.setTitleColor(Color.BLACK);
    //设置标题栏右上角完成按钮选中和未选中样式,以及文字颜色
    int r = PViewSizeUtils.dp(context, 2);
    config.setOkBtnSelectBackground(PCornerUtils.cornerDrawable(Color.parseColor("#09C768"), r));
    config.setOkBtnUnSelectBackground(PCornerUtils.cornerDrawable(Color.parseColor("#B4ECCE"), r));
    config.setOkBtnSelectTextColor(Color.WHITE);
    config.setOkBtnUnSelectTextColor(Color.parseColor("#50ffffff"));
    config.setOkBtnText("完成");
    //设置选择器背景色
    config.setPickerBackgroundColor(Color.WHITE);
    //设置选择器item背景色
    config.setPickerItemBackgroundColor(Color.parseColor("#484848"));
    //设置底部栏颜色
    config.setBottomBarBackgroundColor(Color.parseColor("#333333"));
    //设置拍照按钮图标和背景色
    config.setCameraIconID(R.mipmap.picker_ic_camera);
    config.setCameraBackgroundColor(Color.parseColor("#484848"));

    //标题栏模式,从标题栏选择相册
    config.setPickStyle(PickerUiConfig.PICK_STYLE_TITLE);
    //设置选择器自定义item样式
    config.setPickerItemView(new CustomPickerItem(context));
    return config;
}

自定义Item样式和逻辑

继承BaseItemView,并在Presenter的getUiConfig中设置 config.setPickerItemView(new CustomPickerItem(context));即可。可参考demo里CustomPickerItem类实现

public class CustomPickerItem extends BaseItemView {
    private IMultiPickerBindPresenter presenter;
    private MultiSelectConfig selectConfig;

    protected CustomPickerItem(Context context) {
        super(context);
    }

    @Override
    protected int getLayoutId() {
        return R.layout.item_custom;
    }

    @Override
    protected void initView(View view) {
        //初始化view
    }

    @Override
    public void initData(MultiSelectConfig selectConfig,
                        IMultiPickerBindPresenter presenter,
                        PickerUiConfig uiConfig) {
        super.initData(selectConfig, presenter, uiConfig);
        this.presenter = presenter;
        this.selectConfig = selectConfig;
    }

    /**
     * 自定义Item绑定逻辑
     *
     * @param imageItem       当前要加载的imageitem
     * @param adapter         当前adapter
     * @param position        position
     * @param selectImageList 选中列表
     * @param result          操作回调
     */
    @Override
    protected void bindData(final ImageItem imageItem, final RecyclerView.Adapter adapter,
                            final int position, final ArrayList<ImageItem> selectImageList,
                            final MultiGridAdapter.OnActionResult result) {
        //加载图片
        presenter.displayListImage(mItemImage, imageItem, 0);
        //以下处理各种显示逻辑
        //...
    }
}

Activity样式

支持直接调用选择器,默认会打开MultiImagePickerActivity。

ImagePicker.withMulti(new WXImgPickerPresenter())
        //...省略若干属性
        .pick(this, new OnImagePickCompleteListener() {
            @Override
            public void onImagePickComplete(ArrayList<ImageItem> items) {
                //图片选择回调,主线程
            }
        });

Fragment样式

支持Fragment嵌入自定义的activity中,使用可参考MultiImagePickerActivity。

MultiImagePickerFragment fragment = ImagePicker.withMulti(new WXImgPickerPresenter())
        //...省略若干属性
        .pickWithFragment(new OnImagePickCompleteListener() {
            @Override
            public void onImagePickComplete(ArrayList<ImageItem> items) {
                //图片选择回调,主线程
            }
        });

外部activity需要复写onBackPressed

@Override
public void onBackPressed() {
    if (fragment != null && fragment.onBackPressed()) {
        return;
    }
    super.onBackPressed();
}

多图预览

支持对一组图片进行预览操作,目前不支持预览视频。

普通预览

支持大图、高清图的加载

//配置需要预览的所有图片列表
ArrayList<ImageItem> allPreviewImageList = new ArrayList<>();
//默认选中的图片索引
int defaultPosition = 0;
//开启普通预览
ImagePicker.preview(this, new WXImgPickerPresenter(), allPreviewImageList, defaultPosition, null);

编辑预览

支持对预览的图片进行取消选中和排序

//配置需要预览的所有图片列表
ArrayList<ImageItem> allPreviewImageList = new ArrayList<>();
//默认选中的图片索引
int defaultPosition = 0;
//开启编辑预览
ImagePicker.preview(this, new WXImgPickerPresenter(), allPreviewImageList, defaultPosition, new OnImagePickCompleteListener() {
        @Override
        public void onImagePickComplete(ArrayList<ImageItem> items) {
            //图片编辑回调,主线程
        }
    });

单图剪裁

支持对单张图片进行剪裁。支持调用选择器并剪裁,拍照并剪裁和直接调用剪裁

单选并剪裁

 ImagePicker.withMulti(new WXImgPickerPresenter())
            .mimeType(MimeType.ofImage())
            .filterMimeType(MimeType.GIF)
             //设置剪裁比例
            .setCropRatio(1,1)
            .cropSaveFilePath("剪裁图片保存路径")
            //设置剪裁框间距,单位px
            .cropRectMinMargin(50)
             //是否圆形剪裁,圆形剪裁时,setCropRatio无效
            .cropAsCircle()
             //设置剪裁模式,留白或充满  CropConfig.STYLE_GAP 或 CropConfig.STYLE_FILL
            .cropStyle(CropConfig.STYLE_FILL)
             //设置留白模式下生成的图片背景色,支持透明背景
            .cropGapBackgroundColor(Color.TRANSPARENT)
            .crop(this, new OnImagePickCompleteListener() {
                @Override
                public void onImagePickComplete(ArrayList<ImageItem> items) {
                    //图片剪裁回调,主线程
                }
            });

拍照并剪裁

CropConfig cropConfig = new CropConfig();
 //设置剪裁比例
cropConfig.setCropRatio(1, 1);
//设置剪裁框间距,单位px
cropConfig.setCropRectMargin(100);
cropConfig.setCropSaveFilePath("剪裁生成的图片路径");
//是否圆形剪裁,圆形剪裁时,setCropRatio无效
cropConfig.setCircle(false);
//设置剪裁模式,留白或充满  CropConfig.STYLE_GAP 或 CropConfig.STYLE_FILL
cropConfig.setCropStyle(CropConfig.STYLE_GAP);
//设置留白模式下生成的图片背景色,支持透明背景
cropConfig.setCropGapBackgroundColor(Color.TRANSPARENT );
//调用拍照
ImagePicker.takePhotoAndCrop(this, new WXImgPickerPresenter(), cropConfig, 
    new OnImagePickCompleteListener() {
        @Override
        public void onImagePickComplete(ArrayList<ImageItem> items) {
            //剪裁回调,主线程
        }
    });

直接调用剪裁

需要指定剪裁的原图完整路径

CropConfig cropConfig = new CropConfig();
 //设置剪裁比例
cropConfig.setCropRatio(1, 1);
//设置剪裁框间距,单位px
cropConfig.setCropRectMargin(100);
cropConfig.setCropSaveFilePath("剪裁生成的图片路径");
//是否圆形剪裁,圆形剪裁时,setCropRatio无效
cropConfig.setCircle(false);
//设置剪裁模式,留白或充满  CropConfig.STYLE_GAP 或 CropConfig.STYLE_FILL
cropConfig.setCropStyle(CropConfig.STYLE_GAP);
//设置留白模式下生成的图片背景色,支持透明背景
cropConfig.setCropGapBackgroundColor(Color.TRANSPARENT );
//调用剪裁
String needCropImageUrl="需要剪裁的图片路径";
ImagePicker.crop(this, new WXImgPickerPresenter(), cropConfig, needCropImageUrlnew OnImagePickCompleteListener() {
        @Override
        public void onImagePickComplete(ArrayList<ImageItem> items) {
            //剪裁回调,主线程
        }
    });

调用摄像头

支持直接调用手机摄像头

拍照

拍照保存路径不需要精确到文件名,文件名会自定生成。默认以jpg格式保存,如果不指定拍照路径,则默认照片/视频存放在 DCIM/Camera 下

ImagePicker.takePhoto(this, "拍照保存路径", new OnImagePickCompleteListener() {
        @Override
        public void onImagePickComplete(ArrayList<ImageItem> items) {
            //拍照回调,主线程
        }
    });

拍视频

拍视频保存路径不需要精确到文件名,文件名会自定生成。默认以mp4格式保存,如果不指定视频路径,则默认照片/视频存放在 DCIM/Camera 下

ImagePicker.takeVideo(this, "视频保存路径", new OnImagePickCompleteListener() {
        @Override
        public void onImagePickComplete(ArrayList<ImageItem> items) {
            //拍照回调,主线程
        }
    });

获取媒体库数据

支持直接回调出媒体数据

获取媒体相册数据

//指定要回调的相册类型,可以指定13种图片视频文件格式混合
Set<MimeType> mimeTypes = MimeType.ofAll();
ImagePicker.provideMediaSets(this, mimeTypes, new MediaSetsDataSource.MediaSetProvider() {
    @Override
    public void providerMediaSets(ArrayList<ImageSet> imageSets) {
        //相册列表回调,主线程
    }
});

获取全部媒体文件

//指定要回调的相册类型,可以指定13种图片视频文件格式混合
Set<MimeType> mimeTypes = MimeType.ofAll();
ImagePicker.provideAllMediaItems(this, mimeTypes, new MediaItemsDataSource.MediaItemProvider() {
        @Override
        public void providerMediaItems(ArrayList<ImageItem> imageItems, ImageSet allVideoSet) {
            //全部媒体数据回调,主线程
            //只有当mimeTypes既包含图片或者视频格式文件时,allVideoSet才有值
        }
    });

获取指定相册内全部媒体文件

//指定要回调的相册类型,可以指定13种图片视频文件格式混合
Set<MimeType> mimeTypes = MimeType.ofAll();
//指定相册,id不能为空
ImageSet imageSet = new ImageSet();
ImagePicker.provideMediaItemsFromSet(this, imageSet, mimeTypes, new MediaItemsDataSource.MediaItemProvider() {
        @Override
        public void providerMediaItems(ArrayList<ImageItem> imageItems, ImageSet allVideoSet) {
            //全部媒体数据回调,主线程
            //只有当mimeTypes既包含图片或者视频格式文件时,allVideoSet才有值
        }
    });

预加载获取指定相册内全部媒体文件

支持指定先加载默认数量的item,防止文件夹中图片过多,导致等待过长

//指定要回调的相册类型,可以指定13种图片视频文件格式混合
Set<MimeType> mimeTypes = MimeType.ofAll();
//指定相册,id不能为空
ImageSet imageSet = new ImageSet();
//预加载个数
int preloadSize = 40;
ImagePicker.provideMediaItemsFromSetWithPreload(this, imageSet, mimeTypes, preloadSize, 
    new MediaItemsDataSource.MediaItemPreloadProvider() {
        @Override
        public void providerMediaItems(ArrayList<ImageItem> imageItems) {
            //预加载回调,预先加载指定数目的媒体文件回调
        }
    },
    new MediaItemsDataSource.MediaItemProvider() {
        @Override
        public void providerMediaItems(ArrayList<ImageItem> imageItems, ImageSet allVideoSet) {
            //所有媒体文件回调
            }
        });

设置选择器调用失败回调

所有OnImagePickCompleteListener回调都可以设置OnImagePickCompleteListener2监听

ImagePicker.withMulti(new WXImgPickerPresenter())
            //...省略若干属性
            .pick(new OnImagePickCompleteListener2() {
                 @Override
                public void onPickFailed(PickerError error) {
                    //调用选择器失败回调
                }

                @Override
                public void onImagePickComplete(ArrayList<ImageItem> items) {
                    //图片选择回调,主线程
                }
            })

错误码对照

详见PickerError类

  • CANCEL :-26883 选择器返回,即取消选择
  • MEDIA_NOT_FOUND :-26884 没有媒体文件
  • PRESENTER_NOT_FOUND :-26885 没有配置presenter
  • UI_CONFIG_NOT_FOUND :-26886 没有配置presenter里的UiConfig
  • SELECT_CONFIG_NOT_FOUND :-26887 配置选项错误
  • CROP_URL_NOT_FOUND :-26888 剪裁url错误
  • CROP_EXCEPTION -26889 :剪裁异常
  • OTHER :-26890 其他错误

自定义回调

所有OnImagePickCompleteListener回调都可以被自定义回调OnPickerCompleteListener给替换

ImagePicker.withMulti(new WXImgPickerPresenter())
            //...省略若干属性
            .pick(new OnPickerCompleteListener<String>() {
                @Override
                public String onTransit(ArrayList<ImageItem> items) {
                    return null;
                }

                @Override
                public void onPickComplete(String s) {
                    //回调
                }
        });

本库中默认实现了两种类型的转化

  • OnStringCompleteListener
ImagePicker.withMulti(new WXImgPickerPresenter())
            //...省略若干属性
            .pick(new OnStringCompleteListener() {
                @Override
                public void onPickComplete(String path) {
                    //回调
                }
            });
  • OnStringListCompleteListener
ImagePicker.withMulti(new WXImgPickerPresenter())
            //...省略若干属性
            .pick(new OnStringListCompleteListener() {
                @Override
                public void onPickComplete(ArrayList<String> list) {
                    //回调
                }
            });

全局常量配置

支持更改选择器中string文件中某些常量。需要在presenter中getPickConstants方法里返回新的PickConstants对象 示例如下:

@NonNull
@Override
public PickConstants getPickConstants(Context context) {
    PickConstants pickConstants=new PickConstants(context);
    pickConstants.picker_str_only_select_image="我是自定义文本";
    //以下省略若干常量配置
    //...
    return pickConstants;
}

全部常量:

为了修改的统一,这里的常量命名严格按照string中字符串的命名来取,详见PickConstants类

//拍照权限话术
public String picker_str_camera_permission;
//存储权限话术
public String picker_str_storage_permission;
//图片和视频
public String picker_str_multi_title;
//视频选择
public String picker_str_multi_title_video;
//图片选择
public String picker_str_multi_title_image;
//图片剪裁
public String picker_str_crop_title;
//充满
public String picker_str_full;
//留白
public String picker_str_gap;
//该文件已选过或无法选择
public String picker_str_shield;
//图片未加载完成,请稍候!
public String picker_str_wait_for_load;
//资源加载中,请稍后…
public String picker_str_loading;
//该视频文件路径无效或已损坏!
public String picker_str_video_error;
//暂未发现媒体文件
public String picker_str_media_not_found;
//只能选择图片!
public String picker_str_only_select_image;
//只能选择视频!
public String picker_str_only_select_video;
//视频时长不得超过
public String picker_str_video_over_max_duration;
//视频时长不得少于
public String picker_str_video_less_min_duration;
//拍摄视频
public String picker_str_take_video;
//拍摄照片
public String picker_str_take_photo;