android 选择手机图库,实现修改个人资料,头像上传功能,可直接使用

个人资料,修改头像

效果图

android 选择手机图库,实现修改个人资料,头像上传功能,可直接使用_第1张图片

DEMO地址:http://download.csdn.net/detail/wxk105/9737763

项目中包括了:头像上传源码;MyBitmapUtils,图片的各种处理工具类;MyLogUtils,日志打印处理工具类;MyToastUtils土司工具类;SpUtils轻量级数据存储工具类;基类BaseActivity的封装等;

打开系统相册:

 /**
     * 打开系统相册
     */
    private void headIconDialog() {
        Intent openAlbumIntent = new Intent(Intent.ACTION_GET_CONTENT);
        openAlbumIntent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
        startActivityForResult(openAlbumIntent, PHOTOZOOM);
    }

图片选择裁剪成功后返回:

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        Uri uri = null;
        Intent intent = null;
        switch (requestCode) {
            case PHOTOZOOM:// 相册
                if (resultCode != RESULT_OK) {
                    return;
                }
                if (data == null) {
                    return;
                }
                uri = data.getData();
                Bitmap userbitmap = MyBitmapUtils.decodeUriAsBitmap(this, uri);
                if (userbitmap == null) {//这里用于校验图片是否有误(可能是破损图)
                    MyToastUtils.showShortToast(getApplicationContext(), "图片有误,请重新选择!");
                    return;
                }
                File user_head = MyBitmapUtils.saveBitmap(MyBitmapUtils.zoomImgKeepWH(userbitmap, 400, 400, true), "user_head.jpeg");
                intent = new Intent(this, CropImageAct.class);
                intent.putExtra("path", Environment.getExternalStorageDirectory() + "/" + "user_head.jpeg");
                MyLogUtils.info("拍照图片地址是:" + Environment.getExternalStorageDirectory() + "/" + "user_head.jpeg");
                startActivityForResult(intent, IMAGE_COMPLETE);
                break;
            case IMAGE_COMPLETE:// 完成
                if (data != null) {
                    String temppath = data.getStringExtra("path");
                    //                    toloadfile(temppath);//这里上传头像到后台接口
                    final Bitmap bitmap = BitmapFactory.decodeFile(temppath);
                    iv.setImageBitmap(bitmap);
                    MyLogUtils.info(data + "裁剪完成地址。。。。");
                }

                break;
        }
    }

项目代码比较简单,并且已经封装好,只要将相应的view包直接复制到项目中,即可使用。尤其这里的MybitmapUtils是已经封装好的,可识别破损图片。

你可能感兴趣的:(项目中小功能抽离)