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