调用相册,相机读取图片设置头像

最近开发时有设置圆形头像的需求,以前没写过,现在学习一下;

点击条目,从底部弹出dialog进行图片路径选择,然后调用相机或者图库选择图片在ImageView上显示圆形图片;

相机7.0适配,加权限,这些就不写了;

dialog使用的第三方传送门需要在Application中初始化


StyleDialog自带取消按钮,有很多弹窗样式,这里用的底部弹出;


       List<String> list =new ArrayList<>();
                    list.add("拍照");
                    list.add("选取图片");
                    StyledDialog.buildBottomItemDialog(list, "", new MyItemDialogListener() {//list添加按钮名称,""用不上
                        @Override
                        public void onItemClick(CharSequence charSequence, int i) {
                            if (i==0) {//第一个按钮调取相机
                                Intent intent = new Intent();
                                intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);//配置
                                intent.addCategory(Intent.CATEGORY_DEFAULT);
                                startActivityForResult(intent,0);
                            }
                            if (i==1) {//第二个按钮调取相机
                                Intent intent = new Intent();
                                intent.setAction(Intent.ACTION_PICK);
                                intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                                startActivityForResult(intent,1);
                            }
                        }
                    }).show();//不要忘了这个
Intent设置好了可以打开相机和图库了,我们需要的图片需要用onActivityResult将它们的返回;使用Glide将图片进行切圆,一切OK;
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            if (requestCode == 0) {
                Bitmap bitmap = (Bitmap) data.getExtras().get("data");//得到的是bitmap,glide不能使用,所以转换为字节流
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);//压缩格式,图片的质量,输出流
                byte[] bytes=baos.toByteArray();

                Glide.with(mActivity)
                        .load(bytes)//glide支持字节流
                        .error(R.mipmap.ic_launcher)//错误时显示的图片
                        .placeholder(R.mipmap.ic_launcher)//占位使用的图片
                        .transform(new BitmapTransformation[]{new GlideCircleTransform(mActivity)})//切圆
                        .into(imageView);//设置图片的View
            }
            if (requestCode == 1) {
                Glide.with(mActivity)
                        .load(data.getData())//得到的是uri可以直接使用
                        .error(R.mipmap.ic_launcher)
                        .placeholder(R.mipmap.ic_launcher)
                        .transform(new BitmapTransformation[]{new GlideCircleTransform(mActivity)})
                        .into(imageView);
            }
    }


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值