From f785be91a68b1dcb6d69c143749232b42d999ece Mon Sep 17 00:00:00 2001 From: dongliang Date: Wed, 29 Apr 2026 17:20:56 +0930 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=94=B5=E6=B1=A0=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E7=94=B5=E9=87=8F=E6=95=B0=E5=80=BC=20+=20=E5=85=85=E7=94=B5?= =?UTF-8?q?=E9=97=AA=E7=94=B5=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 电池图标右侧显示"75%"电量百分比(白色60%透明度) 2. 充电中在电池壳内显示⚡闪电标识 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../xiaoqu/watch/ui/widget/StatusBarView.kt | 34 +++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/xiaoqu/watch/ui/widget/StatusBarView.kt b/app/src/main/java/com/xiaoqu/watch/ui/widget/StatusBarView.kt index faa78da..89868f2 100644 --- a/app/src/main/java/com/xiaoqu/watch/ui/widget/StatusBarView.kt +++ b/app/src/main/java/com/xiaoqu/watch/ui/widget/StatusBarView.kt @@ -47,8 +47,9 @@ class StatusBarView @JvmOverloads constructor( drawBluetoothDot(canvas, 8f, centerY) drawSignalBars(canvas, 22f, centerY) - // ===== 右侧:电池 ===== - drawBattery(canvas, width - 48f, centerY) + // ===== 右侧:电量数值 + 电池图标 ===== + val batteryTextWidth = drawBatteryText(canvas, width.toFloat(), centerY) + drawBattery(canvas, width - batteryTextWidth - 52f, centerY) } /** 绘制蓝牙状态圆点 */ @@ -77,7 +78,22 @@ class StatusBarView @JvmOverloads constructor( } } - /** 绘制电池图标(壳 + 填充条 + 凸起) */ + /** 绘制电量百分比文字(右对齐,返回文字宽度) */ + private fun drawBatteryText(canvas: Canvas, rightEdge: Float, centerY: Float): Float { + val text = "${batteryLevel}%" + paint.style = Paint.Style.FILL + paint.color = 0x99FFFFFF.toInt() // 白色 60% 透明度 + paint.textSize = 16f + paint.textAlign = Paint.Align.RIGHT + // 垂直居中:baseLine = centerY + textHeight/2 - descent + val metrics = paint.fontMetrics + val baselineY = centerY - (metrics.ascent + metrics.descent) / 2 + canvas.drawText(text, rightEdge - 2f, baselineY, paint) + paint.textAlign = Paint.Align.LEFT // 恢复默认 + return paint.measureText(text) + 4f + } + + /** 绘制电池图标(壳 + 填充条 + 凸起 + 充电闪电) */ private fun drawBattery(canvas: Canvas, startX: Float, centerY: Float) { val shellW = 28f val shellH = 13f @@ -110,6 +126,18 @@ class StatusBarView @JvmOverloads constructor( ) canvas.drawRoundRect(fillRect, 2f, 2f, paint) + // 充电闪电标识(电池壳内居中) + if (isCharging) { + paint.color = colorWhite + paint.style = Paint.Style.FILL + paint.textSize = 11f + paint.textAlign = Paint.Align.CENTER + val metrics = paint.fontMetrics + val baselineY = centerY - (metrics.ascent + metrics.descent) / 2 + canvas.drawText("⚡", startX + shellW / 2, baselineY, paint) + paint.textAlign = Paint.Align.LEFT + } + // 电池凸起(右侧小矩形) paint.color = colorBorder val nubW = 2.5f