From 7d2f954e9730c7eff96d4fda7e093b1be6c7a436 Mon Sep 17 00:00:00 2001 From: dongliang Date: Thu, 7 May 2026 15:59:18 +0930 Subject: [PATCH] =?UTF-8?q?style:=20=E7=94=B5=E9=87=8F=E6=95=B0=E5=AD=97?= =?UTF-8?q?=E7=A7=BB=E5=9B=9E=E7=94=B5=E6=B1=A0=E5=9B=BE=E6=A0=87=E5=A4=96?= =?UTF-8?q?=E9=83=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 电池内部只保留充电时的 ⚡ 闪电符号 数字在电池左侧显示(16sp 加粗,颜色跟随状态) 电池图标恢复 28×13 正常尺寸 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../xiaoqu/watch/ui/widget/StatusBarView.kt | 39 ++++++++++--------- 1 file changed, 21 insertions(+), 18 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 b5b0fdd..6b9fb9c 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 @@ -50,6 +50,7 @@ class StatusBarView @JvmOverloads constructor( // ===== 右侧:电池图标(固定位置)+ 电量百分比(电池左侧) ===== val batteryStartX = width - 50f drawBattery(canvas, batteryStartX, centerY) + drawBatteryText(canvas, batteryStartX - 4f, centerY) } /** 绘制蓝牙状态圆点 */ @@ -89,8 +90,8 @@ class StatusBarView @JvmOverloads constructor( /** 绘制电池图标(壳 + 填充条 + 凸起 + 内部文字/闪电) */ private fun drawBattery(canvas: Canvas, startX: Float, centerY: Float) { - val shellW = 38f - val shellH = 16f + val shellW = 28f + val shellH = 13f val shellTop = centerY - shellH / 2 val cornerR = 4f @@ -115,25 +116,16 @@ class StatusBarView @JvmOverloads constructor( ) canvas.drawRoundRect(fillRect, 2f, 2f, paint) - // 电池内部文字:充电时显示 ⚡,否则显示百分比 - // 白色文字 + 黑色描边,在填充条和黑色背景上都清晰 - if (batteryLevel >= 0) { - val text = if (isCharging) "⚡" else "${batteryLevel}" + // 充电时在电池内部画闪电 + if (isCharging) { + paint.style = Paint.Style.FILL + paint.color = 0xFFFFFFFF.toInt() paint.textSize = 11f paint.textAlign = Paint.Align.CENTER paint.typeface = android.graphics.Typeface.DEFAULT_BOLD val metrics = paint.fontMetrics val baselineY = centerY - (metrics.ascent + metrics.descent) / 2 - val cx = startX + shellW / 2 - // 先画黑色描边(让白字在绿色填充上有边界) - paint.style = Paint.Style.STROKE - paint.strokeWidth = 2.5f - paint.color = 0xFF000000.toInt() - canvas.drawText(text, cx, baselineY, paint) - // 再画白色填充 - paint.style = Paint.Style.FILL - paint.color = 0xFFFFFFFF.toInt() - canvas.drawText(text, cx, baselineY, paint) + canvas.drawText("⚡", startX + shellW / 2, baselineY, paint) paint.textAlign = Paint.Align.LEFT paint.typeface = android.graphics.Typeface.DEFAULT } @@ -151,9 +143,20 @@ class StatusBarView @JvmOverloads constructor( canvas.drawRoundRect(nubRect, 1.5f, 1.5f, paint) } - /** 不再单独绘制电量文字(已合入电池图标内部) */ + /** 绘制电量百分比(电池图标左侧) */ private fun drawBatteryText(canvas: Canvas, rightEdge: Float, centerY: Float) { - // 电量数字已显示在电池内部,无需额外文字 + if (batteryLevel < 0) return + val text = "${batteryLevel}%" + paint.style = Paint.Style.FILL + paint.color = getBatteryColor() + paint.textSize = 16f + paint.textAlign = Paint.Align.RIGHT + paint.typeface = android.graphics.Typeface.DEFAULT_BOLD + val metrics = paint.fontMetrics + val baselineY = centerY - (metrics.ascent + metrics.descent) / 2 + canvas.drawText(text, rightEdge, baselineY, paint) + paint.textAlign = Paint.Align.LEFT + paint.typeface = android.graphics.Typeface.DEFAULT } // ===== 更新方法 =====