1、图片选取

        Intent intent = new Intent(Intent.ACTION_PICK);        intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");        startActivityForResult(intent, AVATAR_PICTURE);

2、选取图片回调

  @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        switch (requestCode) {            case AVATAR_PICTURE://从图库选取的回调                //filePath = data.getData().getPath();                if (data != null) {//不为空,说明是图库选择回来的头像                    Uri uri = data.getData();                    if (uri == null) return;                    Cursor c = getContentResolver().query(uri, new String[]{MediaStore.Images.Media.DATA}, null, null, null);                    if (c == null) return;                    boolean moveToNext = c.moveToNext();                    if (moveToNext) {                        mFilePath = c.getString(0);                    }                    c.close();                    //取消操作,并没有选择图片                } else {                    return;                }                cropRawPhoto(Uri.fromFile(new File(mFilePath)), mIvAvatar, AVATAR_CROP);                break;            case AVATAR_CAMERA://拍照之后的回调                if (resultCode == RESULT_OK) {                    mFilePath = mCameraPath;                    cropRawPhoto(Uri.fromFile(new File(mFilePath)), mIvAvatar, AVATAR_CROP);                    //更新图库                    Uri localUri = Uri.fromFile(new File(mFilePath));                    Intent localIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, localUri);                    sendBroadcast(localIntent);                  //取消返回,                } else if (requestCode == RESULT_CANCELED) {                }                break;                 
           case AVATAR_CROP://裁剪之后的回调                if (data != null) {                    Bundle extras = intent.getExtras();                    if (extras != null)                     Bitmap photo = extras.getParcelable("data");                } else {                    return;                }                break;

3、调用拍照

  Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);        // 判断存储卡是否可用,存储照片文件        if (StorageUtils.hasSdcard()) {            File file = new File(Environment.getExternalStoragePublicDirectory(                    Environment.DIRECTORY_PICTURES), System.currentTimeMillis() + ".jpg");            mCameraPath = file.getAbsolutePath();            Uri uri = Uri.fromFile(file);            intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);        }        startActivityForResult(intent, AVATAR_CAMERA);

4、调用拍照之后的裁剪功能

**     * 裁剪原始的图片     */    public void cropRawPhoto(Uri uri, CircleImageView ivAvatar, int CODE_RESULT_REQUEST) {        Intent intent = new Intent("com.android.camera.action.CROP");        intent.setDataAndType(uri, "image/*");        // 设置裁剪        intent.putExtra("crop", "true");        // aspectX , aspectY :宽高的比例        intent.putExtra("aspectX", 1);        intent.putExtra("aspectY", 1);        // outputX , outputY : 裁剪图片宽高        intent.putExtra("outputX", ivAvatar.getWidth());        intent.putExtra("outputY", ivAvatar.getHeight());        intent.putExtra("return-data", true);        startActivityForResult(intent, CODE_RESULT_REQUEST);    }

更多相关文章

  1. Android(安卓)matrix 控制图片的旋转、缩放、移动
  2. android拍照与读取相册
  3. Android(安卓)报错:Caused by: android.os.FileUriExposedExcepti
  4. 修改android系统和watchdog的延时
  5. android解决坚屏拍照和保存图片旋转90度的问题,并兼容4.0
  6. [Android]在App中使用相机
  7. android WebView 图片缩放功能小结
  8. Android(安卓)主流图片库Picasso Glide Fresco对比分析
  9. android背景选择器selector用法汇总

随机推荐

  1. Android加载Gif和ImageView的通用解决方
  2. Android GestureDetector
  3. Android_UI开发专题
  4. Android(安卓)intent and activity 经典
  5. 自定义SeekBarPreference控件(老外出品,直
  6. Android(安卓)- BroadcastReceiver
  7. Android学习笔记---第二天---基础UI组件-
  8. Android Support Library
  9. Android 操作SQLite数据库(初步)-在程序中
  10. Android跨进程通信——Activity