PictureSelector使用总结

1.配置

1.app中的build.gradle

dependencies {

    implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.2.3'

//glide版本慎用,高版本会导致闪退,具体参考github上的文件

    implementation'com.github.bumptech.glide:glide:4.5.0'

}
复制代码

2.项目中的build.gradle

allprojects {

  repositories {

      jcenter()

      maven { url 'https://jitpack.io' }

  }

}
复制代码

2.权限

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

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

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

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.WRITE_SETTINGS" />

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.RECORD_AUDIO" />
复制代码

3.添加GridImageAdapter类

代码内容直接在github上copy,,缺少的资源文件也直接复制github上的。

4.fragment中添加代码:

1.添加成员变量:

int aspect_ratio_x = 0;
int aspect_ratio_y = 0;
private int maxSelectNum = 6;
private List<LocalMedia> selectList = new ArrayList<>();
private GridImageAdapter adapter;
复制代码
/**
     * 添加图片的点击事件 弹出选择拍照或选择照片
     */
    private GridImageAdapter.onAddPicClickListener onAddPicClickListener = new GridImageAdapter
            .onAddPicClickListener() {
        @Override
        public void onAddPicClick() {
            PictureSelector.create(InstockFragment.this)
                    .openGallery(PictureMimeType.ofAll())
                    .theme(R.style.picture_default_style)
                    .maxSelectNum(maxSelectNum)
                    .minSelectNum(1)
                    .selectionMode(PictureConfig.MULTIPLE)
                    .previewImage(true)
                    .previewVideo(true)
                    .isCamera(true)
                    .enableCrop(false)
                    .compress(false)
                    .glideOverride(160, 160)
                    .previewEggs(true)
                    .withAspectRatio(aspect_ratio_x, aspect_ratio_y)
                    .isGif(false)
                    .openClickSound(false)
                    .selectionMedia(selectList)
                    .forResult(CHOOSE_REQUEST);
        }
    };
复制代码

2.在onCreateView方法中添加代码:

initChoosePhoto();
复制代码

fragment中initChoosePhoto()方法:

//    初始化图片选择工具
    private void initChoosePhoto() {

        //一行显示4张
        FullyGridLayoutManager manager = new FullyGridLayoutManager(getContext(), 4, GridLayoutManager
                .VERTICAL, false);
        addPhotoRv.setLayoutManager(manager);
        adapter = new GridImageAdapter(getContext(), onAddPicClickListener);
        adapter.setList(selectList);
        adapter.setSelectMax(maxSelectNum);
        addPhotoRv.setAdapter(adapter);
        adapter.setOnItemClickListener(new GridImageAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(int position, View v) {
                if (selectList.size() > 0) {
                    LocalMedia media = selectList.get(position);
                    String pictureType = media.getPictureType();
                    int mediaType = PictureMimeType.pictureToVideo(pictureType);
                    switch (mediaType) {
                        case 1:
                            // 预览图片 可自定长按保存路径
                            //PictureSelector.create(MainActivity.this).externalPicturePreview
                            // (position, "/custom_file", selectList);
                            PictureSelector.create(InstockFragment.this)
                                    .externalPicturePreview(position, selectList);
                            break;
                        case 2:
                            // 预览视频
                            PictureSelector.create(InstockFragment.this).externalPictureVideo
                                    (media.getPath());
                            break;
                        case 3:
                            // 预览音频
                            PictureSelector.create(InstockFragment.this).externalPictureAudio
                                    (media.getPath());
                            break;
                    }
                }
            }
        });
    }
复制代码

3.重写onActivityResult方法:

@Override      //接收返回的地址
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == CHOOSE_REQUEST && resultCode == RESULT_OK) {
            //用照片选择器后的返回
            // 图片选择结果回调
            selectList = PictureSelector.obtainMultipleResult(data);
            adapter.setList(selectList);
            adapter.notifyDataSetChanged();
        }
复制代码

4.清空数据的写法(可配合dialog添加上去)

private void cleanAllData() {
        //清空
        selectList.clear();
        adapter.notifyDataSetChanged();
    }
复制代码

转载于:https://juejin.im/post/5ca89c3151882543f96dce70

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值