feat: add floating ball background color setting

This commit is contained in:
7015725
2026-05-19 00:10:25 +08:00
parent 49ecd1e74e
commit 4c054dd4a3
5 changed files with 22 additions and 11 deletions

View File

@@ -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 {

View File

@@ -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);

View File

@@ -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" ||

View File

@@ -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
}

View File

@@ -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