鸿蒙PC版真机运行——开源鸿蒙原生开发案例《难忘存款》

在这里插入图片描述

一、背景

在现代数字生活中,金融类应用已经成为我们日常生活中不可或缺的一部分。无论是银行账户管理、理财产品购买,还是小额存款记录,用户都希望在安全、快速、直观的界面中完成操作。然而,开发一款高质量的桌面端金融应用并非易事,它不仅要求良好的界面交互体验,还要求数据处理准确、响应迅速,并且易于维护和扩展。

开源鸿蒙(OpenHarmony)作为一个开源的分布式操作系统,近年来在 PC、IoT 和移动设备端逐步完善其生态。与传统操作系统不同,开源鸿蒙的原生开发框架强调分布式特性、响应式界面和轻量级组件化开发。开发者可以使用 ArkTS(Ark TypeScript)语言,通过声明式组件和状态管理快速构建功能丰富的应用,同时兼具跨设备适配能力。

本案例《难忘存款》旨在通过一个简单的存款界面演示,展示开源鸿蒙在 PC 端的开发能力和实际效果。该应用核心功能是允许用户输入存款金额并更新账户余额,同时通过直观的界面反馈操作结果。虽然功能看似简单,但通过此案例可以深入理解开源鸿蒙在组件布局、状态管理、事件处理和界面渲染方面的设计理念。


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、开源鸿蒙简介

开源鸿蒙(OpenHarmony)是华为推出的开源操作系统,其核心目标是实现跨终端、分布式的统一开发平台。它提供了完整的原生开发框架,包括:

  1. ArkTS 语言支持:与 TypeScript 类似,但针对分布式和界面声明式开发进行了优化。
  2. 组件化 UI 构建:通过声明式组件(如 Column、Row、Text、TextInput、Button)实现灵活的布局与样式控制。
  3. 状态管理:使用 @State 修饰符管理界面状态,实现界面与数据的自动绑定。
  4. 事件与交互机制:通过事件回调函数(如 onClick、onChange)处理用户输入与界面更新。
  5. 分布式特性:应用可适配多种设备屏幕,实现统一的跨端体验。

相比于传统的桌面开发技术(如 Qt、WPF 或 Electron),开源鸿蒙原生开发框架具有以下优势:

  • 轻量级:框架本身非常轻量,不依赖庞大的运行时环境。
  • 响应式:数据变化会自动更新界面,无需手动操作 DOM 或控件刷新。
  • 跨设备:同一套代码可以运行在 PC、平板和 IoT 设备上。
  • 开源与社区活跃:开发者可以直接参与内核和组件开发,提升定制化能力。

因此,通过开源鸿蒙开发桌面应用,不仅可以体验现代前端开发模式,还能为分布式应用提供天然支持。


在这里插入图片描述

三、核心代码解析

本案例的核心文件为 DepositPage.ets。以下是代码解析和设计思路。
在这里插入图片描述

1. 组件与状态定义

@Entry
@Component
struct DepositPage {
  @State balance: number = 1000.00; // 初始余额
  @State depositAmount: string = '';
  • @Entry 标记该页面为应用入口页面。

  • @Component 表示这是一个组件,可以包含 UI 布局和逻辑。

  • @State 用于声明状态变量:

    • balance:当前账户余额,初始值 1000.00 元。
    • depositAmount:存款输入框的值,类型为字符串。

状态变量的特点是 响应式:一旦状态发生变化,绑定该状态的界面组件会自动重新渲染,无需手动刷新。


2. 页面布局构建

  build() {
    Column() {
      Text('难忘存款')
        .fontSize(24)
        .fontWeight(FontWeight.Bold)
        .margin({ bottom: 30 })
  • Column:垂直布局容器,用于将子组件从上到下排列。
  • Text:文本组件,显示页面标题。
  • fontSizefontWeightmargin:控制字体大小、加粗和外边距。

这一部分通过垂直布局实现界面整体层次分明,同时保持标题突出。


3. 当前余额显示

      Row() {
        Text('当前余额:')
          .fontSize(18)
        Text(`${this.balance.toFixed(2)}`)
          .fontSize(18)
          .fontColor('#007DFF')
      }
      .margin({ bottom: 40 })
  • Row:水平布局容器,用于显示“当前余额:xxx 元”的信息。
  • this.balance.toFixed(2):将余额格式化为两位小数。
  • fontColor('#007DFF'):设置余额数字为蓝色,增强视觉辨识度。

通过 Row + Text 组合,实现余额信息的整洁展示。


4. 存款输入框

      TextInput({
        placeholder: '请输入存款金额',
        text: this.depositAmount
      })
        .type(InputType.Number)
        .onChange((value: string) => {
          this.depositAmount = value;
        })
        .width('80%')
        .height(50)
        .borderRadius(8)
        .backgroundColor('#F5F5F5')
        .margin({ bottom: 20 })
  • TextInput:输入组件,用于接受用户存款金额。
  • placeholder:提示用户输入。
  • text: this.depositAmount:绑定状态变量,实现双向数据绑定。
  • type(InputType.Number):限定输入类型为数字。
  • onChange 回调:输入变化时更新状态。
  • widthheightborderRadiusbackgroundColor:设置输入框样式。

这一设计确保用户输入受控,并且界面美观、操作直观。


5. 存入按钮与交互逻辑

      Button('存入')
        .width('80%')
        .height(50)
        .fontSize(18)
        .onClick(() => {
          if (this.depositAmount === '') {
            promptAction.showToast({ message: '请输入金额' });
            return;
          }

          const amount = parseFloat(this.depositAmount);
          if (isNaN(amount) || amount <= 0) {
            promptAction.showToast({ message: '请输入有效的金额' });
            return;
          }

          this.balance += amount;
          this.depositAmount = ''; // 清空输入框
          promptAction.showToast({ message: `成功存入 ${amount.toFixed(2)}` });
        })
  • Button('存入'):按钮组件,点击后执行存款逻辑。

  • 验证逻辑:

    1. 输入为空 → 提示用户输入金额。
    2. 输入非法或非正数 → 提示输入有效金额。
  • 成功存款后:

    • 更新余额状态变量 balance
    • 清空输入框 depositAmount
    • 使用 promptAction.showToast 弹出提示。

通过按钮交互逻辑,将状态管理、数据验证和用户提示结合,实现完整的存款功能。


6. 页面整体样式

    .width('100%')
    .height('100%')
    .padding(20)
    .justifyContent(FlexAlign.Center)
    .backgroundColor('#FFFFFF')
  }
}
  • 页面宽高填满父容器。
  • padding(20):整体内边距。
  • justifyContent(FlexAlign.Center):垂直居中。
  • backgroundColor('#FFFFFF'):背景白色,简洁明了。

通过整体布局控制,实现舒适的用户体验。


四、运行效果

在开源鸿蒙 PC 真机上运行《难忘存款》应用,界面和交互效果直观:

