Android开发从相册中选取照片的示例代码

最近项目在做一个功能:就是需要从用户选择头像跳转到相册选择图片,这应该是一个很简单的需求,但是在网上搜了一下有好多都讲的很乱,其实用几十行代码就可以实现的为什么要说的那么复杂呢,下面就简单说一下喽。

下面说两种方法分别是直接选择相册返回,另外一种为选择相册之后进行裁剪。先上效果图

首先也是要调起相册

// 使用意图直接调用手机相册
    Intent intent = new Intent(
        Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    // 打开手机相册,设置请求码
    startActivityForResult(intent,IMAGE_REQUEST_CODE);

然后这里增加了一步就是用户选择了相册之后然后再增加裁剪功能

 @Override
  protected void onActivityResult(int requestCode,Intent data) {
    if (resultCode != RESULT_OK) {
      return;
    } else {
      switch (requestCode) {
        case IMAGE_REQUEST_CODE:
          resizeImage(data.getData());
          break;

        case RESIZE_REQUEST_CODE:
          if (data != null) {
            showResizeImage(data);
          }
          break;
      }
    }
    super.onActivityResult(requestCode,data);
  }
  //这里增加裁剪
  public void resizeImage(Uri uri) {
    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",150);
    intent.putExtra("outputY",150);
    intent.putExtra("return-data",true);
    //设置返回码
    startActivityForResult(intent,RESIZE_REQUEST_CODE);
  }
  private void showResizeImage(Intent data) {
    Bundle extras = data.getExtras();
    if (extras != null) {
      Bitmap photo = extras.getParcelable("data");
      //裁剪之后设置保存图片的路径
      String path = getFilesDir().getPath() + File.separator + IMAGE_FILE_NAME;
      //压缩图片
      ImageUtils.saveImage(photo,path);
      new BitmapDrawable();
      Drawable drawable = new BitmapDrawable(photo);
      iv_photo.setImageDrawable(drawable);
    }
  }

ok,源代码下载。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

以上是来客网为你收集整理的Android开发从相册中选取照片的示例代码全部内容,希望文章能够帮你解决Android开发从相册中选取照片的示例代码所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。