UI adjust + optimize

- adjust about page appearance
- change mode menu shape to round
- enlarge on selected mode
- improve color recognition algorithm
- code optimize
This commit is contained in:
KOWX712
2024-12-30 02:04:35 +08:00
parent 24548025fe
commit fe64f37361
5 changed files with 36 additions and 19 deletions

View File

@@ -38,23 +38,29 @@ ln -s "$MODPATH/webui" "$TS/webroot"
# Optimization # Optimization
OUTPUT_APP="$MODPATH/common/tmp/applist" OUTPUT_APP="$MODPATH/common/tmp/applist"
OUTPUT_SKIP="$MODPATH/common/tmp/skiplist" OUTPUT_SKIP="$MODPATH/common/tmp/skiplist"
OUTPUT_TMP="$MODPATH/common/tmp/tmp_applist"
until [ "$(getprop sys.boot_completed)" = "1" ]; do until [ "$(getprop sys.boot_completed)" = "1" ]; do
sleep 1 sleep 1
done done
mkdir -p "$MODPATH/common/tmp" mkdir -p "$MODPATH/common/tmp"
pm list packages -3 2>/dev/null | awk -F: '{print $2}' > "$OUTPUT_TMP"
pm path com.google.android.gms >/dev/null 2>&1 && echo "com.google.android.gms" >> "$OUTPUT_TMP"
echo "# This file is generated from service.sh to speed up load time" > "$OUTPUT_APP" echo "# This file is generated from service.sh to speed up load time" > "$OUTPUT_APP"
echo "# This file is generated from service.sh to speed up load time" > "$OUTPUT_SKIP" echo "# This file is generated from service.sh to speed up load time" > "$OUTPUT_SKIP"
pm list packages -3 </dev/null 2>&1 | cat | awk -F: '{print $2}' | while read -r PACKAGE; do cat "$OUTPUT_TMP" | while read -r PACKAGE; do
APK_PATH=$(pm path "$PACKAGE" </dev/null 2>&1 | cat | grep "base.apk" | awk -F: '{print $2}' | tr -d '\r') APK_PATH=$(pm path "$PACKAGE" 2>/dev/null | grep "base.apk" | awk -F: '{print $2}' | tr -d '\r')
if [ -n "$APK_PATH" ]; then if [ -n "$APK_PATH" ]; then
APP_NAME=$(aapt dump badging "$APK_PATH" </dev/null 2>&1 | cat | grep "application-label:" | sed "s/application-label://g; s/'//g") APP_NAME=$(aapt dump badging "$APK_PATH" 2>/dev/null | grep "application-label:" | sed "s/application-label://g; s/'//g")
echo "app-name: $APP_NAME, package-name: $PACKAGE" >> "$OUTPUT_APP" echo "app-name: $APP_NAME, package-name: $PACKAGE" >> "$OUTPUT_APP"
else else
echo "app-name: Unknown App package-name: $PACKAGE" >> "$OUTPUT_APP" echo "app-name: Unknown App package-name: $PACKAGE" >> "$OUTPUT_APP"
fi fi
if ! aapt dump xmltree "$APK_PATH" AndroidManifest.xml </dev/null 2>&1 | cat | grep -qE "xposed.category|xposeddescription"; then if ! aapt dump xmltree "$APK_PATH" AndroidManifest.xml 2>/dev/null | grep -qE "xposed.category|xposeddescription"; then
echo "$PACKAGE" >> "$OUTPUT_SKIP" echo "$PACKAGE" >> "$OUTPUT_SKIP"
fi fi
done done
rm -f "$OUTPUT_TMP"

View File

