基本上,我有一个包含CameraPreview的Activity,并且我将一个带有可绘制形状的RelativeLayout作为背景,以在屏幕中间显示矩形。
我想裁剪盒装区域,并且设法通过裁剪位图来做到这一点
val height = dpToPx(300)
val width = dpToPx(187)
var y = srcBmp.height / 2 - (height / 2)
var x = srcBmp.width / 2 - (width / 2)
dstBmp = Bitmap.createBitmap(
srcBmp,
x,
y,
width,
height
)
它可以在大多数设备上使用,但是我不知道为什么某些设备不尊重我定义的DP的分辨率,某些图片比某些设备的BOX大。 >
这就是我将dp转换为px
的方式fun dpToPx(dp: Int): Int {
val density = this.resources
.displayMetrics
.density
return Math.round(dp.toFloat() * density)
}
这是我的活动布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.camerakit.CameraKitView
android:layout_centerInParent="true"
android:id="@+id/camera_view_box1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:keepScreenOn="true"
app:camera_facing="back"
app:camera_focus="continuous"
app:camera_permissions="camera"/>
<RelativeLayout
android:layout_centerInParent="true"
android:background="@drawable/transparent_bg"
android:layout_width="300dp"
android:layout_height="187dp"/>
<RelativeLayout
android:focusable="true"
android:clickable="true"
android:id="@+id/take_picture_box"
android:layout_centerHorizontal="true"
android:layout_marginBottom="30dp"
android:layout_alignParentBottom="true"
android:layout_width="70dp"
android:layout_height="70dp"
android:background="@drawable/circle_bg"/>
</RelativeLayout>
我做错了什么,如何解决?