项目地址:
uCrop本身的文档说明
去剪切前配置参数:
UCrop.of(sourceUri, destinationUri)
.withAspectRatio(16, 9)
.withMaxResultSize(maxWidth, maxHeight)
.start(context);
剪切完后,在onactivityResult里处理数据
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && requestCode == UCrop.REQUEST_CROP) {
final Uri resultUri = UCrop.getOutput(data);
} else if (resultCode == UCrop.RESULT_ERROR) {
final Throwable cropError = UCrop.getError(data);
}
}
分析
框架本身直接接收图片文件的uri,返回intent.
而在实际开发中,往往是从图库里选择图片,或者调用照相机拍照后,再跳到裁剪的页面.
onActivityResult里的代码有很多共通的地方,需要进行封装.
封装
首先是从图片库选择和从照相机拍照的动作的封装
从系统图库选择,只能单选:
public static void pickFromGallery(Activity context) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
context.startActivityForResult(Intent.createChooser(intent, "选择图片"), REQUEST_SELECT_PICTURE);
}
调用系统拍照功能
Uri mDestinationUri = buildUri();
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE)
.putExtra(MediaStore.EXTRA_OUTPUT, mDestinationUri);
conte