HarmonyOS(鸿蒙)应用开发——(一)

目录

1  创建hellopro项目

2  了解ArkTS

3  了解ArkTS的组件

4  组件介绍

4.1 常用基础组件:

4.1.1 Text

4.1.2 Button

4.1.3 TextInput

4.2 容器组件

4.2.1 Column

4.2.2 Row

5  案例——实现一个简易登录页面

5.1 在实现预览效果之前,我们首先要进行分析,如何才能实现上述效果呢?

5.2 创建案例页面文件

6  如何备份这个案例

7  案例——实现头部文件、提交按钮

8  案例——点击数字使其增加


 本篇文章主要介绍在DevEco Studio中创建一个名为hellopro的项目,所以在创建前你的电脑上要安装好DevEco Studio软件,通过几个组件来实现一个简易登录界面,实现头部文件、提交按钮,点击数字使其增加等案例。

1  创建hellopro项目

1. 打开DevEco Studio,点击“Create Project”,进入项目创建页面/模版配置页。

2. 选择项目模版,选择“Application”,然后选择“Empty Ability”,单击“Next”进入工程配置页。

3. 默认项目名称为“MyApplication”。

4. 此处我们可以修改项目名称为“hellopro”,其余默认即可。

Save location可以选择要保存的路径;

Compile SDK是编译的API版本,这里默认选择API9;

Model模型选择Stage。

然后单击“Finish”完成工程创建,等待工程同步完成。

5. 创建完成后进入IDE界面,刚进入时右侧没有显示“Previewer”,等待加载。

6. 右侧出现“Previewer”后可点击显示预览效果。

2  了解ArkTS

ArkTS是HarmonyOS的主要开发语言,了解其之前先了解JavaScript、TypeScript语言。

JavaScript:一种网络高级脚本语言,应用于Web应用开发,可以为网页添加动态功能,实现交互。

TypeScript:JavaScript的一个超集,扩展了JS语法,在JS基础上添加了静态类型定义构建。

ArkTS:兼容TS语言,在TS基础上扩展了声明式UI、状态管理、并发任务,ArkTS是TypeScript的超集。

3  了解ArkTS的组件

如图,是项目进入后默认显示界面。可以看到在“hellopro/entry/src/main/ets/pages”下默认已经创建好了一个名为Index.ets的文件,文件中输入了“Hello World”文本并对其进行了样式的设置。

ArkTS通过@Component和@Entry装饰器,来构成一个自定义组件。通过struct声明组件名。

使用@Entry和@Component装饰的自定义组件作为页面的入口。

使用@Component装饰的自定义组件。

自定义组件使用build方法来进行UI描述。

build方法内可以容纳内置组件和其他自定义组件,如Column和Text都是内置组件。

4  组件介绍

下面列举出本篇文章中所使用的一些组件。

4.1 常用基础组件:

4.1.1 Text

Text组件:用于在界面上展示一段文本信息,可以包含子组件Span。

4.1.2 Button

Button:按钮组件。通常用于响应用户的点击操作,其类型包括胶囊按钮、圆形按钮、普通按钮。

4.1.3 TextInput

TextInput:单行文本输入框组件。

4.2 容器组件

首先了解什么是布局容器:

ArkTS中提供了Column和Row容器来实现线性布局。线性布局容器表示按照垂直方向或者水平方向排列子组件的容器。

4.2.1 Column

Column:表示沿垂直方向布局的容器,可以包含子组件。

4.2.2 Row

Row:表示沿水平方向布局的容器,可以包含子组件。

5  案例——实现一个简易登录页面

实现一个简易登录页面,预览效果如图。

5.1 在实现预览效果之前,我们首先要进行分析,如何才能实现上述效果呢?

可以看出图中有“手机号”、“验证码”两组文本,那么就要用到Text组件来实现;

文本后面是文本输入框,用TextInput单行文本输入框组件。

下面有“重置”、“登录”两个按钮,则用到Button按钮组件;两个按钮背景颜色不同可以使用.backgroundColor来设置。

5.2 创建案例页面文件

我们可以新建一个ArkTS文件来编辑代码实现页面效果。如图,在“hellopro/entry/src/main/ets/pages”文件夹下选中pages并右击,点击New>ArkTS File。

为ArkTS文件取名为“Login”。

创建完成后,在Login.ets文件里面没有代码内容。

在Login.ets中编辑如下代码并保存,完成好后点击“Previewer”预览。

@Entry                     // 装饰器,代表的是这个页面入口地方

@Component                 // 装饰器

struct Login {             // 自定义组件

  build() {                // build函数,用于构建页面UI

    //鸿蒙提供很多内置UI组件可以直接使用,内置组件字母大写

    Column() {

      Row() {

        Text('手机号')

        TextInput()

      }

      Row() {

        Text('验证码')

        TextInput()

      }

      Row() {

        Button('重置')

          .backgroundColor('#cccccc')

        Button('登录')

      }

    }

  }

}

