0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙ArkUI开发实战:制作一个【简单计数器】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-04-08 18:05 次阅读

构建第一个页面

  1. 使用文本组件
    工程同步完成后,在 Project 窗口,点击 entry > src > main > ets > pages ,打开 Index.ets 文件,可以看到页面由 RowColumnText 组件组成。 index.ets 文件的示例如下:

    @Entry @Component struct Index {
    
      @State message: string = 'Hello World'
    
      build() {
        Row() {
          Column() {
            Text(this.message)
              .fontSize(50)
              .fontWeight(FontWeight.Bold)
          }
          .width('100%')
        }
        .height('100%')
      }
    }
    

    @Entry 修饰符表示一个页面的入口,它需要在 main_pages.json 配置才可以在设备上正常显示, @Component 修饰符表示 Index 是一个组件, @State 是一个状态标识符,当它修饰的变量值改变时ArkUI开发框架会调用 build() 方法进行页面的刷新。

  2. 添加按钮
    在默认页面基础上,我们添加一个 Button 组件,作为按钮接受用户点击的动作,从而实现计数器自增操作。 " index.ets " 文件的示例如下:

    @Entry @Component struct Index {
    
      @State count: number = 0;                      // 状态数据
    
      build() {
        Stack({alignContent: Alignment.BottomEnd}) { // 堆叠式布局
          Text(this.count.toString())                // 显示文本
            .fontSize(50)                            // 文字大小
            .margin(50)                              // 外边距
            .size({width: '100%', height: '100%'})   // 控件大小
    
          Button('+')                                // 显示一个+按钮
            .size({width: 80, height: 80})           // 按钮大小
            .fontSize(50)                            // 按钮文字大小
            .onClick(() = > {                         // 按钮点击事件
              this.count++;                          // count累加,触发build()方法回调
            })
            .margin(50)
        }
        .width('100%')
        .height('100%')
      }
    }
    
  3. 打开预览器
    在编辑窗口右上角的侧边工具栏,点击 Previewer ,然后点击页面加号按钮,页面运行效果如下图所示:
    2_1_3_1
    学习文档参考:[docs.qq.com/doc/DUmN4VVhBd3NxdExK]

搜狗高速浏览器截图20240326151547.png

根据运行截图,我们点击了加号按钮,触发按钮的 onClick 事件回调,由于在回调里执行了 count++ 操作导致了 count 的值发生了改变,又因为 count 被 @State 修饰符修饰,所以ArkUI开发框架就会重新调用 build() 方法更新各组件的属性值, Text 组件会更新 count 的值,然后页面刷新,计数器的功能就实现了。

页面的构建流程

读者可能会对上述示例的页面刷新过程感兴趣,笔者简单介绍一下,上述示例的页面刷新过程可以分为两个过程,一个是页面渲染完毕没有点击按钮过程,另一个是点击点击按钮后页面数据变化过程,笔者分别介绍一下这两个过程:

  1. 页面初次显示过程
    ①、index.ets 源代码通过编译工具链编译为带有类型标志的目标文件,同时也包含了如何创建UI结构信息的指令流。
    ②、通过跨语言调用并生成了 C++ 层面的 Component 树(UI描述层)。
    ③、通过 Component 树进一步生成 Element 树。 Element 是 Component 的实例,表示一个具体的组件节点,它形成的 Element 树负责维持界面在整个运行时的树形结构,方便计算更新时的局部更新算法等。
    ④、对于每个可显示的 Element 都会为其创建对应的 RenderNode 。 RenderNode 负责一个节点的显示信息,它形成的 Render 树维护着整个界面渲染需要用到的信息,包括位置、大小、绘制命令等。后续的布局、绘制都是在 Render 树上进行的。
    ⑤、实现真正的渲染并显示绘制结果。
  2. 点击按钮显示过程
    ⑥、点击屏幕,事件传递到组件上,组件的 onClick 事件方法被触发执行。
    ⑦、由于 onClick 事件方法中 @State 修饰的变量值改变了,相应的 getter / setting 函数会被触发。
    ⑧、状态管理模块定位出与之关联的UI组件。
    ⑨、状态管理模块更新相应的 Element 树的信息。
    ⑩、状态管理模块更新相应的 RenderNode 树的渲染信息。
    ⑪、刷新界面并显示绘制结果。

以上页面整体构建流程如下图所示:

2_1_4

小结

通过简单计数器示例,读者先了解一下 OpenHarmony 应用的组件、页面布局,点击事件以及 @State 修饰符的作用,最后给简单介绍了一下 OpenHarmony 的页面构建流程。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计数器
    +关注

    关注

    32

    文章

    2126

    浏览量

    93009
  • 鸿蒙
    +关注

    关注

    55

    文章

    1641

    浏览量

    42123
  • OpenHarmony
    +关注

    关注

    23

    文章

    3322

    浏览量

    15161
