关键词:需求管理、Stage 架构、UI/状态、质量与性能、发布清单、HMOS 代码工坊APP等
适读人群:想将 Demo 转变为可发布的 HarmonyOS 工具类应用开发者等

⏩ 0. 引言:从零开始的开发旅程

当我决定从零开始开发一款 HarmonyOS 工具类应用 时,我面临的不仅是技术栈的转换,还有应用架构、UI设计以及性能优化的全方位挑战。这款工具类应用的核心需求是提供一个 截图标注工具,支持截图、标注、保存和分享功能,目标是在手机、平板以及 PC 等多设备上无缝运行。

刚开始时,我尝试着以 React 思维 来组织项目架构,但很快我发现,HarmonyOS 提供了与传统开发模式不同的能力模块化和系统架构。幸运的是,在整个开发过程中,我借助了 HMOS 代码工坊 App 提供的 开源代码、最佳实践示例应用,帮助我在短时间内理清了开发思路,并加速了项目的开发进程。

本文将详细分享我从 需求拆解架构设计,再到 上线复盘 的全过程,同时结合 HMOS 代码工坊 App 提供的技术资源,帮助你在 HarmonyOS 开发中少走弯路,少踩坑。

⏩ 1. 需求拆解:从功能到可交付的项目

1.1 需求分析:功能与体验的平衡

对于一款截图标注工具来说,简洁性高效性 是最重要的需求。用户需要能够快速截取屏幕并进行标注,同时操作界面要简洁、直观,避免繁琐的步骤。在功能方面,我列出了以下几个主要模块:

  • 截图功能:用户可以在应用内进行屏幕截图,并将截图保存到本地。
  • 标注功能:支持多种标注工具(如箭头、矩形、文本框等),用户能够调整标注的颜色、大小、透明度等属性。
  • 保存与分享功能:标注完成后,用户可以将图片保存到本地,并通过系统的分享接口分享给其他应用。
  • 多设备适配:保证在不同设备(手机、平板、PC)上有一致的用户体验。

1.2 用户体验与界面设计

用户体验是工具类应用的核心,我特别重视 易用性流畅度。界面上不应该有冗余的功能,按钮和操作步骤要尽量减少,用户可以在最短时间内完成任务。具体来说,应用的设计需要保证:

  • 简洁的 UI:每个界面只保留最核心的功能,避免过多的操作层级。
  • 快速响应:确保用户的每个操作都能即时反馈,并避免卡顿。
  • 多设备兼容性:确保应用在不同设备上都有一致的视觉效果和操作体验。

⏩ 2. 架构设计:从 Stage 架构到 UI 层实现

2.1 Stage 架构与 UIAbility:模块化的能力划分

HarmonyOS 中,架构设计是关键的一步,特别是在实现 多设备支持 时。相比于传统的 React 开发,HarmonyOS 强调 UIAbilityStage 模块化设计。在我开始构建应用时,我将整个应用划分为以下几个 StageUIAbility 模块:

  • 主界面 Stage:负责应用的首页和菜单展示。
  • 截图 Stage:负责屏幕截图和保存。
  • 标注 Stage:负责标注操作和编辑界面。
  • 保存与分享 Stage:提供文件保存和分享功能。

每个 UIAbility 管理一个功能模块,而 Stage 则承载整个应用的能力和页面切换,确保了应用的 功能独立性模块可复用性

UIAbility 设计:

@Entry
@Component
struct ScreenshotAbility {
  @State screenshot: Image = null;

  captureScreen() {
    // 触发截图
    this.screenshot = captureScreen();
  }

  build() {
    Column() {
      Button('Capture Screen').onClick(() => this.captureScreen());
      Image(this.screenshot).width(300).height(200);
    }
  }
}

Stage 设计:

@Entry
@Component
struct MainPage {
  build() {
    Column() {
      Text('Welcome to Screenshot Tool').fontSize(22);
      Button('Start Screenshot').onClick(() => {
        // 进入截图 Stage
        navigateTo('screenshot');
      });
    }
  }
}

通过将 功能模块化,每个模块都可以独立进行开发、测试和维护,同时也能根据不同设备进行灵活适配。

