【OpenHarmony/HarmonyOs 】ArkUI 设计系统入门:用 UiTokens 统一颜色、间距、圆角与阴影
【OpenHarmony/HarmonyOs 】ArkUI 设计系统入门用 UiTokens 统一颜色、间距、圆角与阴影前言当页面从一个增长到六个时直接写颜色和尺寸会迅速失控同样的灰色出现多个值同级卡片圆角不同修改品牌色需要全项目搜索。LinkOS 链界建立了一个轻量UiTokens把视觉常量集中管理。本文介绍这种做法并进一步讨论深色模式、资源系统和多设备响应式布局。一、什么是 Design TokenDesign Token 是设计决策的代码化表达。它不描述“某个按钮宽 44”而描述“中号圆角”“主色”“弱文本色”等可复用语义。exportclassUiTokens{staticreadonlyCOLOR_PRIMARY#0A59F7;staticreadonlyCOLOR_BG#F7F8FA;staticreadonlyCOLOR_CARD#FFFFFF;staticreadonlyCOLOR_TEXT#0B1220;staticreadonlyCOLOR_TEXT_MUTED#6B7280;staticreadonlyCOLOR_BORDER#EEF0F4;staticreadonlyRADIUS_SM10;staticreadonlyRADIUS_MD14;staticreadonlyRADIUS_LG18;staticreadonlyRADIUS_XL24;staticreadonlySPACE_88;staticreadonlySPACE_1212;staticreadonlySPACE_1616;staticreadonlySPACE_2424; }页面使用语义常量后设计语言更统一Column() {/* 卡片内容 */}.padding(UiTokens.SPACE_16).backgroundColor(UiTokens.COLOR_CARD).borderRadius(UiTokens.RADIUS_LG).border({ width:1, color: UiTokens.COLOR_BORDER }).shadow(UiTokens.SHADOW_SM)二、阴影也需要结构化exportinterfaceShadowToken {radius:number;color:string; offsetX?:number; offsetY?:number; }staticreadonlySHADOW_SM:ShadowToken {radius:6,color:rgba(15, 23, 42, 0.06),offsetY:2};把阴影作为一个整体 Token可以保证 radius、透明度和偏移不会被随意组合。建议只保留少量阴影层级普通卡片、浮层、模态框。层级越多界面越容易显得杂乱。三、Builder 是轻量组件化工具页面中反复出现标签、统计卡、导航项可以使用BuilderBuilderStatsCard(title:string,value:string){Column(){Text(value).fontSize(18).fontWeight(FontWeight.Bold)Text(title).fontSize(11).fontColor(UiTokens.COLOR_TEXT_MUTED)} .height(60) .backgroundColor(UiTokens.COLOR_CARD).borderRadius(UiTokens.RADIUS_LG)}Builder 适合同一页面内部的重复结构。若组件跨页面复用、拥有独立状态或生命周期应提取为独立Component文件。例如当前四个主页面都实现了类似底部导航后续最好统一为公共组件避免修改一处却遗漏其他页面。四、两列 Grid 只是响应式起点欢迎页和元服务页使用Grid(){/* items */}.columnsTemplate(1fr 1fr).columnsGap(12).rowsGap(12)两列在手机上合适但项目声明支持 phone、tablet、2in1固定两列会浪费宽屏空间。响应式设计应根据窗口宽度切换布局 600vp2列底部导航 600-840vp3列内容区适度加宽 840vp4列或侧边导航限制正文最大宽度宽屏适配不是把所有元素同比放大。正确做法通常是增加列数、提高信息密度、限制内容最大宽度并让导航位置更符合大屏操作。五、安全区与底部导航底部导航调用.expandSafeArea([SafeAreaType.SYSTEM],[SafeAreaEdge.BOTTOM])这能处理手势导航区域与设备底部差异。欢迎页同时扩展顶部和底部背景使渐变铺满屏幕但内容仍应保留足够 padding。背景扩展和可交互内容避让是两个不同概念。六、深色模式不能只准备一个资源目录项目已有resources/dark/element/color.json但不少页面仍直接写十六进制颜色。硬编码颜色不会自动响应深色资源。要真正支持深色模式应逐步将语义颜色迁移为资源.backgroundColor($r(app.color.page_background)) .fontColor($r(app.color.text_primary))系统切换配置后资源系统会选择对应限定目录。品牌渐变、插图等少量特殊颜色可以保留 Token但文本、背景、边框等基础语义最好资源化。七、文字与本地化直接写中文便于原型开发但语言切换仅保存zh-CN/en-US并不会自动改变页面文本。完整国际化需要把字符串放入resources/base/element/string.json增加语言限定资源页面通过$r(app.string.xxx)引用切换语言时更新应用配置或重新加载相关页面检查英文变长后卡片和按钮是否溢出。八、视觉一致性检查清单同层级标题是否使用相同字号与字重卡片是否只使用有限的圆角层级文本和背景对比度是否足够所有点击目标是否有稳定尺寸长标题是否设置maxLines与省略手机、平板、横屏是否没有重叠深色模式下边框和阴影是否仍然自然动画和颜色是否照顾减少动态效果与色觉差异用户。九、总结设计系统不一定从庞大的组件库开始。先统一颜色、间距、圆角和阴影再用 Builder 消除页面内重复用公共组件解决跨页面一致性最后结合资源限定目录实现深色与国际化就能让 ArkUI 项目从“每页各写各的”逐步走向稳定的产品界面。✅

相关新闻

【OpenHarmony/HarmonyOs 】利用 UIAbility 生命周期实现应用使用时长与访问统计

【OpenHarmony/HarmonyOs 】利用 UIAbility 生命周期实现应用使用时长与访问统计

【OpenHarmony/HarmonyOs 】利用 UIAbility 生命周期实现应用使用时长与访问统计 前言 使用统计可以帮助用户理解自己的习惯,也能为推荐排序与成就系统提供基础。HarmonyOS Stage 模型中,UIAbility 的前后台回调提供了自然的计时边界。本文以 LinkOS 链界…

2026/7/21 7:47:04阅读更多 →
【OpenHarmony/HarmonyOs 】ArkUI 对话界面实战:消息状态、气泡布局与 AI 云函数接入设计

【OpenHarmony/HarmonyOs 】ArkUI 对话界面实战:消息状态、气泡布局与 AI 云函数接入设计

【OpenHarmony/HarmonyOs 】ArkUI 对话界面实战:消息状态、气泡布局与 AI 云函数接入设计 前言 AI 助手页面看似只是消息列表和输入框,实际包含消息模型、角色布局、不可变状态更新、快捷提示、加载态、失败重试与密钥安全。LinkOS 链界已经实现了完整的…

2026/7/21 7:47:04阅读更多 →
旧物改造方案 —— 鸿蒙AI智能助手开发全流程解析

旧物改造方案 —— 鸿蒙AI智能助手开发全流程解析

🔧 旧物改造方案 —— 鸿蒙AI智能助手开发全流程解析分类: 生活整理 | 应用编号: App2 | 平台: HarmonyOS NEXT 关键词: 鸿蒙、鸿蒙PC、鸿蒙Flutter框架、AI应用、ArkTS、HarmonyOS NEXT 摘要: 本文基于旧物…

2026/7/21 7:45:04阅读更多 →
Tack架构揭秘:如何实现AWS VPC中的CoreOS与Kubernetes完美集成

Tack架构揭秘:如何实现AWS VPC中的CoreOS与Kubernetes完美集成

Tack架构揭秘:如何实现AWS VPC中的CoreOS与Kubernetes完美集成 【免费下载链接】tack Terraform module for creating Kubernetes cluster running on Container Linux by CoreOS in an AWS VPC 项目地址: https://gitcode.com/gh_mirrors/ta/tack 在当今云原…

2026/7/21 16:51:55阅读更多 →
DeepONet论文复现:Nature Machine Intelligence经典模型实现

DeepONet论文复现:Nature Machine Intelligence经典模型实现

DeepONet论文复现:Nature Machine Intelligence经典模型实现 【免费下载链接】deeponet Learning nonlinear operators via DeepONet based on the universal approximation theorem of operators 项目地址: https://gitcode.com/gh_mirrors/de/deeponet Dee…

2026/7/21 16:51:55阅读更多 →
Excel卡了,然后呢?大数据量驱动下的数据分析工具升级

Excel卡了,然后呢?大数据量驱动下的数据分析工具升级

"每次有人问我投放分析用什么工具,我都会反问:你的月投放预算是多少、投了几个渠道。答案不同,推荐的工具完全不同。一个月投2万和一个月投200万,用的工具肯定不是同一套。" 说实话,投放分析工具没有绝对的…

2026/7/21 16:51:55阅读更多 →
5分钟快速入门DeepXDE:科学机器学习与物理信息学习的终极指南

5分钟快速入门DeepXDE:科学机器学习与物理信息学习的终极指南

5分钟快速入门DeepXDE:科学机器学习与物理信息学习的终极指南 【免费下载链接】deepxde A library for scientific machine learning and physics-informed learning 项目地址: https://gitcode.com/gh_mirrors/de/deepxde 你是否曾为求解复杂的偏微分方程而…

2026/7/21 16:51:55阅读更多 →
服装AI质检特殊场景下的疵点标注?

服装AI质检特殊场景下的疵点标注?

在工业质检、纺织服装、材料科学等领域,基于视觉的疵点检测与标注是训练高质量AI模型的关键步骤。然而,实际生产环境中遇到的疵点千变万化,远非理想实验室条件下的标准图像可比。面对褶皱上的疵点、复杂纹理背景、低对比度目标、跨区域大面积…

2026/7/21 16:51:55阅读更多 →
告别动漫下载卡顿:3步配置专业Tracker加速方案

告别动漫下载卡顿:3步配置专业Tracker加速方案

告别动漫下载卡顿:3步配置专业Tracker加速方案 【免费下载链接】animeTrackerList 动漫磁性链接加速方案(animeTrackerList) 项目地址: https://gitcode.com/GitHub_Trending/an/animeTrackerList 还在为心爱的动漫资源下载速度慢而烦…

2026/7/21 16:49:55阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 0:51:49阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 0:51:49阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 0:51:49阅读更多 →
Windows+macOS 通用 OpenClaw 部署流程,内置依赖一键启动智能桌面助手

Windows+macOS 通用 OpenClaw 部署流程,内置依赖一键启动智能桌面助手

📌教程适配:OpenClaw v2.7.9 | 兼容 Windows10/11、macOS 双系统 📖前言 当下各类本地 AI 工具层出不穷,多数产品仅能完成文字问答交互,很难直接操控电脑执行实际操作。OpenClaw,业内常称小龙虾 AI&#…

2026/7/21 0:01:46阅读更多 →
Codex 接入后 Bug 反增?复盘从个人演示到团队协作的“流程陷阱”

Codex 接入后 Bug 反增?复盘从个人演示到团队协作的“流程陷阱”

聊《一次Codex项目复盘,问题最后出在流程而不是模型》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值得做&…

2026/7/21 0:01:46阅读更多 →
手把手搓一个五子棋游戏,零代码也能当“游戏开发者”

手把手搓一个五子棋游戏,零代码也能当“游戏开发者”

大家好,还是我。前几期带大家做了心情日记本和可视化大屏,后台有朋友留言:“能不能教点好玩的?我想做游戏,但一行代码都不会。”行,这期就安排。今天的目标:从零做一个五子棋游戏。 带AI对战、三…

2026/7/21 0:03:46阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/20 22:51:39阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/20 18:51:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/20 18:51:18阅读更多 →