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 应用想做得更精致应该从字符串、字号、颜色这些小地方开始统一。