Как измерить растровое изображение с Android "дп" - PullRequest
0 голосов
/ 23 ноября 2018

В основном у меня есть Activity, которая содержит CameraPreview, и я помещаю RelativeLayout с формой, которую можно нарисовать в качестве фона, чтобы показать прямоугольник в середине экрана.

enter image description here

Я хотел обрезать область в штучной упаковке, и мне удалось сделать это, обрезав растровое изображение следующим образом

        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>

Что я сделал не так и как я могу это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...