超简单PictureSelector使用,从相册中选取多张图片并显示再列表中,微信样式,解决相册全白问题,可以拖拽删除并排序

PictureSelector原项目地址

相册全白是因为在初始化的过程中缺少了一样设置

.loadImageEngine(GlideEngine.createGlideEngine())

想要微信那样的效果不要忘记加下面这句代码

.isWeChatStyle(true)//是否设置微信样式

添加PictureSelector api

api 'com.github.LuckSiege.PictureSelector:picture_library:v2.5.9'

6.0以上打开相册是需要动态申请权限的,下面两个添加一个就ok(推荐使用第一个)

//rxpermission(配套rxjava使用的)  
api 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.5@aar'
//rxpermission
api 'com.github.tbruyelle:rxpermissions:0.10.2'

我把我的代码全粘来了,可以根据自己需求挑着用

Activity使用

public class FssActivity extends BaseActivity implements ViewI {
   
    @BindView(R.id.myActionBar)
    CustomActionBar myActionBar;
    @BindView(R.id.rv_fss)
    RecyclerView rvFss;
    @BindView(R.id.tv_delete_text)
    TextView tvDeleteText;
    @BindView(R.id.ed_content)
    EditText edContent;
    private GridImageAdapter mAdapter;

    private int maxSelectNum = 6;
    private PresenterImpl presenter;
    private String content;
    String path = "";
    private boolean noUp = false;

    private boolean needScaleBig = true;
    private boolean needScaleSmall = true;
    private boolean isUpward;
    private ItemTouchHelper mItemTouchHelper;
    private DragListener mDragListener;

    @Override
    public int initLayout() {
   
        return R.layout.activity_fss;
    }

    @Override
    public void initView() {
   
        ButterKnife.bind(this);
        presenter = new PresenterImpl(FssActivity.this);
        myActionBar.setBarCenter("发表说说", 0, null);
        myActionBar.setBarRightFb(true, new View.OnClickListener() {
   
            @Override
            public void onClick(View v) {
   
                if (noUp) {
   
                    ToastUtils.show("您选择的图片中含有不支持的图片类型,请重新选择。");
                } else {
   
                    content = edContent.getText().toString();
                    if (content.isEmpty()) {
   
                        ToastUtils.show("发表内容不能为空");
                    } /*else if (path.length() == 0) {
                        ToastUtils.show("至少选择一张照片");
                    } */ else {
   
                        Map<String, Object> map = new HashMap<>();
                        map.put("content", content);
                        if (path.length() != 0) {
   
                            String s = path.substring(0, path.length() - 1);
                            String[] url = {
   s};
                            if (s.contains("mp4")) {
   
                                map.put("type", 1);
                            } else {
   
                                map.put("type", 0);
                            }
                            map.put("urls", url);
                        } else {
   
                            map.put("type", 0);
                        }
                        presenter.postbody(ApiConstant.MOMENTS_URL, map, GmBean.class);
                    }
                }
            }
        });
        myActionBar.setBarRightQx(true, new View.OnClickListener() {
   
            @Override
            public void onClick(View v) {
   
                finish();
            }
        });
    }

    @Override
    public void initData() {
   
        rvFss.setLayoutManager(new GridLayoutManager(this, 3));
        rvFss.addItemDecoration(new GridSpacingItemDecoration(3, 20, false));
        mAdapter = new GridImageAdapter(this);
        mAdapter.setSelectMax(maxSelectNum);
        rvFss.setAdapter(mAdapter);

        mAdapter.setAddPicClickListener(new GridImageAdapter.onAddPicClickListener() {
   
            @Override
            public void onAddPicClick() {
   
                //拍摄 录视频 从相册中选取pop
                //cameraPhotoPop();
                //从相册中选取图片
                selectPicture();
            }
        });


        mAdapter.setOnItemClickListener(new OnItemClickListener() {
   
            @Override
            public void onItemClick(View v, int position) {
   

                List<LocalMedia> selectList = mAdapter.getData();
                if (selectList.size() > 0) {
   
                    LocalMedia media = selectList.get(position);
                    String mimeType = media.getMimeType();
                    int mediaType = PictureMimeType.getMimeType(mimeType);
                    switch (mediaType) {
   
                        case PictureConfig.TYPE_VIDEO:
                            // 预览视频
                            PictureSelector.create(FssActivity.this)
                                    .themeStyle(R.style.picture_WeChat_style)
                                    .externalPictureVideo(TextUtils.isEmpty(media.getAndroidQToPath()) ? media.getPath() : media.getAndroidQToPath());
                            break;
                        case PictureConfig.TYPE_AUDIO:
                            /*// 预览音频
                            PictureSelector.create(FssActivity.this)
                                    .externalPictureAudio(PictureMimeType.isContent(media.getPath()) ? media.getAndroidQToPath() : media.getPath());*/
                            break;
                        default:
                            //预览图片
                            PictureSelector.create(FssActivity.this)
                                    .themeStyle(R.style.picture_WeChat_style)
                                    .isNotPreviewDownload(true)
                                    .loadImageEngine(GlideEngine.createGlideEngine())
                                    .openExternalPreview(position, selectList);
                            break;
                    }
                }

            }
        });

        //拖拽删除
        mAdapter.setItemLongClickListener((holder, position, v) -> {
   
            //如果item不是最后一个,则执行拖拽
            needScaleBig = true;
            needScaleSmall = true;
            int size = mAdapter.getData().size();
            if (size != maxSelectNum) {
   
                mItemTouchHelper.startDrag(holder);
                return;
            }
            if (holder.getLayoutPosition() != size - 1) {
   
                mItemTouchHelper.startDrag(holder);
            }
        });

        mDragListener = new DragListener() {
   
            @Override
            public void deleteState(boolean isDelete) {
   
                if (isDelete) {
   
                    tvDeleteText.setText(getString(R.string.app_let_go_drag_delete));
                    tvDeleteText.setCompoundDrawablesRelativeWithIntrinsicBounds(0, R.mipmap.ic_let_go_delete, 0, 0);
                } else {
   
                    tvDeleteText.setText(getString(R.string.app_drag_delete));
                    tvDeleteText.setCompoundDrawablesRelativeWithIntrinsicBounds(0, R.mipmap.picture_icon_delete, 0, 0);
                }

            }

            @Override
            public void dragState(boolean isStart) {
   
                int visibility = tvDeleteText.getVisibility();
                if (isStart) {
   
                    if (visibility == View.GONE) {
   
                        tvDeleteText.animate().alpha(1).setDuration(300).setInterpolator
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值