![9f861359cc932eec30e624b807d5a42a.png](https://i-blog.csdnimg.cn/blog_migrate/3cb3dbbfcca9df5b17ca3b963dfcea8d.jpeg)
引语
晚上好,我是龙仔,我的公众号「吴小龙同学」会不定期推荐 GitHub 上好玩的项目,挖掘开源的价值,欢迎关注我。
现在 Android 开发,离不开图片,必然也需要图片裁剪功能,这个实现可以调用系统的裁剪,但有些产品经理可能不满意自带的裁剪效果,因此 BB,怎么办呢?我这里推荐一个 Android 图片裁剪库 uCrop,Yalantis 出品,绝壁能让产品经理闭嘴。
效果预览
![46a689d5c81c41ae0d060ea01bf79801.gif](https://i-blog.csdnimg.cn/blog_migrate/8e02827895d6e086802272a70d6fa901.gif)
使用示例
1、引入 uCrop 库。
allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }
}
}
implementation 'com.github.yalantis:ucrop:2.2.4'
-轻巧的通用解决方案。
implementation 'com.github.yalantis:ucrop:2.2.4-native'
- 获得本机代码的功能以保持图像质量(apk 大小约为 1.5 MB)。
2、将 UCropActivity 添加到您的 AndroidManifest.xml 中。
android:name="com.yalantis.ucrop.UCropActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
3、使用构建器模式配置 uCrop。
UCrop.of(sourceUri, destinationUri)
.withAspectRatio(16, 9)
.withMaxResultSize(maxWidth, maxHeight)
.start(context);
4、覆盖onActivityResult
方法并处理 uCrop 结果。
@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);
}
}
5、混淆配置。
-dontwarn com.yalantis.ucrop**
-keep class com.yalantis.ucrop** { *; }
-keep interface com.yalantis.ucrop** { *; }
GitHub 地址
https://github.com/Yalantis/uCrop
![e039865acdbc608b4cd4a8b5a432cebc.png](https://i-blog.csdnimg.cn/blog_migrate/db664e2cb81d690cdd714555c3fca362.jpeg)