跳转至

裁剪控件

添加: Version 0.5.0

CropViewLayout 是一个裁剪控件,目的是帮助你快速构建自己的裁剪页面。

快速使用

添加: Version 0.5.0

<com.ave.vastgui.tools.view.cropview.CropViewLayout
    android:id="@+id/cropview_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

查看默认样式

调用裁剪

调用系统裁剪

你可以使用 CropIntent 来调用系统裁剪。

调用 VastCropActivity

添加: Version 0.5.0

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

更多使用还请参考 VastCropActivity.kt 的定义。

设置预览框的类型

添加: Version 0.5.0   更新: Version 1.5.2

可以通过 crop_frame_type 或者调用 cropFrameType 来设置预览框的形状,目前支持四种:

类型 示例 类型 示例
CIRCLE Frame circle SQUARE Frame square
GRID9 Frame grid9 RECTANGLE Frame rectangle
binding.cropViewLayout.cropFrameType = CropFrameType.CIRCLE
<com.ave.vastgui.tools.view.cropview.CropViewLayout
    ...
    app:crop_frame_type="circle" />

设置预览框的大小

添加: Version 0.5.0   更新: Version 1.5.2

预览框的大小和预览框的形状有关,如果预览框的形状是 RECTANGLE ,则可以通过 crop_frame_widthcrop_frame_height 或者调用 setCropFrameSize(Float, Float) 来设置预览框的大小。

binding.cropViewLayout.setCropFrameSize(50f.DP, 50f.DP)
<com.ave.vastgui.tools.view.cropview.CropViewLayout
    ...
    app:crop_frame_width="50dp"
    app:crop_frame_height="50dp" />

如果形状是 CIRCLESQUAREGRID9 ,则可以通过 crop_frame_size 或者调用 setCropFrameSize(Float) 来设置预览框的大小。

binding.cropViewLayout.setCropFrameSize(50f.DP)
<com.ave.vastgui.tools.view.cropview.CropViewLayout
    ...
    app:crop_frame_size="50dp" />

设置预览框的蒙版颜色

添加: Version 0.5.0   更新: Version 0.5.3

可以通过 crop_mask_layer_color 或者调用 setCropMaskColor 来设置蒙版颜色。

binding.cropViewLayout.setCropMaskColor(Color.RED)
<com.ave.vastgui.tools.view.cropview.CropViewLayout
    ...
    app:crop_mask_layer_color="@color/red" />

蒙版颜色说明

建议采用带透明度的颜色效果会更好。

CropViewLayout with mask color

设置设置预览框的边框颜色

添加: Version 0.5.0

可以通过 crop_frame_stroke_color 或者调用 setCropFrameStrokeColor 来设置边框颜色。

binding.cropViewLayout.setCropFrameStrokeColor(Color.RED)
<com.ave.vastgui.tools.view.cropview.CropViewLayout
    ...
    app:crop_frame_stroke_color="@color/red" />

CropViewLayout with stroke color

获取裁剪照片

添加: Version 0.5.0   更新: Version 1.5.2

过时说明

因为 setDrawingCacheEnabledbuildDrawingCache 相关 API 在 API 28 过时,因而提供了两种方式获取裁剪照片。

对 Android 9 的适配(API 28开始)

val bitmap: Bitmap? = 
    binding.cropViewLayout.getCroppedImageApi28(outputX, outputY)

对 Android 8 及以下的适配

val bitmap: Bitmap? = 
    binding.cropViewLayout.getCroppedImage(outputX, outputY)

示例代码

查看示例代码