@@ -37,7 +37,7 @@ export async function fetchAppList() {
console.warn("Applist file not found or could not be loaded. Skipping applist lookup."); console.warn("Applist file not found or could not be loaded. Skipping applist lookup.");
} }
const result = await execCommand('pm list packages -3; pm path com.google.android.gms >/dev/null 2>&1 && echo "package:com.google.android.gms"'); const result = await execCommand('pm list packages -3; pm path com.google.android.gms >/dev/null 2>&1 && echo "package:com.google.android.gms" || true');
const appEntries = result const appEntries = result
.split("\n") .split("\n")
.map(line => { .map(line => {
@@ -116,7 +116,7 @@ export async function fetchAppList() {
} }
const checkboxes = appListContainer.querySelectorAll(".checkbox"); const checkboxes = appListContainer.querySelectorAll(".checkbox");
setupRadioButtonListeners(); setupRadioButtonListeners();
setupCardHoldListener(); setupModeMenu();
updateCheckboxColor(); updateCheckboxColor();
} }
@@ -192,7 +192,7 @@ function setupRadioButtonListeners() {
} }
// Hold to open menu // Hold to open menu
function setupCardHoldListener() { function setupModeMenu() {
let holdTimeout; let holdTimeout;
function showMode(card) { function showMode(card) {
const modeElement = card.querySelector(".mode"); const modeElement = card.querySelector(".mode");
@@ -229,7 +229,6 @@ function setupCardHoldListener() {
card.addEventListener("pointercancel", () => clearTimeout(holdTimeout)); card.addEventListener("pointercancel", () => clearTimeout(holdTimeout));
}); });
// Close on click/scroll
document.addEventListener("click", (event) => { document.addEventListener("click", (event) => {
if (!event.target.closest(".mode") || modeOverlay.contains(event.target)) { if (!event.target.closest(".mode") || modeOverlay.contains(event.target)) {
hideAllModes(); hideAllModes();

View File

@@ -219,7 +219,7 @@ function applyRippleEffect() {
const rgb = color.match(/\d+/g); const rgb = color.match(/\d+/g);
if (!rgb) return false; if (!rgb) return false;
const [r, g, b] = rgb.map(Number); const [r, g, b] = rgb.map(Number);
return (r * 0.299 + g * 0.587 + b * 0.114) < 128; // Luma formula return (r * 0.299 + g * 0.587 + b * 0.114) < 96; // Luma formula
}; };
ripple.style.backgroundColor = isDarkColor(bgColor) ? "rgba(255, 255, 255, 0.2)" : ""; ripple.style.backgroundColor = isDarkColor(bgColor) ? "rgba(255, 255, 255, 0.2)" : "";

View File

@@ -67,7 +67,14 @@
} }
#disclaimer { #disclaimer {
font-style: italic; font-family: serif;
width: calc(100% - 80px);
padding: 8px 10px;
left: 0;
right: 0;
margin: auto;
border-radius: 10px;
background-color: #F5F5F5;
} }
#acknowledgment { #acknowledgment {
@@ -120,4 +127,8 @@
.about-menu { .about-menu {
background-color: #343434; background-color: #343434;
} }
#disclaimer {
background-color: #6E6E6E;
}
} }

View File

@@ -65,7 +65,7 @@
display: none; display: none;
flex-direction: row; flex-direction: row;
gap: 10px; gap: 10px;
padding: 10px; padding: 10px 12px;
position: absolute; position: absolute;
left: 0; left: 0;
right: 0; right: 0;
@@ -74,7 +74,7 @@
background-color: #B1B1B1; background-color: #B1B1B1;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
border: 1px solid #ccc; border: 1px solid #ccc;
border-radius: 12px; border-radius: 50px 50px;
opacity: 0; opacity: 0;
transform: scale(0); transform: scale(0);
transition: all 0.4s cubic-bezier(0.22, 1, 0.36, 1); transition: all 0.4s cubic-bezier(0.22, 1, 0.36, 1);
@@ -113,11 +113,11 @@
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
width: 35px; width: 40px;
height: 35px; height: 40px;
border-radius: 7px; border-radius: 50px 50px;
box-sizing: border-box; box-sizing: border-box;
transition: border-color 0.2s ease; transition: all 0.2s ease;
border: 3px solid transparent; border: 3px solid transparent;
position: relative; position: relative;
overflow: hidden; overflow: hidden;
@@ -132,10 +132,11 @@
} }
#generate-indicator { #generate-indicator {
background-color: #51FF00; background-color: #36DB2B;
} }
.mode-input[type="radio"]:checked ~ .mode-icon .status-indicator { .mode-input[type="radio"]:checked ~ .mode-icon .status-indicator {
transform: scale(1.1);
border-color: #fff; border-color: #fff;
} }
@@ -192,8 +193,8 @@
} }
.checkbox-checked-generate:checked + .custom-checkbox { .checkbox-checked-generate:checked + .custom-checkbox {
border-color: #51FF00; border-color: #36DB2B;
background-color: #51FF00; background-color: #36DB2B;
} }
.checkbox-checked-hack:checked + .custom-checkbox { .checkbox-checked-hack:checked + .custom-checkbox {