收藏 人收藏

    评论

    相关推荐

    鸿蒙ArkUI开发学习:【渲染控制语法】

    ArkUI开发框架是一套构建 HarmonyOS / OpenHarmony 应用界面的声明式UI开发框架,它支持程序使用 `if/else` 条件渲染, `ForEach` 循环渲染以及 `LazyForEach` 懒加载渲染
    的头像 发表于 04-09 16:40 429次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>ArkUI</b><b class='flag-5'>开发</b>学习:【渲染控制语法】

    鸿蒙ArkUI开发实战:eTS版【笑话app】

    制作一款笑话app,使用ArkUI
    的头像 发表于 03-25 16:04 193次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>ArkUI</b><b class='flag-5'>开发</b><b class='flag-5'>实战</b>:eTS版【笑话app】

    鸿蒙实战项目开发:【短信服务】

    环境搭建 ​ 《鸿蒙开发基础》 ArkTS语言 安装DevEco Studio 运用你的第一个ArkTS应用 ArkUI声明式UI开发 .…
    发表于 03-03 21:29

    鸿蒙这么大声势,为何迟迟看不见岗位?最新数据来了

    基础》 ArkTS语言 安装DevEco Studio 运用你的第一个ArkTS应用 ArkUI声明式UI开发 .…… 《鸿蒙开发进阶》
    发表于 02-29 20:53

    计数器怎么用 计数器的作用有哪些

    计数器是一种被广泛应用于各个领域的实用工具,在我们的日常生活中随处可见。无论是进行时间统计,协助工作任务的完成,还是用于科学研究和编程技术,在各个领域都起到了重要的作用。本文将详细介绍计数器
    的头像 发表于 02-03 10:04 1254次阅读

    鸿蒙ArkUI开发-Video组件的使用

    以视频功能为例,在应用开发过程中,我们需要通过ArkUI提供的Video组件为应用增加基础的视频播放功能。借助Video组件,我们可以实现视频的播放功能并控制其播放状态。常见的视频播放场景包括观看网络上的较为流行的短视频,也包括查看我们存储在本地的视频内容。
    的头像 发表于 01-23 16:59 621次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>ArkUI</b><b class='flag-5'>开发</b>-Video组件的使用

    鸿蒙ArkUI开发-Tabs组件的使用

    鸿蒙ArkUI开发-Tabs组件的使用
    的头像 发表于 01-19 16:01 441次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>ArkUI</b><b class='flag-5'>开发</b>-Tabs组件的使用

    鸿蒙开发-ArkUI框架实战【日历应用 】

    对于刚刚接触OpenHarmony应用开发开发者,最快的入门方式就是开发简单的应用,下面记
    发表于 01-17 21:37

    免费学习鸿蒙(HarmonyOS)开发些地址分享

    课|应用开发视频教程学习|HarmonyOS应用开发官网 官网是些比较基础性的东西,学起来可能没那么好理解。下面再推荐B站博主:Ha
    发表于 01-12 20:48

    同步计数器和异步计数器各有什么特点

    同步计数器和异步计数器是两种常见的数据结构,它们都用于控制对共享资源的访问。它们的主要作用是实现多个线程之间的同步和并发控制。尽管它们都被用于同步的目的,但它们有很多不同的特点和用例。 同步计数器
    的头像 发表于 12-15 10:49 667次阅读

    4017计数器的工作原理

    中,我们将详细介绍4017计数器的工作原理。 4017计数器的内部结构非常复杂,但核心的原理相对简单。它包含一个时钟输入引脚(CLK),一个复位输入引脚(RESET),以及10个输出引脚(Q0-Q9)。时钟输入引脚接收来自外部时
    的头像 发表于 12-15 09:24 1267次阅读

    计数器电路原理解析

    在学习嵌入式系统的过程中,定时器有关内容的学习是必不可少的一个环节。定时器定时功能的实现,最主要的还是靠其内部的计数器。那么,计数器是如何实现计数功能的呢?接下来就来简单介绍一下
    的头像 发表于 09-25 14:18 1551次阅读
    <b class='flag-5'>计数器</b>电路原理解析

    使用Arduino制作简单的频率计数器

    电子发烧友网站提供《使用Arduino制作简单的频率计数器.zip》资料免费下载
    发表于 07-12 10:40 4次下载
    使用Arduino<b class='flag-5'>制作</b><b class='flag-5'>简单</b>的频率<b class='flag-5'>计数器</b>

    计数器在程序中有什么作用

    PLC程序除了梯形图之外,还有FBD功能块作为指令,这种指令一般都有背景DB。   PLC计数器指令可使其对内部程序事件和外部过程事件进行计数。这样就可以节约外部计数器的使用。   每个
    的头像 发表于 07-04 15:57 1014次阅读
    <b class='flag-5'>计数器</b>在程序中有什么作用

    可定制的盖革穆勒计数器制作

    电子发烧友网站提供《可定制的盖革穆勒计数器制作.zip》资料免费下载
    发表于 06-12 10:51 2次下载
    可定制的盖革穆勒<b class='flag-5'>计数器</b><b class='flag-5'>制作</b>