鸿蒙OS应用开发之最简单的程序

news2025/1/11 8:54:49

鸿蒙OS应用开发之最简单的程序

前面介绍怎么样安装鸿蒙应用开发的环境,然后试着运行起来,并安装运行的虚拟机,以及对应9.0版本的API和SDK等软件。这样就具备了基本的开发基础,就可以进入创建应用程序开发了。

在我们起飞之前,先要来理解鸿蒙APP的基本组成,也就是这个APP主要长得怎么样,要对它比较了解。这是学习任何系统应用开发的第一步,统称为Hello World程序。在这里不会例外,我们还是需要通过一个Hello World程序来了解整个开发环境,以及程序的基本组成,然后才能深入去学习开发语言的语法,以及相关的API功能,再在这个基础之上进行客户的需求开发,比如定制一个企业打卡软件,又或者开发一个即时通讯软件等等。

从前面我们学会创建一个Hello World程序,如果还不会,就要回过头去看前面的文章。因为这里会继续前面的内容,看到创建程序如下:

从开发界面来看,左边就是工程文件的树形显示,如果刚从这里来看,是比较复杂的,无论是谁也不能一下子就搞懂它们,所以先放下来,知道它是构成工程文件即可,主要来看右边窗口的文件,在这里显示的是Index.ets文件,这个文件才是我们主要关心的,它是后面修改界面和改变显示内容的关键代码。

如果第一眼看这些代码,也是搞不懂的它的,因为它是一种特殊的方式,与以往的开发语言不一样。因此要先从这个简单的代码开始,我们把每一行代码都来搞懂它。

我们来把它们隐藏起来,就会看到只剩下三行代码:

这三行代码,让我们这种新手看起来,就容易多了。

先看第一行代码@Entry,这行代码是比较奇怪,与一般的C代码或c++代码有差别,主要它是一个@字符开头,这是表示什么意思呢?如果你学习过Python语言,或许就有印象,它是表示一个装饰器的开头,这个装饰器的名称叫做Entry。@Entry表示该自定义组件为入口组件,这里包含了应用程序的入口,也就是应用程序运行之后最先运行的代码就在这里。

接着我们来看第二行代码@Component,从前面分析可知,它也是一个装饰器,这个装饰器的名称叫做Component。@Component表示自定义组件,表示后面这些内容是自己定义的组件,也就是我们自己写的代码,叫做自定义。

装饰器: 用于装饰类、结构、方法以及变量,并赋予其特殊的含义。

在这里定义了一个组件的名称叫做Index,它是一个struct结构体。也就是第三行代码的意义。所以到这里,我们就明白了鸿蒙应用就是一个自定义的组件。struct:自定义组件基于struct实现,struct + 自定义组件名 + {...}的组合构成自定义组件,不能有继承关系。对于struct的实例化,可以省略new。

我们来把这个自定义组件进行展开:

这个结构体里是使用一个大括号包含,里面定义了一个消息变量和一个系统组件build()。先来看消息变量这行:

@State message: string = 'Hello World'

前面使用一个@State来定义,从前面来看 ,只要@开头的就是装饰器,它是一个状态更新的装饰器。@State表示组件中的状态变量,状态变量变化会触发UI刷新。其作用就是当字符串变量string 改变时,就通知界面进行刷新,这样才能实时地查看到字串内容的变化。在这里,把这个变量赋值为'Hello World'字符串。

接着下来,就是build()方法,它是一个系统定义组件的方法,这个方法必须要实现,相当于自定义组件的虚函数,如果不实现这个方法,就会编译失败。它是来自@Component组件里,具体可以查看它的代码和文档。所有声明在build()函数的语言,我们统称为UI描述语言。@Component装饰器仅能装饰struct关键字声明的数据结构。struct被@Component装饰后具备组件化的能力,需要实现build方法描述UI,一个struct只能被一个@Component装饰。

在build()方法里其实只有一行代码,它就是Row()方法。这个也是系统组件的内容,它在这里进行嵌套使用了。Row()表示进行一列显示。在这一列里再进行一行显示,所以定义了Column()方法。

接着下来我们会发现在Row()组件后面带有一对括号,但在括号后面又带有一个属性,如下图:

可以看到有一个句号后面带着height('100%'),这种表示方法叫做链式属性设置,意思就是说Row(){}是返回一个对象,而这个对象就可以设置属性。

属性方法:组件可以通过链式调用配置多项属性,如fontSize()、width()、height()、backgroundColor()等。

