android模仿微信相册多选。预览,删除



1.打开相机以及查看相册都需要对应的权限

    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <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" />

android6.0以上需要动态申请权限:

 if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
            //申请WRITE_EXTERNAL_STORAGE权限
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 1);
        } else {
            
        }

申请成功的回调:

  @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == 1) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            //申请成功,可以拍照
                camera();
        }
        return;
    }
    }

打开相机的方法:

 public void camera(){
        Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE");
        File file = new File(Environment.getExternalStorageDirectory() + "/DCIM/Camera/IMG_" + System.currentTimeMillis() + ".jpg");
        if (file.exists()) {
            file.delete();
        }
        //指定uri存储相片
        getImageByCamera.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
        uri = Uri.fromFile(file);
        startActivityForResult(getImageByCamera, RESULT_CAMERA);
    }


拍照成功的回调:

 	if (requestCode == RESULT_CAMERA) {
//           //拍照成功的回调
            Intent intent = new Intent(MainActivity.this,WritingActivity.class);
            intent.putExtra("data2", uri.toString());
            startActivity(intent);
        }
2.android自带的相册是不能多选的,想要多选就必须自定义相册,创造自定义相册有比较重要的几个方法:

 /*
    获取相册列表
     */
    public List<PhotoDerictoryBean> getAlbums() {
        List<PhotoDerictoryBean> albums = new ArrayList();
        Cursor cursor = resolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[]{MediaStore.Images.ImageColumns.DATA,
                MediaStore.Images.ImageColumns.BUCKET_DISPLAY_NAME, MediaStore.Images.ImageColumns.SIZE}, null, null, null);
        if (cursor == null || !cursor.moveToNext())
            return new ArrayList();
        cursor.moveToLast();
        PhotoDerictoryBean photoDerictoryBean = null;
        boolean falg = true;
        do {
            falg = true;
            if (cursor.getInt(cursor.getColumnIndex(MediaStore.Images.ImageColumns.SIZE)) < 1024 * 10)
                continue;
            String name = cursor.getString(cursor.getColumnIndex(MediaStore.Images.ImageColumns.BUCKET_DISPLAY_NAME));
            photoDerictoryBean = new PhotoDerictoryBean(name);
            photoDerictoryBean.setImg(cursor.getString(cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA)));
            photoDerictoryBean.setNum(1);
            for (PhotoDerictoryBean p : albums) {
                if (p.getName().equals(photoDerictoryBean.getName())) {
                    p.setNum(p.getNum() + 1);
                    falg = false;
                }
            }
            if (falg) {
                albums.add(photoDerictoryBean);
            }

        } while (cursor.moveToPrevious());
        if (cursor != null) {
            cursor.close();
        }
        return albums;
    }

    /*
    根据名字获取对应相册下的图片
     */
    public List<PhotoBean> getAlbum(String name) {
        Cursor cursor = resolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[]{MediaStore.Images.ImageColumns.BUCKET_DISPLAY_NAME,
                        MediaStore.Images.ImageColumns.DATA, MediaStore.Images.ImageColumns.DATE_ADDED, MediaStore.Images.ImageColumns.SIZE}, "bucket_display_name = ?",
                new String[]{name}, MediaStore.Images.ImageColumns.DATE_ADDED);
        if (cursor == null || !cursor.moveToNext())
            return new ArrayList<PhotoBean>();
        List<PhotoBean> photos = new ArrayList<PhotoBean>();
        cursor.moveToLast();
        do {
            if (cursor.getLong(cursor.getColumnIndex(MediaStore.Images.ImageColumns.SIZE)) > 1024 * 10) {
                photos.add(new PhotoBean(cursor.getString(cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA)), true, false));
            }
        } while (cursor.moveToPrevious());
        if (cursor != null) {
            cursor.close();
        }
        return photos;
    }
 //获取最近照片
    public List<PhotoBean> getCurrent() {
        Cursor cursor = resolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[]{MediaStore.Images.ImageColumns.DATA,
                MediaStore.Images.ImageColumns.DATE_ADDED, MediaStore.Images.ImageColumns.SIZE}, null, null, MediaStore.Images.ImageColumns.DATE_ADDED);
        if (cursor == null || !cursor.moveToNext())
            return new ArrayList<PhotoBean>();
        List<PhotoBean> photos = new ArrayList<PhotoBean>();
        cursor.moveToLast();
        PhotoBean bean = null;
        do {
            if (cursor.getLong(cursor.getColumnIndex(MediaStore.Images.ImageColumns.SIZE)) > 1024 * 10) {
                String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA));
                bean = new PhotoBean(path, true, false);
                photos.add(bean);
            }
        } while (cursor.moveToPrevious());
        if (cursor != null) {
            cursor.close();
        }
        return photos;
    }

3.拿到图片资源了,剩下的页面逻辑自己处理好就没问题了,不会处理?来来来,靠近点,我慢慢给你说...


Demo地址:http://download.csdn.net/download/qq_34963282/9957511

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值