From b9a84cb48ca3f89333b3d8d0dd55e43d830d8c14 Mon Sep 17 00:00:00 2001 From: dongliang Date: Mon, 27 Apr 2026 17:39:01 +0930 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BA=8C=E7=BB=B4=E7=A0=81=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=9C=86=E8=A7=92=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 使用 Canvas + PorterDuff 裁剪,6%圆角半径 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../com/xiaoqu/watch/ui/bind/BindFragment.kt | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/xiaoqu/watch/ui/bind/BindFragment.kt b/app/src/main/java/com/xiaoqu/watch/ui/bind/BindFragment.kt index 02b1e28..031571d 100644 --- a/app/src/main/java/com/xiaoqu/watch/ui/bind/BindFragment.kt +++ b/app/src/main/java/com/xiaoqu/watch/ui/bind/BindFragment.kt @@ -86,10 +86,11 @@ class BindFragment : BaseFragment() { } } - /** 将 ZXing BitMatrix 转换为 Android Bitmap */ + /** 将 ZXing BitMatrix 转换为圆角 Android Bitmap */ private fun bitMatrixToBitmap(matrix: BitMatrix): Bitmap { val width = matrix.width val height = matrix.height + // 先生成方形 Bitmap val pixels = IntArray(width * height) for (y in 0 until height) { for (x in 0 until width) { @@ -100,7 +101,20 @@ class BindFragment : BaseFragment() { } } } - return Bitmap.createBitmap(pixels, width, height, Bitmap.Config.ARGB_8888) + val squareBitmap = Bitmap.createBitmap(pixels, width, height, Bitmap.Config.ARGB_8888) + + // 绘制圆角 + val output = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888) + val canvas = android.graphics.Canvas(output) + val paint = android.graphics.Paint(android.graphics.Paint.ANTI_ALIAS_FLAG) + val rect = android.graphics.RectF(0f, 0f, width.toFloat(), height.toFloat()) + val radius = width * 0.06f // 6% 圆角 + canvas.drawRoundRect(rect, radius, radius, paint) + paint.xfermode = android.graphics.PorterDuffXfermode(android.graphics.PorterDuff.Mode.SRC_IN) + canvas.drawBitmap(squareBitmap, 0f, 0f, paint) + squareBitmap.recycle() + + return output } /**