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

news2024/11/18 21:39:38

目录

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. 点击“++”按钮可以实现数字增加,完成案例要求。

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

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

相关文章

几个简单的参数,实现计算特征向量的余弦相似度(java实现,纯手撸)

几个简单的参数,实现计算特征向量的余弦相似度(java实现,纯手撸) 太狂喽!突然高级起来🧠🧠🧠🧠🧠🧠🧠🧠🧠&am…

【大模型】在VS Code(Visual Studio Code)上安装中文汉化版插件

文章目录 一、下载安装二、配置显示语言(一)调出即将输入命令的搜索模式(二)在大于号后面输入:Configure Display Language(三)重启 三、总结 【运行系统】win 11 【本文解决的问题】 1、英文不…

Linux 文件探秘:检查文件大小的四种神器

Linux 文件探秘:检查文件大小的四种神器 Linux 文件探秘:检查文件大小的四种神器摘要引言正文内容🛠️ 方法一:使用ls命令详细步骤示例 🛠️ 方法二:使用du命令详细步骤示例 🛠️ 方法三&#…

C语言笔记:指针与数组

ACM金牌带你零基础直达C语言精通-课程资料 本笔记属于船说系列课程之一,课程链接:ACM金牌带你零基础直达C语言精通https://www.bilibili.com/cheese/play/ep159068?csourceprivate_space_class_null&spm_id_from333.999.0.0 你也可以选择购买『船说…

通过dbeaver链接dm8数据库

一、环境说明 windows 11 vmware 17 ubuntu 22 tt:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.3 LTS Release: 22.04 Codename: jammytt:~$ docker info Client:Version: 24.0.5Context: d…

【进程概念】环境变量PATH(结合代码,超极容易理解)

文章目录 什么叫环境变量常见环境变量查看环境变量测试PATH修改PATH HOME和环境变量相关的命令环境变量是如何被组织的解释main函数里的参数如何在程序中获得环境变量1.命令行第三个参数2.通过第三方变量environ获取 通过系统调用putenv和getenv获取或设置环境变量环境变量通常…

带3090显卡的Linux服务器上部署SDWebui

背景 一直在研究文生图,之前一直是用原始模型和diffuser跑SD模型,近来看到不少比较博主在用 SDWebui,于是想着在Linux服务器上部署体验一下,谁知道并没有想象的那么顺利,还是踩了不少坑。记录一下过程,也许…

画架构图实践技巧

画架构图是架构师的一门必修功课。 对于架构图是什么这个问题,我们可以按以下等式进行概括: 架构图 架构的表达 架构在不同抽象角度和不同抽象层次的表达,这是一个自然而然的过程。 不是先有图再有业务流程、系统设计和领域模型等&#…

ForkJoinPool在生产环境中使用遇到的一个问题

1、背景 在我们的项目中有这么一个场景,需要消费kafka中的消息,并生成对应的工单数据。早些时候程序运行的好好的,但是有一天,我们升级了容器的配置,结果导致部分消息无法消费。而消费者的代码是使用CompletableFutur…

P8623 [蓝桥杯 2015 省 B] 移动距离 Python

[蓝桥杯 2015 省 B] 移动距离 题目描述 X 星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为 $1,2,3, \cdots $ 。 当排满一行时,从下一行相邻的楼往反方向排号。 比如:当小区排号宽度为 6 6 6 时,开始情形如…

echarts 折线图 数据点过密,显示重叠该如何解决

echarts 折线图 数据点过密,显示重叠该如何解决 有这样一个图表,显示的数据比较多, 当把 label 显示出来的时候,这些 label 重叠了,我想让它间隔一下。 结果是这样的: 只需要在 label.formatter 上处理 …

Go 限流器-漏桶 VS 令牌桶 常用包原理解析

本文主要介绍两个包Uber漏桶,time/rate令牌桶 可以了解到: 使用方法漏桶/令牌桶 两种限流思想 and 实现原理区别及适用场景应用Case 背景 我们为了保护系统资源,防止过载,常常会使用限流器。 使用场景: API速率限制…

clickhouse突然启动不起来问题排查

场景: 在实现postgreql数据迁移到clickhouse中,想使用MaterializedPostgreSQL的功能实现,但是中途clickhouse突然挂了,就再启动不了了。 现象: systemctl start clcikhouse-server启动报错 [rootlocalhost clickhous…

spring注解驱动系列--AOP探究二

上篇中记录了AnnotationAwareAspectJAutoProxyCreator的创建以及注册,主要是 1、EnableAspectJAutoProxy 注解会开启AOP功能 2、然后这个注解会往容器中注册一个AnnotationAwareAspectJAutoProxyCreator组件。 3、之后在容器创建过程中,注册后置处理器&a…

反序列化漏洞简单知识

目录: 一、概念: 二、反序列化漏洞原因 三、序列化漏洞的魔术方法: 四、反序列化漏洞防御: 一、概念: 序列化: Web服务器将HttpSession对象保存到文件系统或数据库中,需要采用序列化的…

基于java+springboot+vue实现的研究生志愿填报辅助系统(文末源码+Lw+ppt)23-600

摘 要 二十一世纪我们的社会进入了信息时代,信息管理系统的建立,大大提高了人们信息化水平。传统的管理方式对时间、地点的限制太多,而在线管理系统刚好能满足这些需求,在线管理系统突破了传统管理方式的局限性。于是本文针对这…

java 实现发送邮件功能

今天分享一篇 java 发送 QQ 邮件的功能 环境&#xff1a; jdk 1.8 springboot 2.6.3 maven 3.9.6 邮件功能依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>&…

深度学习pytorch——多层感知机反向传播(持续更新)

在讲解多层感知机反向传播之前&#xff0c;先来回顾一下多输出感知机的问题&#xff0c;下图是一个多输出感知机模型&#xff1a; 课时44 反向传播算法-1_哔哩哔哩_bilibili 根据上一次的分析深度学习pytorch——感知机&#xff08;Perceptron&#xff09;&#xff08;持续更新…

pytorch 实现多层神经网络MLP(Pytorch 05)

一 多层感知机 最简单的深度网络称为多层感知机。多层感知机由 多层神经元 组成&#xff0c;每一层与它的上一层相连&#xff0c;从中接收输入&#xff1b;同时每一层也与它的下一层相连&#xff0c;影响当前层的神经元。 softmax 实现了 如何处理数据&#xff0c;如何将 输出…

【Godot4.2】基础知识 - Godot中的2D向量

概述 在Godot中&#xff0c;乃至一切游戏编程中&#xff0c;你应该都躲不开向量。这是每一个初学者都应该知道和掌握的内容&#xff0c;否则你将很难理解和实现某些其实原理非常简单的东西。 估计很多刚入坑Godot的小伙伴和我一样&#xff0c;不一定是计算机专业或编程相关专…