我正在使用uCrop库来执行图像裁剪。
我需要在同一个活动中剪切两个不同的图像。但是使用我所拥有的代码,返回将进入一个循环。
我怎样才能将此回报分开,以便独立对待?
代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == UCrop.RESULT_ERROR) {
Toast.makeText(this, "uCrop error", Toast.LENGTH_SHORT).show();
return;
}
if (requestCode == UCrop.REQUEST_CROP) {
mSelectImage.setImageResource(0);
final Uri imgUri = UCrop.getOutput(data);
mResultUri = imgUri;
mSelectImage.setImageURI(mResultUri);
temDadosSalvar = true;
Toast.makeText(this, "Cortada", Toast.LENGTH_SHORT).show();
return;
}
if (requestCode == CAMERA_REQUEST_CODE && resultCode == RESULT_OK) {
mImageUri = data.getData();
if (mImageUri == null) {
mProgress.dismiss();
return;
} else {
File tempCropped = new File(getCacheDir(), "tempImgCropped.png");
Uri destinationUri = Uri.fromFile(tempCropped);
UCrop uCrop = UCrop.of(mImageUri, destinationUri);
uCrop = advancedConfig(uCrop);
uCrop.start(this);
}
}
if (requestCode == CAMERA_REQUEST_CODE_CAPA && resultCode == RESULT_OK) {
mImageUri = data.getData();
if (mImageUri == null) {
mProgress.dismiss();
return;
} else {
File tempCropped = new File(getCacheDir(), "tempImgCropped.png");
Uri destinationUri = Uri.fromFile(tempCropped);
UCrop uCrop = UCrop.of(mImageUri, destinationUri);
uCrop = advancedConfig(uCrop);
uCrop.start(this);
}
}
}
}
答案 0 :(得分:0)
您可以创建两个类变量来识别裁剪过程中的图像。
private Uri mDestinationCapa;
private Uri mDestinationCamera;
if (requestCode == CAMERA_REQUEST_CODE && resultCode == RESULT_OK) {
mImageUri = data.getData();
if (mImageUri == null) {
...
} else {
File tempCropped = new File(getCacheDir(), "tempImgCropped.png");
mDestinationCamera= Uri.fromFile(tempCropped);
...
}
}
if (requestCode == CAMERA_REQUEST_CODE_CAPA && resultCode == RESULT_OK) {
mImageUri = data.getData();
if (mImageUri == null) {
...
} else {
File tempCropped = new File(getCacheDir(), "tempImgCropped.png");
mDestinationCapa = Uri.fromFile(tempCropped);
...
}
}
在ActivityResult上,您可以将结果Uri与本地Uris进行比较:
if (requestCode == UCrop.REQUEST_CROP) {
final Uri imgUri = UCrop.getOutput(data);
if(mDestinationCamera != null && imgUri.equals(mDestinationCamera)){
//save camera cropped image
}if(mDestinationCamera != null && imgUri.equals(mDestinationCamera)){
//save capa cropped image
}
return;
}