RxGalleryFinal使用,相册、拍照、裁剪、选择视频功能

GitHub地址:https://github.com/FinalTeam/RxGalleryFinal.
添加依赖

implementation 'cn.finalteam.rxgalleryfinal:library:1.0.9'
implementation 'com.android.support:recyclerview-v7:28.0.0'
compile 'com.github.bumptech.glide:glide:3.7.0'

要添加的权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA"/>

AndroidManifest.xml

<application
        android:theme="@style/Theme_Light">
        ...
        
        <activity
            android:name="cn.finalteam.rxgalleryfinal.ui.activity.MediaActivity"
            android:exported="true"
            android:theme="@style/Theme_Light.Test" />

        <activity
            android:name="com.yalantis.ucrop.UCropActivity"
            android:screenOrientation="portrait" />

    </application>

styles.xml 设置主题

<style name="Theme_Light" parent="Theme.AppCompat.Light.NoActionBar">
        <!--<item name="gallery_ucrop_title_text">@string/gallery_ucrop_menu_crop</item>-->
    </style>

    <style name="Theme_Light.Test">
        <!--<item name="gallery_toolbar_bg">#233</item>-->
        <!--<item name="gallery_toolbar_close_image">@mipmap/ic_launcher</item>-->
        <!--<item name="gallery_toolbar_close_color">#223</item>-->
        <!--<item name="gallery_toolbar_widget_color">#2A2A2F</item>-->
        <!--<item name="gallery_toolbar_text_color">#fff</item>-->
        <!--<item name="gallery_toolbar_text_size">@dimen/column_width</item>-->
        <!--<item name="gallery_toolbar_divider_height">@dimen/activity_vertical_margin</item>-->
        <!--<item name="gallery_toolbar_divider_bg">@color/theme_blue_dark</item>-->
        <!--<item name="gallery_toolbar_bottom_margin">@dimen/column_width</item>-->
        <!--<item name="gallery_toolbar_text_gravity">right</item>-->
        <!--<item name="gallery_toolbar_height">@dimen/activity_horizontal_margin</item>-->
        <!--<item name="gallery_toolbar_over_button_bg">@mipmap/ic_launcher</item>-->
        <!--<item name="gallery_toolbar_over_button_text_size">@dimen/column_width</item>-->
        <!--<item name="gallery_toolbar_over_button_text_color">#446</item>-->
        <!--<item name="gallery_toolbar_over_button_pressed_color">@color/theme_blue_dark</item>-->
        <!--<item name="gallery_toolbar_over_button_normal_color">@color/theme_blue_dark</item>-->
        <!--<item name="gallery_color_statusbar">@color/theme_blue_dark</item>-->
        <!--<item name="gallery_color_active_widget">@color/theme_blue_dark</item>-->
        <!--<item name="gallery_checkbox_button_tint_color">@color/theme_blue_dark</item>-->
        <!--<item name="gallery_checkbox_text_color">@color/theme_blue_dark</item>-->
        <!--<item name="gallery_page_bg">#FFFFFF</item>-->
        <!--<item name="gallery_default_image">@mipmap/ic_launcher</item>-->
        <!--<item name="gallery_camera_image">@mipmap/ic_launcher</item>-->
        <!--<item name="gallery_camera_bg">@color/theme_blue_dark</item>-->
        <!--<item name="gallery_take_image_text_color">@color/theme_blue_dark</item>-->
        <!--<item name="gallery_default_image">@mipmap/ic_launcher</item>-->
        <!--<item name="gallery_default_image">@mipmap/ic_launcher</item>-->
        <!--<item name="gallery_default_image">@mipmap/ic_launcher</item>-->
        <!--<item name="gallery_default_image">@mipmap/ic_launcher</item>-->
        <!--<item name="gallery_ucrop_status_bar_color">@color/theme_blue_dark</item>-->
        <!--<item name="gallery_ucrop_toolbar_color">@color/theme_blue_dark</item>-->
        <!--<item name="gallery_ucrop_toolbar_widget_color">@color/theme_blue_dark</item>-->
        <!--<item name="gallery_ucrop_activity_widget_color">@color/theme_blue_dark</item>-->
        <!--<item name="gallery_ucrop_toolbar_title">@string/app_name</item>-->
    </style>

xml布局

<Button
        android:id="@+id/camera"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="相机" />

    <Button
        android:id="@+id/photo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="相册" />
    <Button
        android:id="@+id/More_photo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="相册,多选" />
    <Button
        android:id="@+id/tailor"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="裁剪" />
    <Button
        android:id="@+id/video"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="视频" />

打开相机

camera.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                RxGalleryFinalApi.openZKCamera(MainActivity.this);
            }
        });
        @Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        System.out.println(requestCode);
        System.out.println(resultCode);

        if (requestCode == RxGalleryFinalApi.TAKE_IMAGE_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
            Toast.makeText(this, "拍照后,图片路径:" + RxGalleryFinalApi.fileImagePath.getPath(), Toast.LENGTH_SHORT).show();
        }


    }

打开相册

