Open Harmony 高端精致:从 Hello World 到 ArkUI 沉浸式页面设计 ✨

前言 🌟

“高端精致”不是简单加渐变、加阴影、加动画。对于 OpenHarmony / HarmonyOS 应用来说,精致体验首先来自清晰的页面结构、稳定的状态驱动、合理的资源管理和符合系统风格的交互反馈。

当前项目的首页还处于基础模板状态:

entry/src/main/ets/pages/Index.ets

页面只展示了一段文字,点击后从 Hello World 变成 Welcome。这看起来很简单,但它已经包含 ArkUI 页面开发中几个关键基础:

  1. @Entry
  2. @Component
  3. @State
  4. build()
  5. 声明式 UI
  6. 点击事件驱动状态变化

本文基于这个真实页面,讨论如何从基础页面出发,逐步走向更精致的沉浸式页面体验。

当前首页代码 📱

项目中的首页代码如下:

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  build() {
    RelativeContainer() {
      Text(this.message)
        .id('HelloWorld')
        .fontSize($r('app.float.page_text_font_size'))
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
        .onClick(() => {
          this.message = 'Welcome';
        })
    }
    .height('100%')
    .width('100%')
  }
}

这段代码没有复杂业务,但结构完整。它是一个很适合用来讲 ArkUI 入门和页面升级的起点。

声明式 UI 的核心:状态驱动视图 ⚙️

当前页面中最关键的一行是:

@State message: string = 'Hello World';

message 是页面状态。页面中的文本组件读取它:

Text(this.message)

点击文本时修改状态:

.onClick(() => {
  this.message = 'Welcome';
})

状态变化后,页面显示内容随之变化。这就是声明式 UI 的基本思想:开发者描述“状态是什么,界面就长什么样”,而不是手动查找控件再修改控件。

这种模式非常适合后续扩展。例如把 message 换成:

  1. 当前选中的底部 Tab。
  2. 当前页面标题。
  3. 当前搜索关键词。
  4. 当前内容流加载状态。
  5. 当前卡片是否被点赞。

这些都可以沿用同一套状态驱动思路。

RelativeContainer 与居中布局 🧩

当前页面使用了 RelativeContainer

RelativeContainer() {
  Text(this.message)
    .alignRules({
      center: { anchor: '__container__', align: VerticalAlign.Center },
      middle: { anchor: '__container__', align: HorizontalAlign.Center }
    })
}
.height('100%')
.width('100%')

这里通过 alignRules 将文本放在容器中央。对于模板页面来说,这是很直观的布局方式。

如果后续要升级为沉浸式页面,可以继续保留“页面根容器占满全屏”的思路,然后在内部增加:

  1. 顶部悬浮导航栏。
  2. 内容区域。
  3. 底部操作栏。
  4. 卡片化信息区。
  5. 明暗主题适配。

注意,当前项目还没有实现这些 UI,所以文章中应该写成“升级方向”,不能写成“已经实现”。

资源化字体大小 🎨

当前代码没有硬编码字体大小,而是使用了资源引用:

.fontSize($r('app.float.page_text_font_size'))

这比直接写:

.fontSize(24)

更利于维护。因为字体大小被放在资源文件里,后续如果需要统一调整,可以改资源,不必逐个页面搜索。

精致体验往往不是靠某一个大功能,而是靠这些小细节累积出来的:

  1. 字体使用资源管理。
  2. 颜色使用资源管理。
  3. 明暗模式分目录适配。
  4. 组件间距统一。
  5. 交互状态一致。

当前项目已经有资源目录结构,这是继续做视觉升级的基础。

高端精致可以怎样落地?✨

结合当前项目,比较真实的升级路线是:

第一步,保留 Index.ets 的入口结构,将单文本页面升级为首页框架。

第二步,把页面拆成几个区域:

  1. 顶部导航区。
  2. 内容展示区。
  3. 底部导航区。

第三步,增加视觉层次:

  1. 页面背景色。
  2. 卡片容器。
  3. 标题与辅助文字层级。
  4. 合理留白。

第四步,再考虑沉浸式效果:

  1. 顶部栏半透明。
  2. 内容滚动时导航栏状态变化。
  3. 卡片点击反馈。
  4. 明暗模式适配。

这样做的好处是可控。不会一开始就堆复杂动画,导致页面结构混乱。

和“四大主题”的对应关系 ✅

本文对应的是 高端精致 方向。

但这里要强调真实性:当前项目还没有完成悬浮导航栏、沉浸光感或复杂内容流。它目前具备的是 ArkUI 页面基础和资源化写法。因此最合适的文章角度是:

“从当前基础页面出发,如何逐步设计高端精致的 ArkUI 页面。”

这样既贴合主题,又不会夸大项目现状。

总结 🚀

当前首页虽然只有十几行核心代码,但已经覆盖 ArkUI 页面开发的关键基础:

  1. @Entry 标记入口页面。
  2. @Component 声明组件。
  3. @State 管理页面状态。
  4. RelativeContainer 构建基础布局。
  5. $r() 引用资源。
  6. onClick 实现交互反馈。

如果要做“高端精致”的 OpenHarmony 应用,建议先把这些基础写稳,再逐步扩展页面结构、视觉层级和交互反馈。真正精致的体验,不是浮在表面的装饰,而是从状态、布局、资源和交互中自然生长出来的。

参考资料:

  • HarmonyOS 官方文档:ArkUI 声明式开发
  • HarmonyOS 官方文档:状态管理
  • HarmonyOS 官方文档:RelativeContainer 布局
  • 当前项目文件:Index.ets

img

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