  1. 界面布局清晰

    • 页面标题居中显示。
    • 当前余额数字突出显示,蓝色醒目。
    • 输入框和按钮大小适中,操作流畅。
  2. 状态响应及时

    • 输入金额后点击“存入”,余额立即更新。
    • 输入非法或为空时,系统弹出提示,避免错误操作。
  3. 用户体验友好

    • 输入框支持数字键盘,提高输入效率。
    • 成功提示信息明确,用户操作反馈及时。
  4. 跨端运行稳定

    • 同一套代码可在 PC 端和其他鸿蒙设备上运行。
    • 界面自适应屏幕,无需额外适配。

综合来看,应用实现了小而美、操作直观、界面响应迅速的设计目标,充分体现开源鸿蒙原生开发框架的优势。


在这里插入图片描述

五、心得与总结

通过本案例开发《难忘存款》,可以总结出几个关键心得:

1. 状态管理与响应式界面

开源鸿蒙的 @State 修饰符和响应式绑定机制,让界面与数据保持同步成为可能。开发者无需手动刷新界面,只需操作状态变量,界面自动更新。这种设计大幅降低了 UI 逻辑复杂度,提高开发效率。

2. 组件化开发模式

Column、Row、Text、TextInput、Button 等基础组件提供了高复用性和灵活布局能力。开发者可以像搭积木一样组合界面元素,实现复杂界面,同时保证代码简洁和可维护性。

3. 交互逻辑清晰

通过事件回调函数处理用户操作,逻辑集中在组件内部,减少了跨模块依赖。存款逻辑验证输入、更新余额、清空输入框和提示用户,都在单个 Button onClick 回调中完成,易于理解和调试。

4. UI 美观且易于扩展

  • 当前设计简洁明了,背景白色,按钮和输入框大小合适。
  • 可以轻松扩展功能,例如添加取款功能、交易记录或账户历史。
  • 可进一步接入数据库或云端,实现持久化存储和多设备同步。

5. 开源鸿蒙优势体现

  • 开源鸿蒙框架轻量、跨端、响应式,适合桌面和移动应用开发。
  • ArkTS 语言语法简洁,易于学习和上手。
  • 社区活跃,提供丰富示例和组件库,开发者可以快速实现功能。

六、扩展思路与建议

在《难忘存款》的基础上,可以进行以下扩展:

  1. 取款功能

    • 增加“取出”按钮。
    • 校验余额是否足够。
    • 更新状态变量,实现余额减少。
  2. 交易记录

    • 使用数组保存每笔存款记录。
    • 界面增加 ListView 展示历史交易。
  3. 账户安全

    • 添加密码或生物识别验证。
    • 防止非法操作和数据泄露。
  4. 分布式数据同步

    • 利用开源鸿蒙的分布式能力,实现多设备同步。
    • 例如在 PC 端存款,手机端余额即时更新。
  5. 美化界面

    • 增加图标、动画效果。
    • 使用主题色和渐变色,使界面更现代化。

七、总结

《难忘存款》案例虽小,却充分展示了开源鸿蒙原生开发的核心能力:

  • 快速开发:通过组件化和状态管理,开发周期短。
  • 响应式设计:数据变化即时更新界面。
  • 跨设备适配:同一套代码可运行在 PC、移动端和 IoT 设备。
  • 易于扩展:可在现有基础上增加更多金融功能或交互效果。

通过实践本案例,开发者可以快速掌握开源鸿蒙在 PC 端的开发思路,为更复杂的金融、管理或生活类应用开发奠定基础。未来,随着开源鸿蒙生态的不断完善,这类轻量、高效、跨端的原生应用开发模式将会成为主流,提供更优质的用户体验。

欢迎加入开源鸿蒙PC社区:https://harmonypc.csdn.net/

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