在这里height('100%')的意思就是表示这一行占整个屏幕所有高度,就是100%。如果只想占用一半,就可以设置为50%。

设置为100%的显示如下:

如果设置为50%,显示如下:

可以看到整个字符串往上移动了,因为它只占用上面的50%的空间。

到这里,我们就分析这一行显示的代码完成了,接着下来我们来看一下这一行里显示的代码,如下:

      Column() {

        Text(this.message)

          .fontSize(50)

          .fontWeight(FontWeight.Bold)

      }

      .width('100%')

可以仔细地看一下代码,发现Column()组件,也是系统组件,它是表示一列的意思,如果一行里要显示多列,就可以创建多个Column()组件。这个组件也是可以设置它的宽度,通过链式方法.width('100%')来设置。

在一列里使用了Text()组件来输出一串字符串,字符串this.message就是前面定义的字符串Hello World,这里使用this对象来限定了本对象的声明变量。Text()组件后面使用链式表示来设置字体显示大小为50,字体精细为粗体。

到这里,我们就把这个最简单的应用程序分析完成了。现在来总结一下,整个应用程序的结构如下:

装饰器: 用于装饰类、结构、方法以及变量,并赋予其特殊的含义。如上述示例中@Entry、@Component和@State都是装饰器,@Component表示自定义组件,@Entry表示该自定义组件为入口组件,@State表示组件中的状态变量,状态变量变化会触发UI刷新。

UI描述:以声明式的方式来描述UI的结构,例如build()方法中的代码块。

自定义组件:可复用的UI单元,可组合其他组件,如上述被@Component装饰的struct Hello。

系统组件:ArkUI框架中默认内置的基础和容器组件,可直接被开发者调用,比如示例中的Column、Text、Divider。

属性方法:组件可以通过链式调用配置多项属性,如fontSize()、width()、height()、backgroundColor()等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1295167.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java基础系列】Cron表达式入门

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

通过kubeadm方式安装k8s

虚拟机最少是 2 core,master内存最小3G,node内存最小2G. 要求的Docker版本是18.03,如果不是安装的docker ce,版本是过旧的,可以选择删除后重新安装; 也可以重新创建一个虚拟机执行以下命令。 简单方法&am…

解决“使用command+shift+a 总是弹出默认终端”

冲突出现的终端如下 问题原因 MacOS下使用IntelliJ 系列的IDE就是经常遇到这个问题,原因该快捷键与系统的 《在“终端”中搜索man页面索引 》功能的快捷键冲突了,Find Action是一个很高频使用的! 解决方案 把系统《在“终端”中搜索man…

5组10个共50个音频可视化效果PR音乐视频制作模板

我们常常看到的图形跟着音乐跳动,非常有节奏感,那这个是怎么做到的呢?5组10个共50个音频可视化效果PR音乐视频制作模板满足你的制作需求。 PR音乐模板|10个音频可视化视频制作模板05 https://prmuban.com/36704.html 10个音频可视化视频制作…

Python语言求解嵌套列表中的最大元素和

更多资料获取 📚 个人网站:ipengtao.com 在处理嵌套列表时,有时我们需要找到列表中的最大元素以及对应的位置。本文将深入讨论如何使用Python有效地解决这个问题。我们将使用不同的方法,包括递归、列表推导和NumPy库,…

我有才打造私域流量的知识付费小程序平台

在当今数字化时代,知识付费市场正在迅速崛起,而私域流量的概念也日益受到重视。私域流量指的是企业通过自有渠道获取的、能够自由支配的流量,这种流量具有更高的用户粘性和转化率。因此,打造一个基于私域流量的知识付费小程序平台…

VBA_MF系列技术资料1-237

MF系列VBA技术资料 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧,我参考大量的资料,并结合自己的经验总结了这份MF系列VBA技术综合资料,而且开放源码(MF04除外),其中MF01-04属于定…

防水,也不怕水。Mate X5是如何做到让你湿手湿屏也不影响操作的?

相信不少人都碰到过当手机屏幕存在小水珠时,触控变得不灵敏,或者出现“幽灵触屏”,指东打西的情况。 尤其是在洗澡、做饭,或者在户外遇到下雨天气时,如果打湿的手机收到重要聊天消息或者电话,却因为湿屏导…

Hazel引擎学习(十二)

