圓形頭像CircleImageView

頭像圖片來源----照相機、相冊;利用彈出的dialog進行選擇



1、添加依賴包,添加控件,相關屬性

   在app下的 build.gradle 中添加:

	compile 'de.hdodenhof:circleimageview:2.1.0'
	app:civ_border_width="2dp"	//邊框的寬度
	app:civ_border_color="@color/colorAccent" 	//邊框顏色

2、設置跳轉界面

   1)
跳轉到拍照
private void toCamera() {
        //跳轉相機的action
    Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        //判斷內存卡是否可用,可用的話就進行儲存
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(
            new File(Environment.getExternalStorageDirectory(),"fileImgName.jpg")));
    startActivityForResult(intent,CAMERA_REQUEST_CODE);	 //帶值跳轉
    cirleImage_dialog.dismiss();	//彈框取消
}

  2)跳轉到相冊
private void toPicture() {
    Intent intent=new Intent(Intent.ACTION_PICK);
    intent.setType("image/*");
    startActivityForResult(intent,PICTURE_REQUEST_CODE);	//帶值傳遞,,設定返回碼
    cirleImage_dialog.dismiss();
}

3、取得圖片數據,設置顯示在圓形頭像

  在Activity中重寫 onActivityResult,根據requestCode(返回碼)執行不同的操作,,裁剪後進行設置頭像
.....................
.............
......
                // 圓形頭像
            case R.id.civ_circle_image:
                cirleImage_dialog.show();

                break;
                //dialog裏按鈕--拍照、相冊、取消
            case R.id.btn_camera:
                loadingDialog.show();   //顯示加載
                toCamera();
                break;
            case R.id.btn_picture:
                loadingDialog.show();   //顯示加載
                toPicture();
                break;
            case R.id.btn_cancel:

                cirleImage_dialog.dismiss();
                break;
                //快遞查詢
            case R.id.tv_Courior:

                startActivity(new Intent(getActivity(), CourierActivity.class));
                break;
            case R.id.tv_location:
                startActivity(new Intent(getActivity(), LocationActivity.class));
                break;
        }

    }

    /**         跳轉到拍照   */
    private void toCamera() {
        loadingDialog.dismiss();
            //跳轉相機的action
        Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            //判斷內存卡是否可用,可用的話就進行儲存
        intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(
                new File(Environment.getExternalStorageDirectory(),"fileImgName.jpg")));
        startActivityForResult(intent,CAMERA_REQUEST_CODE);

        cirleImage_dialog.dismiss();

    }
    /**         跳轉到相冊   */
    private void toPicture() {
        loadingDialog.dismiss();
        Intent intent=new Intent(Intent.ACTION_PICK);
        intent.setType("image/*");
        startActivityForResult(intent,PICTURE_REQUEST_CODE);
        cirleImage_dialog.dismiss();
    }
    /**     對請求返回的結果進行操作的方法  */
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
            //返回碼是否有效
        if(requestCode!=getActivity().RESULT_CANCELED){
            switch (requestCode){
                case CAMERA_REQUEST_CODE:
                        //相機數據---Uri類型

                    photoFile=new File(Environment.getExternalStorageDirectory(),
                            "fileImgName.jpg");
                    startPhotoZoom(Uri.fromFile(photoFile));

                    break;

                case PICTURE_REQUEST_CODE:
                        //相冊數據
                    Uri uri=data.getData();
                    startPhotoZoom(uri);
                    break;
                //裁剪後數據
                case ZOOM_REQUEST_CODE:
                        //有可能捨棄
                    if(data!=null){
                            //拿到圖片設置
                        setImageToView(data);
                            //將原先的圖片捨棄回收
                        if(photoFile!=null){
                            photoFile.delete();
                        }
                    }
                    break;
            }
        }
    }
    /**將圖片設置到頭像     */
    private void setImageToView(Intent data) {
        Bundle bundle=data.getExtras();
        if(bundle!=null){
            Bitmap bitmap=bundle.getParcelable("data");
            cirleImage_civ.setImageBitmap(bitmap);
        }
    }

    /**  裁剪圖片---發送  */
    private void startPhotoZoom(Uri uri) {
        if(uri==null){
            L.i("uri==null");
            return;
        }
            //裁剪action
        Intent intent=new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(uri,"image/*");
            //設置裁剪
        intent.putExtra("crop","true");
            //裁剪寬高比例
        intent.putExtra("aspectX",1);
        intent.putExtra("aspectY",1);
            //裁剪圖片質量--大小
        intent.putExtra("outputX",230);
        intent.putExtra("outputY",230);
        intent.putExtra("return-data",true);    //數據

        startActivityForResult(intent,ZOOM_REQUEST_CODE);

    }
/**保存頭像信息   */
    @Override
    public void onDestroy() {
        super.onDestroy();
            //保存頭像
        UtilTools.putImageToShare(getActivity(),cirleImage_civ);

    }
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章