Open Harmony 高端精致:应用启动页、深色模式与资源分层配置实践
Open Harmony 高端精致应用启动页、深色模式与资源分层配置实践 前言 一个应用给用户的第一印象往往不是首页加载完成之后才出现而是从启动窗口就开始了。在 OpenHarmony / HarmonyOS 应用中启动图标、启动背景色、明暗主题资源都可以通过配置和资源文件进行管理。当前项目虽然页面还很简单但已经具备了启动窗口背景和深色资源目录这正好适合写一篇“高端精致”方向的工程实践文章。本文基于当前项目真实文件展开entry/src/main/module.json5entry/src/main/resources/base/element/color.jsonentry/src/main/resources/dark/element/color.jsonentry/src/main/ets/entryability/EntryAbility.ets启动窗口配置在哪里当前项目在module.json5中配置了启动图标和启动背景{name:EntryAbility,srcEntry:./ets/entryability/EntryAbility.ets,icon:$media:layered_image,label:$string:EntryAbility_label,startWindowIcon:$media:startIcon,startWindowBackground:$color:start_window_background,exported:true}这里最值得关注的是startWindowBackground:$color:start_window_background它没有直接写死颜色值而是引用了资源$color:start_window_background这种写法对视觉一致性非常重要。资源引用让颜色可以统一维护也方便后续做主题适配。base 资源中的启动背景 项目中的基础颜色资源如下{ color: [ {name:start_window_background,value:#FFFFFF} ] }路径是entry/src/main/resources/base/element/color.json这表示默认情况下启动窗口背景是白色。对于浅色主题应用来说白色启动背景很常见。它可以让应用启动时看起来干净、轻量也不会和系统浅色环境冲突。dark 资源中的启动背景 项目还配置了深色资源{ color: [ {name:start_window_background,value:#000000} ] }路径是entry/src/main/resources/dark/element/color.json这说明当前项目已经具备深色资源分层的基础。浅色模式使用白色启动背景深色资源中对应黑色启动背景。需要注意的是当前项目只是配置了启动背景资源还没有完成完整的深色模式 UI 适配。例如首页文字、卡片、导航栏、内容区颜色都还没有系统化设计。因此文章中更准确的说法是项目已经具备启动窗口和深色资源分层基础而不是已经完成完整深色模式。EntryAbility 中的颜色模式设置 ⚙️项目的EntryAbility.ets中还有一段颜色模式相关代码this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET);这段代码位于onCreateonCreate(want: Want, launchParam: AbilityConstant.LaunchParam):void{try{this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET); }catch(err) { hilog.error(DOMAIN,testTag,Failed to set colorMode. Cause: %{public}s, JSON.stringify(err)); } hilog.info(DOMAIN,testTag,%{public}s,Ability onCreate); }当前设置没有强制指定浅色或深色而是保持未设置状态。这样做适合作为基础工程起点后续可以根据产品需求决定跟随系统主题。应用内提供主题切换。固定浅色模式。固定深色模式。当前项目没有实现主题切换入口所以不要写成“已支持应用内主题切换”。真实情况是项目保留了颜色模式设置位置并配置了基础资源。为什么这属于高端精致✨很多人理解“高端精致”时会先想到大面积视觉设计。但在真实开发中精致感首先来自一致性。启动页如果是白屏闪一下首页又突然切成深色会显得割裂。启动背景、应用主题、首页背景如果能保持一致用户感知会更自然。当前项目中启动背景走资源引用。base 和 dark 分别定义颜色。Ability 中有颜色模式配置入口。首页使用资源化字体大小。这些都是向精致体验靠近的基础能力。后续如何继续优化基于当前项目可以继续做以下优化增加页面背景色资源。增加文本主色、辅助色资源。为暗色模式配置对应文本颜色。首页不要只依赖启动背景而是使用完整页面背景。将卡片、导航栏、按钮颜色统一资源化。例如后续可以把资源设计成page_background text_primary text_secondary card_background brand_primary divider_color这里只是资源命名建议不是当前项目已有内容。当前项目文章可写重点 ✅为了保证真实性写这篇文章时可以明确强调当前项目已经具备startWindowBackground启动背景配置。base资源中的浅色启动背景。dark资源中的深色启动背景。EntryAbility中的颜色模式设置位置。当前项目尚未完成完整深色模式页面设计。应用内主题切换。多组件颜色 token 体系。沉浸式导航栏视觉。这样写既真实也能体现后续优化方向。总结 这篇文章对应“四大主题”中的高端精致。当前项目虽然是基础应用但已经有启动窗口背景、资源引用、明暗资源目录和颜色模式设置入口。它们不算炫技却是应用视觉体验稳定的基础。真正精致的 OpenHarmony 应用不应该只在首页做视觉效果也应该从启动瞬间开始保持一致。启动页、资源分层和主题策略是用户感知体验的一部分。参考资料HarmonyOS 官方文档资源分类与资源引用HarmonyOS 官方文档模块配置文件HarmonyOS 官方文档应用颜色模式当前项目文件module.json5、color.json、EntryAbility.ets