当你涉及到相关组件开发时,你可以直接选择对应的组件,甚至可一键拷贝代码,非常的方便:

⏩ 3. UI 与状态管理:简洁、高效的界面设计

3.1 设计原则:简洁与流畅

在工具类应用中,UI 设计要强调 简洁性易用性。在整个应用中,我选择将所有功能集中在 底部菜单栏弹出工具栏 中,避免复杂的页面切换。每个按钮和操作都尽量保持最小化,确保用户能够快速找到并使用工具。

UI 组件实现:

@Component
struct ToolsBar {
  @State selectedTool: string = 'pen'; // 默认工具为笔

  build() {
    Column() {
      Row() {
        Button('Pen').onClick(() => this.selectedTool = 'pen');
        Button('Rectangle').onClick(() => this.selectedTool = 'rectangle');
        Button('Text').onClick(() => this.selectedTool = 'text');
      }
      Text(`Selected Tool: ${this.selectedTool}`);
    }
  }
}

3.2 状态管理:通过 @State 管理工具状态

ArkTS 中,状态通过 @State 来进行声明,所有的 UI 更新都会自动绑定到相应的状态。这里我通过 @State 来管理 选中的工具(例如笔、矩形、文本框),并确保每个工具的切换都能及时更新 UI。

当然,你也可以直接参考及专研该APP的源码:

⏩ 4. 性能优化与多设备适配

4.1 性能优化

为了确保截图和标注功能的流畅性,我在应用中加入了以下几项优化:

  • 图片压缩:对于大尺寸的截图,我使用 图片压缩 技术,减少内存占用,提高加载速度。
  • 懒加载:对于高频使用的组件,使用 懒加载 技术,避免应用启动时加载过多资源,提升启动速度。

性能优化示例

// 图片压缩示例
async function compressImage(image: Image): Promise<Image> {
  const compressed = await compress(image);
  return compressed;
}

4.2 多设备适配

在进行多设备适配时,HMOS 代码工坊 中的 示例代码 给了我很大的帮助。例如,官方提供了适配 手机平板PC 的布局组件和样式,使我能够通过简单的断点调整,实现不同设备的自适应布局。

多设备适配示例

const BREAKPOINT_TABLET = 600;
const BREAKPOINT_PC = 1024;

@Builder
export function ResponsiveLayout(content: () => void) {
  Column() {
    content()
  }
  .width('100%')
  .padding({ left: 16, right: 16 })
  .constraintSize({ minWidth: 320, maxWidth: px2vp(1280) });  // 自适应屏幕尺寸
}

⏩ 5. 上线与复盘:从开发到发布

5.1 上线准备

在完成开发后,我开始准备应用的上线工作。主要的准备工作包括:

  • 权限申请:确保应用的 存储访问屏幕截图权限 已经获得用户授权。
  • 隐私合规:确保应用不会收集任何用户的个人隐私数据。
  • 应用商店提交:准备应用的截图、描述以及上传应用包。

5.2 总结与教训

通过这次开发,我不仅实现了一个功能完整的工具类应用,还深刻理解了 HarmonyOS 的开发模式,特别是在 多设备适配分布式能力 方面。HMOS 代码工坊 App 给了我很大的帮助,它提供了许多高质量的示例代码,帮助我在开发中少走弯路,快速提高了开发效率。

⏩ 6. 结语:用工具加速开发,让迁移更轻松

通过这次项目开发,我不仅成功地将一个简单的 Demo 应用转化为可上线的产品,还在开发过程中学到了很多 HarmonyOS 特有的技巧与方法。特别是通过 HMOS 代码工坊,我能够快速获取官方的示例代码和最佳实践,减少了大量摸索的时间,让我能够更专注于业务逻辑的实现。

如果你也在开发 HarmonyOS 应用,我强烈推荐你充分利用 HMOS 代码工坊 App,它将帮助你更高效地解决问题,提升开发效率。

参考与延伸

如何下载HMOS代码工坊:

  • 打开华为应用市场,搜索"HMOS代码工坊"下载安装,手机端需满足HarmonyOS 5.1.0 Release及以上。
      

开源地址:

加入社区:

-End-

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