diff --git a/code/th_01_base.js b/code/th_01_base.js index 10533ef..b47bea9 100644 --- a/code/th_01_base.js +++ b/code/th_01_base.js @@ -130,6 +130,7 @@ var ConfigValidator = { BALL_ICON_PKG: { type: "string", default: "" }, BALL_ICON_RES_NAME: { type: "string", default: "" }, BALL_ICON_TINT_HEX: { type: "string", default: "" }, + BALL_BG_COLOR_HEX: { type: "string", default: "" }, // 回弹动画配置 BOUNCE_DECAY: { type: "float", min: 0.3, max: 0.95, default: 0.72 }, @@ -741,6 +742,7 @@ var ConfigManager = { BALL_ICON_RES_NAME: "", BALL_ICON_SIZE_DP: 22, BALL_ICON_TINT_HEX: "", + BALL_BG_COLOR_HEX: "", BALL_IDLE_ALPHA: 0.6, PANEL_POS_GRAVITY: "bottom", PANEL_CUSTOM_OFFSET_Y: 0, @@ -793,7 +795,8 @@ var ConfigManager = { ]}, { key: "BALL_ICON_FILE_PATH", name: "已选择的图标文件", type: "text" }, { key: "BALL_ICON_RES_NAME", name: "岛上图标", type: "ball_shortx_icon" }, - { key: "BALL_ICON_TINT_HEX", name: "气球颜色", type: "ball_color" }, + { key: "BALL_ICON_TINT_HEX", name: "徽章颜色", type: "ball_color" }, + { key: "BALL_BG_COLOR_HEX", name: "球体背景", type: "ball_color" }, { key: "BALL_IDLE_ALPHA", name: "安静时透明度", type: "float", min: 0.1, max: 1.0, step: 0.05 }, { type: "section", name: "面板布局" }, @@ -870,7 +873,7 @@ var ConfigManager = { var needReset = false; if (s) { var sStr = JSON.stringify(s); - if (sStr.indexOf("ENABLE_SNAP_TO_EDGE") < 0 || sStr.indexOf("ENABLE_ANIMATIONS") < 0 || sStr.indexOf("BALL_IDLE_ALPHA") < 0 || sStr.indexOf("PANEL_POS_GRAVITY") < 0 || sStr.indexOf("single_choice") < 0 || sStr.indexOf("ball_shortx_icon") < 0 || sStr.indexOf("ball_color") < 0 || sStr.indexOf("SETTINGS_THEME") < 0) { + if (sStr.indexOf("ENABLE_SNAP_TO_EDGE") < 0 || sStr.indexOf("ENABLE_ANIMATIONS") < 0 || sStr.indexOf("BALL_IDLE_ALPHA") < 0 || sStr.indexOf("PANEL_POS_GRAVITY") < 0 || sStr.indexOf("single_choice") < 0 || sStr.indexOf("ball_shortx_icon") < 0 || sStr.indexOf("ball_color") < 0 || sStr.indexOf("SETTINGS_THEME") < 0 || sStr.indexOf("BALL_BG_COLOR_HEX") < 0) { needReset = true; } } else { diff --git a/code/th_04_theme.js b/code/th_04_theme.js index 78bf825..6017c88 100644 --- a/code/th_04_theme.js +++ b/code/th_04_theme.js @@ -719,6 +719,14 @@ FloatBallAppWM.prototype.getMonetAccentForBall = function() { FloatBallAppWM.prototype.updateBallContentBackground = function(contentView) { try { var ballColor = this.getMonetAccentForBall(); + try { + var bgHex = String(this.config.BALL_BG_COLOR_HEX || "").trim(); + if (bgHex.length > 0) { + ballColor = android.graphics.Color.parseColor(bgHex); + } + } catch(eCustomBg) { + safeLog(this.L, 'e', "BALL_BG_COLOR_HEX parse failed, fallback Monet accent: " + String(eCustomBg)); + } var dark = this.isDarkTheme(); var alpha01 = dark ? this.config.BALL_RIPPLE_ALPHA_DARK : this.config.BALL_RIPPLE_ALPHA_LIGHT; var rippleColor = this.withAlpha(ballColor, alpha01); diff --git a/code/th_05_persistence.js b/code/th_05_persistence.js index 7444fdc..4f269fc 100644 --- a/code/th_05_persistence.js +++ b/code/th_05_persistence.js @@ -317,7 +317,7 @@ FloatBallAppWM.prototype.applyImmediateEffectsForKey = function(k) { } catch(eLK) { safeLog(null, 'e', "catch " + String(eLK)); } return; } - if (k === "BALL_SIZE_DP" || k === "BALL_PNG_MODE" || k === "BALL_ICON_TYPE" || k === "BALL_ICON_FILE_PATH" || k === "BALL_ICON_RES_ID" || k === "BALL_ICON_RES_NAME" || k === "BALL_ICON_SIZE_DP" || k === "BALL_ICON_TINT_HEX") { this.rebuildBallForNewSize(); return; } + if (k === "BALL_SIZE_DP" || k === "BALL_PNG_MODE" || k === "BALL_ICON_TYPE" || k === "BALL_ICON_FILE_PATH" || k === "BALL_ICON_RES_ID" || k === "BALL_ICON_RES_NAME" || k === "BALL_ICON_SIZE_DP" || k === "BALL_ICON_TINT_HEX" || k === "BALL_BG_COLOR_HEX") { this.rebuildBallForNewSize(); return; } if (k === "PANEL_ROWS" || k === "PANEL_COLS" || k === "PANEL_ITEM_SIZE_DP" || k === "PANEL_GAP_DP" || diff --git a/manifest.json b/manifest.json index d723c4b..c30481d 100644 --- a/manifest.json +++ b/manifest.json @@ -2,8 +2,8 @@ "alg": "SHA256withRSA", "files": { "th_01_base.js": { - "sha256": "df8a72de4da16452d19ed6a1f704b42e1f090356af52d2d4769f4ea66300313e", - "size": 52885 + "sha256": "f275c5964348a06601258d96ede4de9040f1e1d47076bedb405bb1a8ce8465ac", + "size": 53093 }, "th_02_core.js": { "sha256": "15bb9bfbd19a673d442e221b0a00a456ed5f87af2666b9c73b117d6223faeecd", @@ -14,12 +14,12 @@ "size": 5598 }, "th_04_theme.js": { - "sha256": "02e83c839a54c24fa9c178eab4f165e3181294750dd4bda57a0e7ff5eb23a52d", - "size": 39909 + "sha256": "11f5971378f2ded631a5066ba158452f5a030aa2efac26f6b16928ce779f193b", + "size": 40227 }, "th_05_persistence.js": { - "sha256": "2b5b667912c8c1a808d7925fc619e917b46244a73405af1eca9dd567312f9b9d", - "size": 14790 + "sha256": "24f42d714342f6a7f8a726d5acf3670bfaa280937e75f1319cca53794fcd5a56", + "size": 14819 }, "th_06_icon_parser.js": { "sha256": "25b95a5df634a7ee359f3ab798e4d3154a71c24016f7b4bf8a658096644b2484", @@ -68,5 +68,5 @@ }, "keyId": "toolhub-targets-2026-rsa3072", "schema": 2, - "version": 20260518155413 + "version": 20260518161003 } diff --git a/manifest.sig b/manifest.sig index c94b5c4..46b2594 100644 --- a/manifest.sig +++ b/manifest.sig @@ -1 +1 @@ -HHRMBUQsD50aKZlC9fmYAI5i3/5azoXBAcdjGR/Rx/SxPmqysV0ir09/bt2j33RWp7lWMarJYwl+eOslRKdohERSWxi5Ksjjb688gDexyCV3RUxYN6e/beWO7+TZHduw7vOqaanhc+VN61RBsMqgvR0KKfJLGnBKoYmOjKslBqwKukUbXgweTGRaa5PkOgRqSyAejvX5DWXNDhK0Na/+m3etjAZx0QIccJWy38e9bijtuX6PWGdRcd1EtMOiF1r9gg11vAYy18rf4EI/gpjLUTAWZY4LVyoarkixxW7IEsq7ia1Ru9vEQRpvZr61Sx6IGVZADqU93VCpSS2lCVYKU+q+YCxcBYiq1a54spbb2ys4j89xJnFDTX+UluoSrUzy1CqxSy2/SluXX2+zhj30sYOICbyerKYXKliZPEVghMqhicK35pK4ojFmTIyk1fqQX2zs1nVoKmFbrwHlh0ZxFwSMKoHCpKlJwVNP4MOEPkJenrByCt0dKxai3ZPvIQl3 +CfuxxR8N3bqjMiymTDYCSFfTmNWxGDbMpCT3FYUSznB3mJueI0ajadduxg1tDCV6X5ssh+4pCE0jwql9+MTH2hJLYJLsaaI8uswaVAUnsTbV9OdLLc6vtXscNaVm54hJ0eg1UyReQinxaqRKqNsMrqkftIDDAw0QGfZPF3ehqvB/wp6cK1jfcLtPiVcnORXUwVntyeiEQqpkVDTK0ovz8eOOYS1kCW3b21tqDwuJ7BvvNM9sDuXF8wdmayxD7vi98IOIeJcw9KnRhHcHxQCOVQ3UUQ115H4V4fA0GHQ6Ae2BzVQ68XQ0nTrZDh2tYF1u7aj1Dg+vnEL9hk/2LJK9wdtPFOCpMrygUVqSN7lLe7tTaCOMwUavV2TmMvwKPBvoIQCdd9gh47j54FsmW1srwHjtWIsGkiwBglc1aiDsq33kcuSc7F7+PCrXNkEB0pk3pS0ZQ66Q0AsxVN48e3iJ0iuHemzZn8fyanRfW8u7hazT3tK89RjlA5OqXkO4j1Gb