我自己维护引擎的github地址在这里,里面加了不少注释,有需要的可以看看 参考视频链接在这里 Scene类重构 参考:《InsideUE4》GamePlay架构(二)Level和World 目前我的Scene类基本只是给entt的封装,提供了…

【risc-v】易灵思efinix FPGA riscv嵌入式软件源码分享

系列文章目录 分享一些fpga内使用riscv软核的经验,共大家参考。后续内容比较多,会做成一个系列。 本系列会覆盖以下FPGA厂商 易灵思 efinix 赛灵思 xilinx 阿尔特拉 Altera 本文内容隶属于【易灵思efinix】系列。 【risc-v】易灵思efinix FPGA sap…

若依框架的搭建

若依框架 若依框架的搭建(前后端分离版本)环境要求IDEA拉取Gitee源码Mysql 配置Redis 配置后端启动前端配置问题解决 效果展示 若依框架的搭建(前后端分离版本) 简介 RuoYi-Vue 是一个 Java EE 企业级快速开发平台,基…

ssh安装及问题解决

ssh安装及遇到的问题 ssh分为客户端 openssh-client 和服务器 openssh-server,可以利用以下命令确认是否安装: dpkg -l | grep ssh我用ubantu安装的,所以默认安装了客户端 安装客户端和服务器端的命令分别为: sudo apt-get ins…

LLM时代,数据为王,19个开源数据集下载网站汇总

大模型时代,数据为王,在哪里寻找开源数据集,是一个比较头疼的问题。经过调研整理,下面列出了目前可以寻找开源大模型数据集的网站清单。 1、HuggingFace开源数据集 链接:https://huggingface.co/datasets 镜像&#…

TSINGSEE青犀智能商场远程视频监控方案,助力商场统一智能化监管

随着经济的发展和人们物质生活的提高,商场的普及度也越来越高,而商场一般都有占地面积大、人流量多、人员复杂的特点,商场的统一化管理也是一个大问题。智能商场远程视频监控通过利用物联网和云计算技术,可以用来实现远程统一化视…

【若依框架实现上传文件组件】

若依框架中只有个人中心有上传图片组件&#xff0c;但是这个组件不适用于el-dialog中的el-form表单页面 于是通过elementui重新写了一个上传组件&#xff0c;如图是实现效果 vue代码 <el-dialog :title"title" v-model"find" width"600px"…

代码随想录第二十七天(一刷C语言)|分发饼干摆动序列最大子数组和

创作目的&#xff1a;为了方便自己后续复习重点&#xff0c;以及养成写博客的习惯。 一、分发饼干 思路&#xff1a;参考carl文档 局部最优就是大饼干喂给胃口大的&#xff0c;充分利用饼干尺寸喂饱一个&#xff0c;全局最优就是喂饱尽可能多的小孩。尝试使用贪心策略&#x…

[Firefly-Linux] RK3568 pca9555芯片驱动详解

文章目录 一、PAC9555 介绍二、ITX-3568JQ PAC9555 使用2.1 原理图2.2 设备树三、RK3568 I2C 介绍四、PAC9555 驱动4.1 介绍4.2 数据结构4.3 驱动分析一、PAC9555 介绍 PAC9555 是一种高性能、低功耗 I/O 扩展芯片,能够提供 16 个 GPIO 通道,每个通道可以单独配置为输入或输…

基于深度学习的钢铁缺陷检测系统(含UI界面,Python代码,数据集、yolov8)

项目介绍 项目中所用到的算法模型和数据集等信息如下&#xff1a; 算法模型&#xff1a;     yolov8 yolov8主要包含以下几种创新&#xff1a;         1. 添加注意力机制&#xff08;SE、CBAM等&#xff09;         2. 修改可变形卷积&#xff08;DySnake-主干c…

SRR参考设计中SRR_DSS_mmWaveTask函数源码分析

相应的说明都已注释的形式写出来。 上面两个中断是在初始化的时候注册的&#xff0c;在SRR_DSS_initTask函数中&#xff0c;如下所示 后面会接着分析函数MmwDemo_processChirp和MmwDemo_interFrameProcessing。

寒冬不再寒冷:气膜体育馆如何打造温馨运动天地

取暖季即将来临&#xff0c;随着气温逐渐下降&#xff0c;人们在寒冷的冬季里如何保持运动热情和身体的健康成为了一项挑战。而在这个时候&#xff0c;气膜体育馆成为了运动爱好者们的理想场所&#xff0c;提供如春般温暖舒适的运动环境。那么&#xff0c;让我们一起揭秘气膜体…