From ac41eef37b4d4f13c418913e66d404f26894ef57 Mon Sep 17 00:00:00 2001 From: xfy Date: Mon, 15 Jun 2026 14:06:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20Adaptive=20Icon(an?= =?UTF-8?q?ydpi-v26),=E4=BF=AE=E5=A4=8D=20API=2026+=20=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E5=99=A8=E8=A3=81=E5=88=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题 - minSdk 24, 但只有 mipmap-*/ic_launcher.png (无 anydpi-v26) - ic_launcher.png 与 ic_launcher_round.png MD5 完全相同, 圆形版只是方形副本 - API 26+ 用户在 OEM 圆形/水滴/方形启动器上图标会被硬切, 主体缺失 新增资源 - drawable/ic_launcher_background.xml: 矢量色块 #83D0F1 (原图四角采样 RGB 131,208,241) - drawable/ic_launcher_foreground.xml: 引用密度分桶位图 - mipmap-anydpi-v26/ic_launcher.xml + ic_launcher_round.xml: adaptive-icon 定义 (含 支持 Android 13+ 主题化图标) - mipmap-{xhdpi,xxhdpi,xxxhdpi}/ic_launcher_foreground.webp: 从 app_icon_original.png (2048px) 中心裁 80% + cwebp -q 90 生成 体积比对应 ic_launcher.png 小 60-70% (xxhdpi: 7.4KB vs 22.5KB) 设计决策 - foreground 用位图而非矢量: 原图主体是写实风格, 矢量化会损失质量 - foreground 源图用 git 历史临时恢复生成, 不重新入库 (保持 Task 1 清理成果) - 保留 mipmap-*/ic_launcher.png 作 API 24-25 回退 (不删) - AndroidManifest.xml 无需改: @mipmap/ic_launcher 在 API 26+ 自动取 anydpi-v26 设备验证 (emulator API 37, Pixel Launcher) - 安装 + 回桌面, hotseat 最右 YaYa 图标显示正常 - analyze_image 确认: 圆形遮罩下背景填满, 黄色主体居中无裁切 - 颜色与原设计一致 (主体 RGB~254,213,74, 背景 #83D0F1) 构建验证 - unzip -l 确认 APK 含 anydpi-v26/*.xml + drawable/ic_launcher_*.xml + 各密度 foreground.webp - ./gradlew :app:assembleDebug → BUILD SUCCESSFUL - APK 累计 -489KB (baseline 24,416,752 → 23,915,694, 主要是 Task 1 删 PNG) --- .../res/drawable/ic_launcher_background.xml | 11 +++++++++++ .../res/drawable/ic_launcher_foreground.xml | 7 +++++++ .../main/res/mipmap-anydpi-v26/ic_launcher.xml | 10 ++++++++++ .../res/mipmap-anydpi-v26/ic_launcher_round.xml | 7 +++++++ .../mipmap-xhdpi/ic_launcher_foreground.webp | Bin 0 -> 4572 bytes .../mipmap-xxhdpi/ic_launcher_foreground.webp | Bin 0 -> 7438 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.webp | Bin 0 -> 10342 bytes 7 files changed, 35 insertions(+) create mode 100644 app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..782052f --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..b0c9de2 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,7 @@ + + + diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..1d66005 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..40f2872 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..a6ad9d0207ea68aa78964fd1451517c82868aefb GIT binary patch literal 4572 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