SuperAPI AI 工具集

icons-app-icon-and-splash

设计与创作

查看项目

更新于 10-18 18:02

技能介绍

用途

该技能用于在 Expo 应用中把每一个 UI 图标和每一份品牌视觉都变成代码产物,避免图标字体、矢量图标包、emoji 或图片文件进入应用源码。它提供一套决策规则、目录结构、生成脚本、检查器和测试模板,覆盖从单个 UI 图标到应用图标、启动屏、商店图标和游戏/看板中重复美术素材的完整流程。

主要能力

  • UI 图标系统:每个图标是图标集中有名字的路径,在 24 单位网格上由图层组成,合并为单个 Skia 路径,由 <Icon> 一次性栅格化、使用主题色着色,并对 VoiceOver/TalkBack 隐藏(标签由外层控件承担)。图标集由 design/icon-layers.json 经 scripts/art/build-icon-paths.ts 生成 src/ui/icons/icon-paths.ts,生成文件带 // GENERATED by 头,不允许手改。
  • 多色图标:双色字形由两个叠加的 <Icon> 实现(如 star-fill 在 star-edge 下),三色及以上视为图片而非图标。
  • 品牌标记:BRAND_MARK 位于 48 网格、边缘留 2 单位(含描边)、最多 8 层、使用主题颜色角色而非十六进制色值,统一驱动应用内 BrandTile、所有应用图标、启动屏和商店图标。
  • 多色美术:使用单个 Skia 画布与共享的「仅类型」绘制代码,drawMark 将 Skia API 作为参数传入,使应用、CanvasKit golden 和 Node 脚本运行同一份代码;重复美术按调色板、配色方案、色盲标志、单元格大小、像素比预渲染为精灵表。
  • 应用图标与启动屏渲染:由 scripts/art/render-app-art.ts 生成并提交。iOS:1024 px,浅色不透明满版、深色透明、着色不透明灰度,标记位于中央 62%;Android:前景和主题单色层透明并置于 66 dp 安全圆内,背景层不透明;启动屏:标记透明,Android 12+ 以 imageWidth dp(最多 288)显示在 288 dp 图标上并遮罩为 192 dp 圆,标记须位于距图像中心 96/imageWidth 以内(默认 200 时为 0.48);Play 图标:512 px 不透明、不超过 1024 KB。
  • 检查器:check-icons.mjs 校验图标集与图层(名称、方向列表、语法、网格、覆盖率)、生成头,以及源码中的图标库、emoji 和图片禁令;check-app-art.mjs 按平台规则校验渲染 PNG、启动屏宽度、配置接线与依赖、品牌标记。两个 --check 可加入 verify gate。
  • 模板与参考文档:提供 references/icon-system.md、icon-catalogue.md(19 个内置图标)、brand-mark-and-pictures.md、app-icon-and-splash.md、skia-notes.md,以及 templates/ 下的图标图层、契约、脚本和图标组件模板,含单元与 golden 测试。

使用方式

  1. 阅读 references/icon-system.md;若应用不使用 Skia,按其对应章节处理。
  2. 安装 @shopify/react-native-skia(2.6.2)和 npx expo install expo-splash-screen(若缺失)。
  3. 按模板首行标注的路径复制 templates/ 下文件:design/icon-layers.json、contracts/app-art.json 及其 schema、scripts/art/ 全套脚本与测试、src/ui/icons/ 组件与测试。它们依赖 @/theme/*、@/i18n/direction-context 和 @test/render-with-providers,需先由相关技能创建。
  4. 使用图标时,从图标目录或应用自有图标集中选名称、用应用 token 定尺寸、用主题取色,由外层控件携带标签:icon={(look) => <Icon name="plus" {...look} />}。
  5. 新增或修改图标:改图层 JSON,运行 node scripts/art/build-icon-paths.ts,再运行 node scripts/art/render-icon-sheet.ts 并查看 reports/art/icon-sheet.png。
  6. 绘制应用图标等:运行 node scripts/art/render-app-art.ts,在 1024 和 256 px 查看每张图,接入 iosAppearanceIcon() 与 splashPlugin(),再按变体运行 npx expo config --type public,图像与改动一起提交;上传商店图像前须停止并询问开发者。
  7. 运行检查:npx tsc --noEmit、npx eslint <changed paths> --max-warnings 0、npx jest src/ui/icons scripts/art --ci、两个 --check 脚本,以及 check-icons.mjs . 和 check-app-art.mjs .;多包时在每个应用目录分别执行。

适用场景

Expo/React Native 应用中需要统一图标集、品牌标记、应用图标、自适应图标、启动屏和商店图像,并希望这些产物可重复生成、可校验、随主题与深色模式变化的项目。

限制

  • 依赖 Skia(@shopify/react-native-skia)和既有的主题、方向上下文与测试工具链;不使用 Skia 的应用需走专门说明。
  • 图标必须在 24 网格内,品牌标记必须在 48 网格且最多 8 层,使用颜色角色而非十六进制。
  • 平台规则(安全区、透明度、尺寸、商店文件大小)由检查器强制;手绘美术需人工目检。
  • 商店图像上传属对外操作,需人工确认。
  • 该技能资料未提供收费、价格或平台兼容性等商业信息。