「Mac畅玩鸿蒙与硬件10」鸿蒙开发环境配置篇10 - 项目实战:计数器应用

简介: 本篇将通过一个简单的计数器应用,带你体验鸿蒙开发环境的实际操作流程。本项目主要练习组件的使用、事件响应和状态管理,帮助开发者熟悉基本的应用构建流程。

本篇将通过一个简单的计数器应用,带你体验鸿蒙开发环境的实际操作流程。本项目主要练习组件的使用、事件响应和状态管理,帮助开发者熟悉基本的应用构建流程。

20241027_142524.gif20241027_142524.gif

关键词
  • 计数器应用
  • 组件操作
  • 事件响应
  • 状态管理
  • HarmonyOS 应用开发

一、创建计数器项目

1.1 在 DevEco Studio 中新建项目
  • 打开 DevEco Studio,选择 File > New > Create Project
  • 选择适合的模板,填写项目名称为 CounterApp,确认创建项目。项目结构文件将在 src/main/ets/pages/Index.ets 文件中生成。
1.2 设计 Index.ets 初始代码

Index.ets 文件中,实现简单的界面设计,包括标题、计数器数字显示和两个按钮(“加”和“减”):

// 入口组件定义,用于指定应用的启动页面
@Entry
@Component
struct Index {
   
  // 定义一个状态变量 count,用 @State 修饰符管理其状态变化
  @State count: number = 0;

  // build() 方法构建页面布局和组件
  build() {
   
    // 使用 Column 组件作为垂直布局容器
    Column() {
   
      // 应用标题文本
      Text('计数器应用')
        .fontSize(24) // 设置标题字体大小为 24
        .fontWeight(FontWeight.Bold) // 设置字体为粗体
        .margin({
    top: 20 }) // 顶部边距为 20
        .alignSelf(ItemAlign.Center) // 水平居中对齐

      // 显示当前计数值的文本组件
      Text(this.count.toString()) // 将 count 数值转换为字符串显示
        .fontSize(50) // 设置字体大小为 50
        .fontWeight(FontWeight.Bold) // 字体加粗
        .margin({
    top: 20, bottom: 20 }) // 上下边距分别为 20
        .alignSelf(ItemAlign.Center) // 水平居中对齐

      // 使用 Row 组件实现水平布局,包含“加”和“减”按钮
      Row() {
   
        // "加"按钮,点击后计数值增加
        Button('加') 
          .onClick(() => {
    // 添加点击事件处理函数
            this.count += 1; // 点击时,count 变量加 1
          })
          .fontSize(20) // 设置按钮字体大小为 20
          .width('40%') // 按钮宽度为容器的 40%
          .margin({
    right: 10 }) // 设置右边距为 10

        // "减"按钮,点击后计数值减少
        Button('减') 
          .onClick(() => {
    // 添加点击事件处理函数
            if (this.count > 0) {
    // 限制最小值为 0,避免负数
              this.count -= 1; // 点击时,count 变量减 1
            }
          })
          .fontSize(20) // 设置按钮字体大小为 20
          .width('40%') // 按钮宽度为容器的 40%
          .margin({
    left: 10 }) // 设置左边距为 10
      }
      .justifyContent(FlexAlign.Center) // 水平居中对齐 Row 中的按钮

      // 添加一个“重置”按钮,点击时重置 count 值为 0
      Button('重置') 
        .onClick(() => {
    // 添加点击事件处理函数
          this.count = 0; // 点击时,将 count 变量重置为 0
        })
        .fontSize(20) // 设置按钮字体大小为 20
        .width('100%') // 按钮宽度为容器的 100%
        .margin({
    top: 20 }) // 顶部边距为 20
        .alignSelf(ItemAlign.Center) // 水平居中对齐
    }
    .width('100%') // 设置 Column 容器宽度为 100%
    .height('100%') // 设置 Column 容器高度为 100%
    .padding(20) // 设置内边距为 20
  }
}
1.3 界面说明
  • count 是一个状态变量,显示当前的计数值。
  • 按钮通过 onClick 事件监听点击,分别控制计数器增减。
  • 使用 ColumnRow 组件布局,以保持界面居中和对齐。

二、运行计数器应用

2.1 选择运行设备
  • 在 DevEco Studio 中选择模拟器或连接真实设备。
  • 点击 Run 按钮,应用将在设备上启动,并显示计数器界面。
2.2 操作说明
  • 点击“加”按钮,计数器数值递增。
  • 点击“减”按钮,计数器数值递减。
  • 通过此交互体验,熟悉 @State 状态更新和界面实时刷新效果。

三、增强计数器功能

3.1 添加重置按钮

