From 9eb618dfd68d67fc1e044aa9d37d4dc5feee56a8 Mon Sep 17 00:00:00 2001 From: dongliang Date: Thu, 7 May 2026 13:35:27 +0930 Subject: [PATCH] =?UTF-8?q?style:=20=E7=94=B5=E6=B1=A0=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 百分比文字放大 15f→18f,颜色跟随电池状态 - 充电时加 ⚡ 前缀(如 ⚡73%),一眼可见充电状态 - 颜色分级更清晰:>60%绿 / 21-60%白 / 11-20%橙 / ≤10%红 - 低电量时电池壳也变红,整体醒目 - 统一 getBatteryColor() 逻辑复用 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../xiaoqu/watch/ui/widget/StatusBarView.kt | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 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 b9136ae..4a8496f 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 @@ -79,13 +79,23 @@ class StatusBarView @JvmOverloads constructor( } } + /** 获取电池状态颜色(统一逻辑) */ + private fun getBatteryColor(): Int = when { + isCharging -> colorGreen + batteryLevel <= 10 -> colorRed + batteryLevel <= 20 -> colorOrange + batteryLevel <= 60 -> colorWhite + else -> colorGreen + } + /** 绘制电量百分比文字(电池图标左侧) */ private fun drawBatteryText(canvas: Canvas, rightEdge: Float, centerY: Float) { if (batteryLevel < 0) return // 未获取时不显示 - val text = "${batteryLevel}%" + // 充电时显示 ⚡ 前缀 + val text = if (isCharging) "⚡${batteryLevel}%" else "${batteryLevel}%" paint.style = Paint.Style.FILL - paint.color = 0x99FFFFFF.toInt() // 白色 60% 透明度 - paint.textSize = 15f + paint.color = getBatteryColor() + paint.textSize = 18f paint.textAlign = Paint.Align.RIGHT val metrics = paint.fontMetrics val baselineY = centerY - (metrics.ascent + metrics.descent) / 2 @@ -93,28 +103,23 @@ class StatusBarView @JvmOverloads constructor( paint.textAlign = Paint.Align.LEFT } - /** 绘制电池图标(壳 + 填充条 + 凸起 + 充电闪电) */ + /** 绘制电池图标(壳 + 填充条 + 凸起) */ private fun drawBattery(canvas: Canvas, startX: Float, centerY: Float) { val shellW = 28f val shellH = 13f val shellTop = centerY - shellH / 2 val cornerR = 3.5f - // 电池壳边框 + // 电池壳边框(颜色跟随状态) paint.style = Paint.Style.STROKE paint.strokeWidth = 1.5f - paint.color = colorBorder + paint.color = if (batteryLevel <= 10 && !isCharging) colorRed else colorBorder val shellRect = RectF(startX, shellTop, startX + shellW, shellTop + shellH) canvas.drawRoundRect(shellRect, cornerR, cornerR, paint) // 电池填充条 paint.style = Paint.Style.FILL - paint.color = when { - isCharging -> colorGreen - batteryLevel <= 10 -> colorRed - batteryLevel <= 20 -> colorOrange - else -> colorGreen - } + paint.color = getBatteryColor() val fillPadding = 2.5f val fillMaxW = shellW - fillPadding * 2 val fillW = fillMaxW * batteryLevel.coerceAtLeast(0) / 100f @@ -126,10 +131,8 @@ class StatusBarView @JvmOverloads constructor( ) canvas.drawRoundRect(fillRect, 2f, 2f, paint) - // 充电状态通过填充条颜色区分(绿色=充电中,已在上方 when 处理) - // 电池凸起(右侧小矩形) - paint.color = colorBorder + paint.color = if (batteryLevel <= 10 && !isCharging) colorRed else colorBorder val nubW = 2.5f val nubH = 6f val nubRect = RectF(