裁剪控件¶
CropViewLayout
是一个裁剪控件,目的是帮助你快速构建自己的裁剪页面。
快速使用¶
<com.ave.vastgui.tools.view.cropview.CropViewLayout
android:id="@+id/cropViewLayout"
android:layout_width="match_parent"
android:layout_height="match_parent" />
调用裁剪¶
调用系统裁剪¶
你可以使用 CropIntent 来调用系统裁剪。
调用 VastCropActivity¶
VastCropActivity
是默认提供的裁剪应用,你可以通过下面的方式来轻松的使用它。
// 在 AndroidManifest.xml 中声明
<activity
android:name="com.ave.vastgui.tools.activity.app.VastCropActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
// 使用 intent 来启动
val intent = Intent(this, VastCropActivity::class.java).apply {
data = originalImageUri
putExtra(VastCropActivity.FRAME_TYPE, VastCropActivity.FRAME_TYPE_GRID9)
putExtra(VastCropActivity.OUTPUT_X, 300f)
putExtra(VastCropActivity.OUTPUT_Y, 300f)
}
更多使用还请参考 VastCropActivity.kt 的定义。
设置预览框的类型¶
调用 setCropFrameType
来设置预览框的形状,目前支持四种:
类型 | 示例 | 类型 | 示例 |
---|---|---|---|
CIRCLE | SQUARE | ||
GRID9 | RECTANGLE |
getBinding().cropViewLayout.setCropFrameType(CropFrameType.CIRCLE)
设置预览框的大小¶
调用 setCropFrameSize
来设置预览框的大小。
getBinding().cropViewLayout.setCropFrameSize(previewWidth, previewHeight)
关于预览框的大小设置说明
只有当预览框的类型是 RECTANGLE 时设置的不相同的长和宽才会生效,否则会取设置的长和宽中的较小值作为实际的预览框尺寸。
设置预览框的蒙版颜色¶
调用 setCropMaskColor
来设置蒙版颜色。
// 设置颜色
getBinding().cropViewLayout.setCropMaskColor(color)
蒙版颜色说明
建议采用带透明度的颜色效果会更好。
设置设置预览框的边框颜色¶
调用 setCropFrameStrokeColor
来设置蒙版颜色
// 获取颜色
val color = ColorUtils.colorHex2Int("#e74c3c")
// 设置颜色
getBinding().cropViewLayout.setCropFrameStrokeColor(color)
获取裁剪照片¶
过时说明
因为 setDrawingCacheEnabled
, buildDrawingCache
相关 API 在 API 28 过时,因而提供了两种方式获取裁剪照片。
对 Android 9 的适配(API 28开始)¶
val bitmap:Bitmap? =
getBinding().cropViewLayout.getCroppedImageAboveApi28(outputX,outputY)
对 Android 8 及以下的适配¶
val bitmap:Bitmap? =
getBinding().cropViewLayout.getCroppedImageUnderApi28(outputX,outputY)