预览效果如图,简易登录页面成功实现。

6  如何备份这个案例

当我们成功实现这个案例后,后续还会创建并实现其他页面效果,将这些文件放在同一文件夹中可能会感到杂乱,这时我们就要对当前实现的效果进行复制备份。

1. 选中main文件夹后右击并点击Copy,或者选中main文件夹后按键盘Ctrl+C组合键进行复制。

2. 复制好后选中src文件夹右击并点击Paste,或者选中src文件夹后按键盘Ctrl+V组合键进行粘贴。

3. 点击后弹出提示框,在New name中我们可以修改文件名,To directory默认即可,修改完成后点击OK。

4. 如图,可以看到我们备份的名为“01-登录”的文件,里面同样有Login.ets文件,后续还想备份其他案例效果可使用此步骤完成。

7  案例——实现头部文件、提交按钮

在ets文件夹下创建名为“components”的文件夹,里面保存预览文本文件并导出。

在pages文件夹原有文件Index.ets中编写代码导入“components”文件夹中的文本文件,最终要实现的预览结果如下图:

1. 选中ets文件夹鼠标右击,选择New>Directory创建目录。

2. 为目录取名为“components”并按回车键完成。

3. 创建成功。

4. 在创建好的components文件夹下创建两个后缀.ets的文件分别取名为“Header.ets”、“Footer.ets”。

选择components文件夹鼠标右击,选择New>ArkTS File。

为文件命名为“Header”后按回车键。

成功创建Header.ets文件,里面需要编辑代码。

按照上述方法在components文件夹中创建Footer.ets文件。

5. 文件创建完成后,在两个文件中编写代码。首先,在Header.ets文件中输入如下内容并保存:

@Component
export struct Header {
  build() {
    Row() {
      Text('头部文件')
    }
  }
}

6. 在Footer.ets文件中输入如下内容并保存:

@Component
export struct Footer {
  build() {
    Column() {
      Row() {
        Button('提交按钮')
      }
    }
  }
}

7. 在ets/pages文件夹下的Index.ets文件中输入如下内容并保存:

import { Footer } from '../components/Footer'
import { Header } from '../components/Header'
@Entry
@Component
struct Index {
  build() {
    Column() {
      Header()
      Footer()
    }
    }
}

8. 完成上述后点击右侧Previewer预览,如图完成案例中的效果。

8  案例——点击数字使其增加

要实现的预览结果:

点击蓝色“++”按钮实现数字增加。

1. 在main/ets/pages文件夹中新创建一个名为“Dianji”的ArkTS文件用来存放代码,创建方法参考上述步骤中的方法。

2. 创建完成。

3. 在Dianji.ets文件中输入如下内容:

@Entry
@Component
struct Dianji {
  @State count: number = 2024
  build() {
    Column() {
      Text(this.count.toString())
      Button('++')
        .onClick(()=>{
          this.count ++
          console.log(this.count.toString())
        })
    }
  }
}

4. 点击右侧Previewer预览效果。

5. 点击“++”按钮可以实现数字增加,完成案例要求。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

记录开发STM32遇到的卡死问题-串口

背景:以STM32作为主控,广州大彩显示屏显示,主控实时采集数据,串口波特率115200.设置收发频率为50Hz,即单片机每秒发送50帧数据,每秒接收50帧数据,每帧数据大概14字节。 问题:系统长…

Cronos zkEVM 基于 Covalent Network(CQT)数据可用性 API,推动其 Layer2 DeFi 生态更好地发展

在一项旨在显著改善 DeFi 生态的战略举措中,Cronos 与 Covalent Network(CQT)携手合作,以期待 Cronos zkEVM 的推出。这一整合,预计将进一步降低以太坊生态系统的交易成本、提升交易速度,并带来更好的交易体…

ZnO非线性电阻片功率损耗的频率特性

对不同频率正弦交流电压作用下直流氧化锌阀片的功率损耗进行了测量。图3.16(a)和(b)分别为试品类型A和试品类型B两种直流ZnO阀片在不同频率电压作用下的功率损耗随荷电率变化的特性。两种阀片的功率损耗都随频率和荷电率的增加而增加。当频率达到1kHz或以上时,阀片的功率损耗增…

SQLiteC/C++接口详细介绍sqlite3_stmt类(二)

返回目录:SQLite—免费开源数据库系列文章目录 上一篇:SQLiteC/C接口详细介绍sqlite3_stmt类简介 下一篇:SQLiteC/C接口详细介绍sqlite3_stmt类(三) sqlite3_reset() 功能:重置一个准备好执行的SQL语…

IDEA之This license XXXX has been suspended

IDEA激活码突然报如下错误: This license XXXXX has been suspended. Please contact your license administrator 解决方案: IDEA版本2022.2.3,亲测管用

