使用Ucrop裁剪图像
资料来源
https://blog.csdn.net/little_soybean/article/details/52460222
添加依赖
implementation 'com.github.yalantis:ucrop:2.2.2'
注册权限和自带裁剪的活动
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
...
<activity
android:name="com.yalantis.ucrop.UCropActivity"
android:screenOrientation="landscape"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
获得资源图片的路径以后就可以设置Ucrop启动裁剪活动
UCrop.of(sourceUri, destinationUri)
.withAspectRatio(1, 1)
.withMaxResultSize(300, 300)
.start(this);
更多设置参考上方资料来源
UCrop uCrop = UCrop.of(uri_crop, destinationUri);
UCrop.Options options = new UCrop.Options();
//设置裁剪图片可操作的手势
options.setAllowedGestures(UCropActivity.SCALE, UCropActivity.ROTATE, UCropActivity.ALL);
//设置隐藏底部容器,默认显示
// options.setHideBottomControls(true);
//设置toolbar颜色
options.setToolbarColor(ActivityCompat.getColor(this, R.color.colorPrimary));
//设置状态栏颜色
options.setStatusBarColor(ActivityCompat.getColor(this, R.color.colorPrimary));
//是否能调整裁剪框
// options.setFreeStyleCropEnabled(true);
uCrop.withOptions(options);
uCrop.start(this);
Ucrop会在裁剪结束后,返回启动Ucrop的活动页面
如果没有自己设置RequestCode,Ucrop有默认的值UCrop.REQUEST_CROP
在onActivityResult()方法中可以处理结果
case UCrop.REQUEST_CROP:
if (resultCode==RESULT_OK){
Uri resultUri= UCrop.getOutput(data);
Glide.with(this).load(resultUri).into(ivHeadPic);
}
if (resultCode==UCrop.RESULT_ERROR){
Throwable t= UCrop.getError(data);
Log.e(TAG, "onActivityResult: t="+t);
}