photo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                RxGalleryFinalApi instance = RxGalleryFinalApi.getInstance(MainActivity.this);
                RxGalleryFinalApi
                        .openRadioSelectImage(MainActivity.this, new RxBusResultDisposable<ImageRadioResultEvent>() {
                            @Override
                            protected void onEvent(ImageRadioResultEvent o) throws Exception {
                            //显示图片地址
                                Toast.makeText(MainActivity.this, "选择图片的路径" + o.getResult().getOriginalPath(), Toast.LENGTH_SHORT).show();
                            }
                        }, true);
            }
        });

打开相册多选,多选默认9张图

More_photo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                RxGalleryFinalApi
                        .getInstance(MainActivity.this)
                        .setType(RxGalleryFinalApi.SelectRXType.TYPE_IMAGE, RxGalleryFinalApi.SelectRXType.TYPE_SELECT_MULTI)
                        .setImageMultipleResultEvent(new RxBusResultDisposable<ImageMultipleResultEvent>() {
                            @Override
                            protected void onEvent(ImageMultipleResultEvent imageMultipleResultEvent) throws Exception {
                                List<MediaBean> result = imageMultipleResultEvent.getResult();
                                for (int i = 0; i < result.size(); i++) {
                                    System.out.println("多选图片的回调" + result.get(i).getOriginalPath());
                                    Toast.makeText(MainActivity.this, "多选图片的回调" + result.get(i).getOriginalPath(), Toast.LENGTH_SHORT).show();
                                }
                            }
                        }).open();
            }
        });

打开相册多选,自定义多选设置最多能选择5张

More_photo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                RxGalleryFinal.with(MainActivity.this)
                        .image()
                        .multiple()
                        .maxSize(5)//设置最大选择几张
                        .imageLoader(ImageLoaderType.GLIDE)
                        .subscribe(new RxBusResultDisposable<ImageMultipleResultEvent>() {
                            @Override
                            protected void onEvent(ImageMultipleResultEvent imageMultipleResultEvent) throws Exception {
                                List<MediaBean> result = imageMultipleResultEvent.getResult();
                                for (int i = 0; i < result.size(); i++) {
                                    Toast.makeText(MainActivity.this, ""+result.get(i).getOriginalPath(), Toast.LENGTH_SHORT).show();
                                }
                            }

                            @Override
                            public void onComplete() {
                                super.onComplete();
                                Toast.makeText(getBaseContext(), "OVER", Toast.LENGTH_SHORT).show();
                            }
                        }).openGallery();
            }
        });

打开裁剪,打开相册选择图片进行裁剪

RxGalleryFinalApi instance = RxGalleryFinalApi.getInstance(MainActivity.this);
                instance.openGalleryRadioImgDefault(
                                new RxBusResultDisposable<ImageRadioResultEvent>() {
                                    @Override
                                    protected void onEvent(ImageRadioResultEvent imageRadioResultEvent) throws Exception {
                                        Toast.makeText(MainActivity.this, "只要选择图片地址" + imageRadioResultEvent.getResult().getOriginalPath(), Toast.LENGTH_SHORT).show();
                                    }
                                })
                        .onCropImageResult(
                                new IRadioImageCheckedListener() {
                                    @Override
                                    public void cropAfter(Object t) {
                                        Toast.makeText(MainActivity.this, "裁剪完成" + t, Toast.LENGTH_SHORT).show();
                                    }

                                    @Override
                                    public boolean isActivityFinish() {
                                        //返回false不关闭,返回true则为关闭
                                        return true;
                                    }
                                });

打开视频,获取某个视频的本地地址

video.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                RxGalleryFinalApi
                        .getInstance(MainActivity.this)
                        .setType(RxGalleryFinalApi.SelectRXType.TYPE_VIDEO, RxGalleryFinalApi.SelectRXType.TYPE_SELECT_RADIO)
                        .setVDRadioResultEvent(new RxBusResultDisposable<ImageRadioResultEvent>() {
                            @Override
                            protected void onEvent(ImageRadioResultEvent imageRadioResultEvent) throws Exception {
                                Toast.makeText(getApplicationContext(), imageRadioResultEvent.getResult().getOriginalPath(), Toast.LENGTH_SHORT).show();
                            }
                        })
                        .open();
            }
        });

打开视频,获取多个视频的本地地址,默认能选择9个

More_video.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //使用默认的参数
                RxGalleryFinalApi
                        .getInstance(MainActivity.this)
                        .setType(RxGalleryFinalApi.SelectRXType.TYPE_VIDEO, RxGalleryFinalApi.SelectRXType.TYPE_SELECT_MULTI)
                        .setVDMultipleResultEvent(
                                new RxBusResultDisposable<ImageMultipleResultEvent>() {
                                    @Override
                                    protected void onEvent(ImageMultipleResultEvent imageMultipleResultEvent) throws Exception {
                                        List<MediaBean> result = imageMultipleResultEvent.getResult();
                                        for (int i = 0; i < result.size(); i++) {
                                            Toast.makeText(MainActivity.this, ""+result.get(i).getOriginalPath(), Toast.LENGTH_SHORT).show();
                                        }
                                    }
                                }).open();
            }
        });
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值