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(