harmonyos 资源文件 string、float、color 的统一管理实践
Open Harmony 高端精致:资源文件 string、float、color 的统一管理实践 ✨
前言 🌟
一个应用是否精致,不只看页面有没有动画,也看文字、字号、颜色是否统一。OpenHarmony / HarmonyOS 项目提供了资源目录,用来管理字符串、尺寸、颜色、媒体等内容。
当前项目中已经存在:
string.jsonfloat.jsoncolor.jsondark/element/color.json
本文基于当前项目真实资源配置,分析资源统一管理在高端精致体验中的作用。
本文对应四大主题中的 高端精致。
字符串资源 string.json 📦
应用级字符串资源位于:
AppScope/resources/base/element/string.json
当前内容是:
{
"string": [
{
"name": "app_name",
"value": "xiaohongshu"
}
]
}
这里定义了应用名称 app_name,并在 app.json5 中使用:
"label": "$string:app_name"
模块级字符串资源位于:
entry/src/main/resources/base/element/string.json
其中包含:
{
"name": "EntryAbility_label",
"value": "label"
}
当前模块字符串仍然比较模板化,例如 description、label。这说明项目还处于基础工程阶段,后续可以替换成更贴合应用定位的文案。
float.json:字号资源化 🎨
当前项目中有:
{
"float": [
{
"name": "page_text_font_size",
"value": "50fp"
}
]
}
首页 Index.ets 中引用了它:
.fontSize($r('app.float.page_text_font_size'))
这说明当前页面没有直接把字号硬编码成某个数字,而是通过资源引用。
这种方式有几个好处:
- 字号集中管理。
- 多页面复用更方便。
- 后续调整视觉风格更容易。
- 代码中减少魔法数字。
当前项目只有一个字号资源,但已经体现了资源化意识。
字号资源和页面显示的关系 🔗
当前首页中最直接的资源引用就是:
.fontSize($r('app.float.page_text_font_size'))
这说明 float.json 里的 page_text_font_size 会影响首页文本显示。也就是说,资源文件不是“放在那里不用的配置”,它已经参与页面渲染。
如果后续调整 page_text_font_size 的值,首页文字大小就可以跟着变化。对于写文章来说,这个点很适合说明资源管理的实际价值:修改视觉参数不一定要改 ArkTS 页面代码。
color.json:颜色资源管理 🌈
基础颜色文件位于:
entry/src/main/resources/base/element/color.json
内容是:
{
"color": [
{
"name": "start_window_background",
"value": "#FFFFFF"
}
]
}
深色资源位于:
entry/src/main/resources/dark/element/color.json
内容是:
{
"color": [
{
"name": "start_window_background",
"value": "#000000"
}
]
}
这说明项目已经把启动窗口背景放入颜色资源,并为 dark 场景准备了对应值。
需要注意:当前项目只是配置了启动窗口背景色,还没有形成完整的页面颜色体系。文章中应该说“具备资源分层基础”,不要写成“已经完成完整深色模式适配”。
base 和 dark 的分层意义 🌗
当前项目同时存在:
resources/base/element/color.json
resources/dark/element/color.json
这体现了资源分层思想。base 是基础资源,dark 是深色场景下的覆盖资源。当前两个文件都定义了 start_window_background,只是颜色值不同。
这种结构给后续主题适配留下了空间。比如未来增加 text_primary,就可以在 base 中定义浅色文字颜色,在 dark 中定义深色模式下的文字颜色。
当前项目还没有把首页文字颜色资源化,所以这里只能说“具备资源分层基础”。这种表述既真实,也能体现项目后续方向。
资源引用比硬编码更适合长期维护 ✅
当前项目的写法:
.fontSize($r('app.float.page_text_font_size'))
比直接写:
.fontSize(50)
更适合长期维护。
原因是页面越来越多以后,硬编码会带来几个问题:
- 同一个字号散落在多个页面。
- 调整视觉规范时需要全局搜索。
- 不同页面容易出现细微不一致。
- 明暗主题扩展更困难。
资源化管理可以让设计规范逐步沉淀下来。
当前资源还比较基础 📌
当前项目的资源数量并不多,这是事实。string.json 中还有 module description、description、label 这类模板文案,float.json 只有一个字号,color.json 也主要服务于启动背景。
但这不影响它作为文章主题。因为这篇文章的重点不是说项目已经有完整设计系统,而是说明项目已经开始使用资源化管理。基础阶段把资源目录和引用方式讲清楚,后续扩展页面时就不会到处硬编码。
这也是“高端精致”的真实落点:先统一资源,再谈复杂视觉。
和高端精致主题的关系 ✨
高端精致并不是把页面做得很花,而是体验一致、层级清楚、视觉稳定。
当前项目中的资源文件虽然少,但已经覆盖:
- 应用名称。
- Ability 文案。
- 页面文字字号。
- 启动背景颜色。
- 深色启动背景颜色。
这些都属于视觉和体验基础。
后续可以如何扩展?🚀
如果继续完善项目,可以增加更多资源:
page_background
text_primary
text_secondary
card_background
brand_primary
spacing_small
spacing_medium
radius_card
这些目前不是项目已有内容,只是后续建议。
如果未来要做小红书风格内容流页面,资源体系会非常重要。卡片背景、标题字号、昵称颜色、点赞颜色、底部导航状态,都可以逐步资源化。
写资源类文章要注意真实性 ✅
当前项目能真实展示的是资源管理“起点”,不是完整设计系统。因此文章中最好多使用“基础配置”“后续扩展”“资源化意识”这类表述。
这样既不会夸大项目,也能让读者看到价值:即使是一个简单首页,也可以从一开始就把字符串、字号、颜色放到正确位置,为后续页面扩展做准备。
总结 🌈
这篇文章对应 高端精致 方向。
当前项目已经具备基础资源管理:
string.json管理应用和模块文案。float.json管理页面字号。color.json管理启动窗口背景。dark/element/color.json提供深色资源基础。Index.ets通过$r()引用字号资源。
资源文件不是简单配置,它是视觉一致性和工程可维护性的基础。OpenHarmony 应用想做得更精致,应该从字符串、字号、颜色这些小地方开始统一。


更多推荐



所有评论(0)