Row 组件下方,增加一个“重置”按钮,点击时将 count 重置为 0:

Button('重置')
  .onClick(() => {
   
    this.count = 0;
  })
  .fontSize(20)
  .width('100%')
  .margin({
    top: 20 })
  .alignSelf(ItemAlign.Center)
3.2 设置边界条件

count 设置上下限,计数器数值不能小于 0:

Button('减')
  .onClick(() => {
   
    if (this.count > 0) {
   
      this.count -= 1;
    }
  })
  .fontSize(20)
  .width('40%')
  .margin({
    left: 10 })
3.3 添加动态提示

在数值显示下方,增加一个文本提示,显示当前的计数状态:

Text(this.count > 10 ? '计数已达上限' : '')
  .fontSize(16)
  .fontColor(Color.Red)
  .alignSelf(ItemAlign.Center)
  .margin({
    top: 10 })

四、项目结构管理

4.1 创建单独的组件文件

将计数器代码从 Index.ets 文件中提取出来,创建 Counter.ets 文件,以便项目结构清晰,利于维护。

@Component
export struct CounterTest {
   
  @State count: number = 0

  build() {
   
    Column() {
   
      Text('计数器应用')
        .fontSize(24)
        .fontWeight(FontWeight.Bold)
        .margin({
    top: 20 })
        .alignSelf(ItemAlign.Center)

      Text(this.count.toString())
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .margin({
    top: 20, bottom: 20 })
        .alignSelf(ItemAlign.Center)

      Text(this.count > 10 ? '计数已达上限' : '')
        .fontSize(16)
        .fontColor(Color.Red)
        .alignSelf(ItemAlign.Center)
        .margin({
    top: 10 })

      Row() {
   
        Button('加')
          .onClick(() => {
    this.count += 1 })
          .fontSize(20)
          .width('40%')
          .margin({
    right: 10 })

        Button('减')
          .onClick(() => {
    if (this.count > 0) this.count -= 1 })
          .fontSize(20)
          .width('40%')
          .margin({
    left: 10 })
      }
      .justifyContent(FlexAlign.Center)

      Button('重置')
        .onClick(() => {
    this.count = 0 })
        .fontSize(20)
        .width('100%')
        .margin({
    top: 20 })
        .alignSelf(ItemAlign.Center)
    }
  }
}
4.2 在 Index.ets 文件中引用 Counter 组件
import {
    CounterTest } from './Counter'

@Entry
@Component
struct Index {
   
  build() {
   
    Column() {
   
      CounterTest()
    }
    .width('100%')
    .height('100%')
    .padding(20)
  }
}
4.3 代码模块化

通过模块化管理,项目结构更清晰,组件之间的耦合度更低,有助于后期维护和功能拓展。


五、常见开发问题与调试

  1. 状态更新不及时:确保使用 @State 修饰变量,避免状态更改后界面不刷新问题。
  2. 事件未响应:检查 onClick 回调函数是否在按钮组件中正确设置,确保事件能被正确触发。
  3. 布局异常:使用 ColumnRow 等布局组件时,注意 alignSelfjustifyContent 的使用,以保证界面元素正确对齐。

小结

本篇通过计数器项目演示了从界面设计、事件响应到状态管理的完整操作流程,帮助开发者熟悉鸿蒙开发的基础技能。通过组件化和模块化管理,项目结构更加清晰、扩展性更强,为后续开发打下了坚实的基础。


下一篇预告

下一篇将介绍鸿蒙UI组件的基础,带你深入了解 Text 和 Button 组件的详细用法。


上一篇:「Mac畅玩鸿蒙与硬件9」鸿蒙开发环境配置篇9 - 使用 Git 进行版本控制

下一篇:「Mac畅玩鸿蒙与硬件11」鸿蒙UI组件篇1 - Text 和 Button 组件详解


