From 3588d6bc024606d153570facdfdebbf38686aa20 Mon Sep 17 00:00:00 2001 From: 0000248716-lijiaxiao Date: Tue, 6 Jul 2021 10:09:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qrcodescanner/view/QrCodeFinderView.java | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/qrcodescanner/src/main/java/com/blikoon/qrcodescanner/view/QrCodeFinderView.java b/qrcodescanner/src/main/java/com/blikoon/qrcodescanner/view/QrCodeFinderView.java index 559227a..4f6a2e6 100644 --- a/qrcodescanner/src/main/java/com/blikoon/qrcodescanner/view/QrCodeFinderView.java +++ b/qrcodescanner/src/main/java/com/blikoon/qrcodescanner/view/QrCodeFinderView.java @@ -16,6 +16,8 @@ import ohos.agp.window.service.DisplayAttributes; import ohos.agp.window.service.DisplayManager; import ohos.app.Context; +import java.math.BigDecimal; + /** * This view is overlaid on top of the camera preview. It adds the viewfinder rectangle and partial transparency outside * it, as well as the laser scanner animation and result points. @@ -156,19 +158,29 @@ public final class QrCodeFinderView extends DependentLayout implements Component mPaint.setTextSize(vp2px(getContext(), 13)); String text = "Position QR Code"; Paint.FontMetrics fontMetrics = mPaint.getFontMetrics(); - float fontTotalHeight = fontMetrics.bottom - fontMetrics.top; - float offY = fontTotalHeight / 2 - fontMetrics.bottom; - float newY = rect.bottom + margin + offY; + + BigDecimal bignum1 = new BigDecimal(fontMetrics.bottom); + BigDecimal bignum2 = new BigDecimal(fontMetrics.top); + float fontTotalHeight = bignum1.subtract(bignum2).floatValue(); + + BigDecimal bignum3 = new BigDecimal(fontTotalHeight); + BigDecimal bignum4 = new BigDecimal(fontMetrics.bottom); + BigDecimal bignum5 = new BigDecimal(2); + float offY = bignum3.divide(bignum5).subtract(bignum4).floatValue(); + BigDecimal bignum6 = new BigDecimal(rect.bottom); + BigDecimal bignum7 = new BigDecimal(margin); + BigDecimal bignum8 = new BigDecimal(offY); + float newY = bignum6.add(bignum7).add(bignum8).floatValue(); DisplayAttributes attributes = DisplayManager.getInstance().getDefaultDisplay(getContext()).get().getAttributes(); float screenScale = attributes.densityPixels; - float left = (getDisplayWidthInPx(getContext()) - (mPaint.getTextSize()) * text.length()) / 2; - /* - correctedLeft is hack to force the text in the middle of the width of the screen - 55 is an experimental value and it takes into account the scale of the screen. - */ - float correctedLeft = left + (55 * screenScale); + int left = (getDisplayWidthInPx(getContext()) - (mPaint.getTextSize()) * text.length()) / 2; + + BigDecimal bignum9 = new BigDecimal(left); + BigDecimal bignum10 = new BigDecimal(55); + BigDecimal bignum11 = new BigDecimal(screenScale); + float correctedLeft = bignum10.multiply(bignum11).add(bignum9).floatValue(); canvas.drawText(mPaint, text, correctedLeft, newY); } -- Gitee