From 10d648af3bcc80cb46eab30bbf3e5cbd3bb477c1 Mon Sep 17 00:00:00 2001 From: cosmohsieh Date: Mon, 25 Mar 2019 16:26:19 +0800 Subject: [PATCH] Fix inconsistent border width in QR code scanning camera 1) Fix border width become larger in the corner. 2) Correct border width Bug: 127654782 Test: manual Change-Id: I792ac571b5c59d14af82848698d76cb59a2f4249 --- .../android/settings/wifi/qrcode/QrDecorateView.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/wifi/qrcode/QrDecorateView.java b/src/com/android/settings/wifi/qrcode/QrDecorateView.java index 2be1eaba0dc..5df0cd0a7c2 100644 --- a/src/com/android/settings/wifi/qrcode/QrDecorateView.java +++ b/src/com/android/settings/wifi/qrcode/QrDecorateView.java @@ -46,6 +46,7 @@ public class QrDecorateView extends View { final private Paint mBackgroundPaint; final private float mRadius; + final private float mInnerRidus; private Bitmap mMaskBitmap; private Canvas mMaskCanvas; @@ -73,6 +74,9 @@ public class QrDecorateView extends View { mFocused = false; mRadius = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, CORNER_RADIUS, getResources().getDisplayMetrics()); + // Inner radius needs to minus stroke width for keeping the width of border consistent. + mInnerRidus = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, + CORNER_RADIUS - CORNER_STROKE_WIDTH, getResources().getDisplayMetrics()); mCornerColor = context.getResources().getColor(R.color.qr_corner_line_color); mFocusedCornerColor = context.getResources().getColor(R.color.qr_focused_corner_line_color); @@ -111,7 +115,7 @@ public class QrDecorateView extends View { // Draw outer corner. mMaskCanvas.drawRoundRect(mOuterFrame, mRadius, mRadius, mStrokePaint); // Draw inner transparent corner. - mMaskCanvas.drawRoundRect(mInnerFrame, mRadius, mRadius, mTransparentPaint); + mMaskCanvas.drawRoundRect(mInnerFrame, mInnerRidus, mInnerRidus, mTransparentPaint); canvas.drawBitmap(mMaskBitmap, 0, 0, mBackgroundPaint); super.onDraw(canvas); @@ -123,7 +127,7 @@ public class QrDecorateView extends View { final float cornerLineLength = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, CORNER_LINE_LENGTH, getResources().getDisplayMetrics()) / 2; final float strokeWidth = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, - CORNER_STROKE_WIDTH, getResources().getDisplayMetrics()) / 2; + CORNER_STROKE_WIDTH, getResources().getDisplayMetrics()); mOuterFrame = new RectF(centralX - cornerLineLength, centralY - cornerLineLength, centralX + cornerLineLength, centralY + cornerLineLength); @@ -131,7 +135,7 @@ public class QrDecorateView extends View { mOuterFrame.right - strokeWidth, mOuterFrame.bottom - strokeWidth); } - // Draws green lines if focued. Otherwise, draws white lines. + // Draws green lines if focused. Otherwise, draws white lines. public void setFocused(boolean focused) { mFocused = focused; invalidate();