Skip to content

开始使用

qingmei2 edited this page May 19, 2018 · 30 revisions

开始使用RxImagePicker

1.快速实现

下文将根据不同情境,提供在3~5分钟之内通过 RxImagePicker 快速实现 图片选择需求的代码,如果想获取更详细的代码,请参考sample中的代码:

sample_struct

在这之前,您需参考 开发准备 模块,确认配置好权限并添加对应的依赖。

1.1 打开系统相机和相册

1.1.1 声明一个接口,并进行基础的配置

public interface SystemImagePicker {

    @Gallery  //打开相册
    @AsFile
    Observable<File> openGallery();	

    @Camera   //打开相机
    @AsBitmap
    Observable<File> openCamera();
}

1.1.2 在Activity的onCreate()方法中实例化SystemImagePicker:

 SystemImagePicker imagePicker = new RxImagePicker.Builder()
                .with(this)
                .build()
                .create(SystemImagePicker.class);

1.1.3 在需要的地方使用SystemImagePicker打开相册或相机:

比如在Button的点击监听回调方法中添加如下代码:

imagePicker.openGallery()               //打开系统相册选取图片   
                .subscribe(new Consumer<File>() {
                    @Override
                    public void accept(File file) throws Exception {
                        // 做您想做的,比如将选取的图片展示在ImageView中
                    }
                });

1.2 使用微信主题UI

1.2.1 声明一个接口,并进行基础的配置

public interface WechatImagePicker {

    String KEY_WECHAT_PICKER_ACTIVITY = "key_wechat_picker";

    @AsBitmap
    @Gallery(viewKey = KEY_WECHAT_PICKER_ACTIVITY)
    Observable<Bitmap> openGallery();

    @AsFile
    @Camera
    Single<File> openCamera();
}

1.2.2 在Activity的onCreate()方法中实例化WechatImagePicker:

    WechatImagePicker imagePicker = new RxImagePicker.Builder()
                .with(this)
                .addCustomGallery(
                        WechatImagePicker.KEY_WECHAT_PICKER_ACTIVITY,
                        WechatImagePickerActivity.class,
                        new WechatConfigrationBuilder(MimeType.ofAll(), false)
                                .maxSelectable(9)	//最大可选图片数
                                .spanCount(4)		//每行展示四张图片
                                .countable(false)	//关闭计数模式
                                .theme(R.style.Wechat)	//微信主题
                                .build()
                )
                .build()
                .create(WechatImagePicker.class);

1.2.3 在需要的地方使用WechatImagePicker打开相册或相机:

比如在Button的点击监听回调方法中添加如下代码:

imagePicker.openGallery()               //打开微信相册选取图片   
                .subscribe(new Consumer<Bitmap>() {
                    @Override
                    public void accept(Bitmap bitmap) throws Exception {
                        // 做您想做的,比如将选取的图片展示在ImageView中
                    }
                });

1.3 使用知乎主题UI

1.3.1 声明一个接口,并进行基础的配置

public interface ZhihuImagePicker {

    String KEY_ZHIHU_PICKER_NORMAL = "key_zhihu_picker_theme_normal";
    String KEY_ZHIHU_PICKER_DRACULA = "key_zhihu_picker_theme_dracula";

    @AsBitmap
    @Gallery(viewKey = KEY_ZHIHU_PICKER_NORMAL)		//日间主题
    Observable<Bitmap> openGalleryAsNormal();

    @AsBitmap
    @Gallery(viewKey = KEY_ZHIHU_PICKER_DRACULA)	//夜间主题
    Observable<Bitmap> openGalleryAsDracula();

    @AsFile
    @Camera    //打开相机
    Single<File> openCamera();
}

1.3.2 在Activity的onCreate()方法中实例化ZhihuImagePicker:

ZhihuImagePicker imagePicker = new RxImagePicker.Builder()
                .with(this)
                .addCustomGallery(		//注入日间模式主题的UI
                        ZhihuImagePicker.KEY_ZHIHU_PICKER_NORMAL,
                        ZhihuImagePickerActivity.class,
                        new ZhihuConfigurationBuilder(MimeType.ofAll(), false)
                                .maxSelectable(9)	//最大可选择数量
                                .countable(true)	//可计数
                                .spanCount(4)		//每行图片数量
                                .theme(R.style.Zhihu_Normal)	//日间主题
                                .build()
                )
                .addCustomGallery(		//注入夜间模式主题的UI
                        ZhihuImagePicker.KEY_ZHIHU_PICKER_DRACULA,
                        ZhihuImagePickerActivity.class,
                        new ZhihuConfigurationBuilder(MimeType.ofAll(), false)
                                .spanCount(3)	  //每行图片数量
                                .maxSelectable(1) //最大可选择数量
                                .theme(R.style.Zhihu_Dracula)	//夜间主题
                                .build()
                )
                .build()
                .create(ZhihuImagePicker.class);

1.3.3 在需要的地方使用ZhihuImagePicker打开相册或相机:

比如在Button的点击监听回调方法中添加如下代码:

//打开日间主题相册选取图片,或者调用imagePicker.openGalleryAsDracula()打开夜间主题
imagePicker.openGalleryAsNormal()   
                .subscribe(new Consumer<Bitmap>() {
                    @Override
                    public void accept(Bitmap bitmap) throws Exception {
                        // 做您想做的,比如将选取的图片展示在ImageView中
                    }
                });

1.4 自定义主题UI