网上又不少代码可以拿过来直接用
这里我用的一个很方便
搜了几个看了一下,大致的过程是:
1、设置两个按键:“从相册”和“照相”,就是布局两个button,很简单。分别设置监听事件。
2、定义两个函数,对应两个按钮
如:button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
choseHeadImageFromGallery();
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
choseHeadImageFromCameraCapture();
}
});
这里就不介绍函数的具体实现,可以看源代码。
3、重写onActivityResult来处理返回的结果,要是本地相册就是进行本地照片裁剪,通过传入path利用裁剪函数惊醒裁剪。
如下:
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
// 用户没有进行有效的设置操作,返回
if (resultCode == RESULT_CANCELED) {
Toast.makeText(getApplication(), "取消", Toast.LENGTH_LONG).show();
return;
}
switch (requestCode) {
case CODE_GALLERY_REQUEST:
cropRawPhoto(intent.getData()); 裁剪函数
break;
case CODE_CAMERA_REQUEST:
if (hasSdcard()) {
File tempFile = new File(
Environment.getExternalStorageDirectory(),
IMAGE_FILE_NAME);
cropRawPhoto(Uri.fromFile(tempFile));
} else {
Toast.makeText(getApplication(), "没有SDCard!", Toast.LENGTH_LONG)
.show();
}
break;
case CODE_RESULT_REQUEST:
if (intent != null) {
setImageToHeadView(intent);
}
break;
}
super.onActivityResult(requestCode, resultCode, intent);
}
4、裁剪以后要对头像保存和设置头像,用到函数自定义的 setImageToHeadView(intent),
具体的裁剪函数和设置头像函数具体的可以看源代码。
要是考虑代码重用可以自己设置成一个类,一个方便其他项目用。