【机器学习智能硬件开发全解】(十一)—— 政安晨:通过ARM-Linux掌握基本技能【C语言程序的链接过程】

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: 机器学习智能硬件开发全解 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 前言 我们回顾一下上篇文章: 【机器学习…

软件企业在咨询第三方软件测试机构报价时,应提前准备什么资料?

近年来,随着软件行业的迅速发展,软件企业对于软件质量的重视程度日益增加。为了确保软件产品的质量以及用户的满意度,越来越多的企业倾向于委托第三方软件测试机构进行测试工作。在咨询第三方软件测试机构报价之前,软件企业需要提…

SQLiteC/C++接口详细介绍sqlite3_stmt类(四)

返回:SQLite—系列文章目录 上一篇:SQLiteC/C接口详细介绍sqlite3_stmt类(三) 下一篇:SQLiteC/C接口详细介绍sqlite3_stmt类(五) 7. sqlite3_bind_parameter_count函数 sqlite3_bind_param…

风速预测(八)VMD-CNN-Transformer预测模型

往期精彩内容: 时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较-CSDN博客 风速预测(一)数据集介绍和预处理-CSDN博客 风速预测(二)基于Pytorch的EMD-LSTM模型-CSDN博客 风速预测&#xff…

【实例】React 组件传值方法: Props、回调函数、Context、路由传参

React原始传值方法 借用状态管理库的传值见下篇文:MobX 和 Redux 【实例】React 状态管理库 MobX Redux 入门及对比 文章目录 React原始传值方法父组件->子组件 props子组件->父组件 回调函数Context路由传值 父组件->子组件 props 父组件可以通过属性&a…

sheng的学习笔记-AI-Inception network

目录:sheng的学习笔记-AI目录-CSDN博客 基础知识 构建卷积层时,你要决定过滤器的大小究竟是11(原来是13,猜测为口误),33还是55,或者要不要添加池化层。而Inception网络的作用就是代替你来决定&…

流畅的 Python 第二版(GPT 重译)(一)

前言 计划是这样的:当有人使用你不理解的特性时,直接开枪打死他们。这比学习新东西要容易得多,不久之后,活下来的程序员只会用一个容易理解的、微小的 Python 0.9.6 子集来编写代码 。 Tim Peters,传奇的核心开发者&am…

【数据结构】——线性表(顺序表加链表),万字解读(加链表oj详解)

前言 由于之前存在过对两者的区别考虑,所以把他们放在一起来说,更加容易区别和理解 对于有关线性表的概念这里就不展示了,这里主要是介绍线性表里面的这两个结构的知识点 一.顺序表 1.顺序表介绍 顺序表的存储结构和逻辑结构都是相邻的&a…

前端知识点03(JS)

文章目录 前端知识点03(JS)1、JS中this指向问题2、script中的async和defer的区别3、setTimeOut和setInterval4、Es6和ES5的区别5、ES6的新特性 🎉写在最后 前端知识点03(JS) hello hello~ ,这里是 code袁~&…

SpringCloud-Feign远程调用

使用Feign替代RestTemplate进行远程服务调用&#xff1a; 远程调用配置 1. 引入依赖 我们在order-service服务的pom文件中引入feign的依赖&#xff1a; <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starte…

spring MVC是如何找到html文件并返回的?

Spring MVC 搜索路径 启动一个SpringBoot项目时&#xff0c;访问http://localhost:8080&#xff0c;对于SpringMVC&#xff0c;它会默认把这段url看成http://localhost:8080/index.html&#xff0c;所以这两个url是等价的。 .html, .css, .js, .img …都是静态资源文件&#x…

玩转C语言——C语言中内存存储

一、 整数在内存中的存储 我们知道&#xff1a;整数的2进制表⽰⽅法有三种&#xff0c;即 原码、反码和补码 三种表⽰⽅法均有符号位和数值位两部分&#xff0c;符号位都是⽤0表⽰“正”&#xff0c;⽤1表⽰“负”&#xff0c;⽽数值位最 ⾼位的⼀位是被当做符号位&#xff0c;…

(学习日记)2024.03.14:UCOSIII第十六节:时间片

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

编曲学习:如何编写钢琴织体 Cubase12逻辑预置 需要弄明白的问题

钢琴织体是指演奏形式、方式,同一个和弦进行可以用很多种不同的演奏方法。常用织体有分解和弦,柱式和弦,琶音织体,混合织体。 在编写钢琴织体前,先定好歌曲的调。 Cubase小技巧:把钢琴轨道向上拖动打和弦轨道,就可以显示和弦!如果你有一些参考工程,不知道用了哪些和…

PG中一个表的3~8个文件是怎么来的?

个人简介 微信公众号&#xff1a;数据库杂记 个人微信: _iihero 我是iihero. 也可以叫我Sean. iiheroCSDN(https://blog.csdn.net/iihero) Sean墨天轮 (https://www.modb.pro/u/16258) iiherozhihu (https://www.zhihu.com/people/zhou-mo-xu) 数据库领域的资深爱好者一枚。…