功能要求:界面上定义一个ImageView,用来显示头像,然后该头像可以通过相册或者相机来更改,也就是我们平常看到的类似QQ或者微信来更改头像的功能
1.从相册选取照片来更改头像
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent, FROM_ALBUM);
这里用到隐式intent来启动系统相册,type类型是image
2.用相机拍一张照片来更改头像
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(new Intent("android.media.action.IMAGE_CAPTURE"), FROM_CAMERA);
重写一下activity的onActvityResult方法来获取照片
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_CANCELED) {
return;
}
Bitmap bitmap = null;
switch (requestCode) {
case FROM_ALBUM:
// 从相册获取
try {
InputStream is = getActivity().getContentResolver().openInputStream(data.getData());
bitmap = BitmapFactory.decodeStream(is);
is.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
break;
case FROM_CAMERA:
// 拍照获取
bitmap = data.getExtras().getParcelable("data");
try {
// 把拍的照片压缩到文件里
FileOutputStream fos = new FileOutputStream(new File(PersonalFragment.PICTURE_PATH));
bitmap.compress(CompressFormat.JPEG, 100, fos);
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
break;
}
image.setImageBitmap(bitmap);
}
核心代码也就是上面这些了,这没有对图像进行剪切,等以后需要用到剪切功能的时候再来完善这篇博文