目录
相关文章
|
7天前
|
缓存 搜索推荐 索引
「Mac畅玩鸿蒙与硬件12」鸿蒙UI组件篇2 - Image组件的使用
在鸿蒙应用开发中,Image 组件用于加载和显示图片资源,并提供多种属性来控制图片的显示效果和适配方式。本篇将带你学习如何在鸿蒙应用中加载本地和远程图片、设置图片样式以及实现简单的图片轮播功能。
44 7
「Mac畅玩鸿蒙与硬件12」鸿蒙UI组件篇2 - Image组件的使用
|
7天前
|
存储 调度 数据安全/隐私保护
鸿蒙Flutter实战:13-鸿蒙应用打包上架流程
鸿蒙应用打包上架流程包括创建应用、打包签名和上传应用。首先,在AppGallery Connect中创建项目、APP ID和元服务。接着,使用Deveco进行手动签名,生成.p12和.csr文件,并在AppGallery Connect中上传CSR文件获取证书。最后,配置签名并打包生成.app文件,上传至应用市场。常见问题包括检查签名配置文件是否正确。参考资料:[应用/服务签名](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-signing-V5)。
30 3
鸿蒙Flutter实战:13-鸿蒙应用打包上架流程
|
10天前
|
自然语言处理 开发者
「Mac畅玩鸿蒙与硬件11」鸿蒙 UI 组件篇1 - Text 和 Button 组件详解
本篇将详细介绍鸿蒙应用开发中的 Text 和 Button 组件。通过本篇内容,你将学习如何使用 Text 组件显示文本、格式化文本样式,以及如何使用 Button 组件处理点击事件并自定义样式。掌握这些基本组件的用法将为后续的 UI 开发奠定基础。
35 4
「Mac畅玩鸿蒙与硬件11」鸿蒙 UI 组件篇1 - Text 和 Button 组件详解
|
10天前
|
存储 开发工具 数据安全/隐私保护
「Mac畅玩鸿蒙与硬件9」鸿蒙开发环境配置篇9 - 使用 Git 进行版本控制
在 HarmonyOS 项目开发中,Git 版本控制可以帮助开发者规范地管理代码变更,确保协作流程顺畅。本篇将详细介绍从创建项目、提交代码到 Git 远程仓库,再到修改、推送更新的完整操作流程,重点演示如何使用 Git 和 GitHub 进行身份验证和版本管理。
40 3
「Mac畅玩鸿蒙与硬件9」鸿蒙开发环境配置篇9 - 使用 Git 进行版本控制
|
4天前
|
监控 UED 开发者
鸿蒙next版开发:订阅应用事件(ArkTS)
在HarmonyOS 5.0中,ArkTS引入了强大的应用事件订阅机制,允许开发者订阅和处理系统或应用级别的事件,这对于监控应用行为、优化用户体验和进行性能分析至关重要。本文详细介绍了如何在ArkTS中订阅应用事件,并提供了示例代码,包括导入模块、创建观察者、设置事件参数等步骤。通过这些方法,开发者可以更智能地管理和响应应用事件。
32 11
|
2天前
|
存储 算法 安全
消息认证码(MAC)在物联网发布者中如何应用
消息认证码(MAC)在物联网发布者中的应用主要是为了确保数据的完整性和来源的真实性。通过使用密钥生成的MAC值,可以验证发送者身份和数据未被篡改,从而提高物联网系统的安全性和可靠性。
|
2月前
|
iOS开发 MacOS Windows
Mac air使用Boot Camp安装win10 ,拷贝 Windows 文件时出错
Mac air使用Boot Camp安装win10 ,拷贝 Windows 文件时出错
|
10天前
|
开发工具 iOS开发 开发者
「Mac畅玩鸿蒙与硬件2」鸿蒙开发环境配置篇2 - 在 Mac 上安装 DevEco Studio
本篇将专注于如何在 Mac 上安装鸿蒙开发工具 DevEco Studio,确保开发环境能够顺利搭建。完成安装后,可以正式开始鸿蒙应用的开发工作。
43 1
「Mac畅玩鸿蒙与硬件2」鸿蒙开发环境配置篇2 - 在 Mac 上安装 DevEco Studio
|
1月前
|
机器学习/深度学习 Python
【10月更文挑战第5天】「Mac上学Python 6」入门篇6 - 安装与使用Anaconda
本篇将详细介绍如何在Mac系统上安装和配置Anaconda,如何创建虚拟环境,并学习如何使用 `pip` 和 `conda` 管理Python包,直到成功运行第一个Python程序。通过本篇,您将学会如何高效地使用Anaconda创建和管理虚拟环境,并使用Python开发。
58 4
【10月更文挑战第5天】「Mac上学Python 6」入门篇6 - 安装与使用Anaconda
|
1月前
|
IDE 开发工具 iOS开发
【10月更文挑战第3天】「Mac上学Python 3」入门篇3 - 安装Python与开发环境配置
本篇将详细介绍如何在Mac系统上安装Python,并配置Python开发环境。内容涵盖Python的安装、pip包管理工具的配置与国内镜像源替换、安装与配置PyCharm开发工具,以及通过PyCharm编写并运行第一个Python程序。通过本篇的学习,用户将完成Python开发环境的搭建,为后续的Python编程工作打下基础。
166 2
【10月更文挑战第3天】「Mac上学Python 3」入门篇3 - 安装Python与开发环境配置

热门文章

最新文章