【HarmonyOS开发】超详细的ArkTS入门

安装DevEco Studio和新建项目就不多说了,可以移步官网

就可以把他们拆成这几个部分了,如果看不懂可以暂时忽略下面冒号后面的内容

  • 装饰器:用于装饰类、结构、方法以及变量,并赋予其特殊的含义。如上述示例中@Entry、@Component和@State都是装饰器,@Component表示自定义组件,@Entry表示该自定义组件为入口组件,@State表示组件中的状态变量,状态变量变化会触发UI刷新。
  • UI描述:以声明式的方式来描述UI的结构,例如build()方法中的代码块。
  • 自定义组件:可复用的UI单元,可组合其他组件,如上述被@Component装饰的struct Hello。
  • 系统组件:ArkUI框架中默认内置的基础和容器组件,可直接被开发者调用,比如示例中的Column、Text、Divider、Button。
  • 属性方法:组件可以通过链式调用配置多项属性,如fontSize()、width()、height()、backgroundColor()等。
  • 事件方法:组件可以通过链式调用设置多个事件的响应逻辑,如跟随在Button后面的onClick()。

解释这些东西一大堆,对新手来说,理解有那么一点不容易,只要记住这个大概的格式,就像这个样子

@Entry
@Component
struct Index {
//放你写的数据

  	build() {
  	//放你写的页面代码 
    
    }
  }

3.布局

下面的内容有些复杂,新手看不懂可以暂时只看线性布局,这个是我们最常用的一种布局方式

1.线性布局(Row、Column)

  • 线性布局(Row、Column):如果布局内子元素为复数个,且能够以某种方式线性排列时优先考虑此布局。

2.层叠布局(Stack)

  • 层叠布局(Stack):组件需要有堆叠效果时优先考虑此布局,层叠布局的堆叠效果不会占用或影响其他同容器内子组件的布局空间。例如Panel作为子组件弹出时将其他组件覆盖更为合理,则优先考虑在外层使用堆叠布局。

3.弹性布局(Flex)

  • 弹性布局(Flex):弹性布局是与线性布局类似的布局方式。区别在于弹性布局默认能够使子组件压缩或拉伸。在子组件需要计算拉伸或压缩比例时优先使用此布局,可使得多个容器内子组件能有更好的视觉上的填充容器效果。

4.相对布局(RelativeContainer)

  • 相对布局(RelativeContainer):相对布局是在二维空间中的布局方式,不需要遵循线性布局的规则,布局方式更为自由。通过在子组件上设置锚点规则(AlignRules)使子组件能够将自己在横轴、纵轴中的位置与容器或容器内其他子组件的位置对齐。设置的锚点规则可以天然支持子元素压缩、拉伸,堆叠或形成多行效果。在页面元素分布复杂或通过线性布局会使容器嵌套层数过深时推荐使用。

5.栅格布局(GridRow、GridCol)

  • 栅格布局(GridRow、GridCol):栅格是多设备场景下通用的辅助定位工具,通过将空间分割为有规律的栅格。栅格不同于网格布局固定的空间划分,可以实现不同设备下不同的布局,空间划分更随心所欲,从而显著降低适配不同屏幕尺寸的设计及开发成本,使得整体设计和开发流程更有秩序和节奏感,同时也保证多设备上应用显示的协调性和一致性,提升用户体验。推荐内容相同但布局不同时使用。

6.媒体查询(@ohos.mediaquery)

  • 媒体查询(@ohos.mediaquery):媒体查询可根据不同设备类型或同设备不同状态修改应用的样式。例如根据设备和应用的不同属性信息设计不同的布局,以及屏幕发生动态改变时更新应用的页面布局。

7.列表(List)

  • 列表(List):使用列表可以轻松高效地显示结构化、可滚动的信息。在ArkUI中,列表具有垂直和水平布局能力和自适应交叉轴方向上排列个数的布局能力,超出屏幕时可以滚动。列表适合用于呈现同类数据类型或数据类型集,例如图片和文本。

8.网格(Grid)

  • 网格(Grid):网格布局具有较强的页面均分能力,子组件占比控制能力,是一种重要自适应布局。网格布局可以控制元素所占的网格数量、设置子组件横跨几行或者几列,当网格容器尺寸发生变化时,所有子组件以及间距等比例调整。推荐在需要按照固定比例或者均匀分配空间的布局场景下使用,例如计算器、相册、日历等。

9.轮播(Swiper)

  • 轮播(Swiper):轮播组件通常用于实现广告轮播、图片预览、可滚动应用等。

使用

暂时看不懂也没关系,我们暂时只看用的最多的线性布局

线性布局分为两种,

一种是竖直方向的线性布局Column

另一种是水平方向的线性布局Row

【HarmonyOS开发】超详细的ArkTS入门(一)-鸿蒙开发者社区

我们把他们加入我们写的代码中

@Entry
@Componentstruct Index {
//放你写的数据
  build() {
  	Row() {      
  		Column() {     
  			//放你写的组件     
 			 }   
 		 }  
 	}
  }

这样页面布局就写好了,下面我们要开始在页面布局中写组件了

4.组件

下面我们就在我们的页面中添加组件

常见的组件有

  • 按钮
  • 单选框
  • 切换按钮
  • 进度条
  • 文本显示
  • 文本输入
  • 自定义弹窗
  • 视频播放
  • XComponent

今天我们先来看一下按钮和文本显示

1.组件格式

组件的格式基本上都是这个样子

【HarmonyOS开发】超详细的ArkTS入门(一)-鸿蒙开发者社区

2.文本组件使用

这个我们点右边的这个小眼睛可以预览效果

【HarmonyOS开发】超详细的ArkTS入门(一)-鸿蒙开发者社区

也就是这个样子

【HarmonyOS开发】超详细的ArkTS入门(一)-鸿蒙开发者社区

同样的,我们在线性布局的下面加上修饰的东西,可以让这个文字显示在屏幕中央

【HarmonyOS开发】超详细的ArkTS入门(一)-鸿蒙开发者社区

.width('100%')是让垂直布局的宽度占据整个屏幕的宽度,让文本位于左右居中

同理.height('100%')是让水平布局的高度占据整个屏幕的高度,让文本上下居中

3.按钮组件使用

然后我们可以增加一个按钮Bottom组件

@Entry
@Component
struct Index {
    @State message: string = 'Hello World‘ 
    build() {
            Row() {
                Column() {
                   //文本组件
                   Text(this.message)
                        .fontSize(50)
                        .fontWeight(FontWeight.Bold)
                    //按钮组件
                    Button('按钮中的内容')
                        .onClick(() => {    //点击
                             //点击按钮后发生的事情
                        })
                }
                .width('100%')
            }
            .height('100%')
        }

}

例如我用来演示的这个

【HarmonyOS开发】超详细的ArkTS入门(一)-鸿蒙开发者社区

点击按钮后,message的内容就会发生变化,点击按钮后的效果如下

【HarmonyOS开发】超详细的ArkTS入门(一)-鸿蒙开发者社区

我们今天的内容就到这里

结尾

我们今天入门了ArkTS,初步接触了一下组件的应用,如果有什么错误希望大家可以在评论区中指正,祝大家可以早日成为ArkTS大佬。

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

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

相关文章

ByConity ELT 小测

借着 ByConity 的邀测活动体验一下 bsp 能力,ByConity 也很贴心的提供了标准环境,下面开始体验。 测试环境 版本 配置 ByConity v1.0.1 集群规格 Worker:4 * 16core 64G Server:1 * 16core 64G TSO:1 * 4core 16…

【Android】从事件分发开始:原理解析如何解决滑动冲突

【Android】从事件分发开始:原理解析如何解决滑动冲突 文章目录 【Android】从事件分发开始:原理解析如何解决滑动冲突Activity层级结构浅析Activity的setContentView源码浅析AppCompatActivity的setContentView源码 触控三分显纷争,滑动冲突…

【C#】NET 9中LINQ的新特性-CountBy

前言 在 .NET 中,使用 LINQ 对元素进行分组并计算它们的出现次数时,需要通过两个步步骤。首先,使用 GroupBy方法根据特定键对元素进行分类。然后,再计算每个组元素包含个数。而随着 .NET 9 版本发布,引入了一些新特性。其中 LINQ 引入了一种新的方法 CountBy,本文一起来了…

【C++】深入理解 if-else 语句

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯if-else 语句基础概述1.1 if 语句1.2 else 语句注意事项: 1.3 单条语句和语句块的区别 💯else if 语句与嵌套 if2.1 else if 的本质2.2 else if 的优…

十七、监控与度量-Prometheus/Grafana/Actuator

文章目录 前言一、Spring Boot Actuator1. 简介2. 添加依赖2. 开启端点3. 暴露端点4. 总结 二、Prometheus1. 简介2. Prometheus客户端3. Prometheus服务端4. 总结 三、Grafana1. 简介2. Grafana安装3. Grafana配置 前言 系统监控‌ 在企业级的应用中,系统监控至关…

在c#控制台中使用Raylib-cs库,绘制控制小球和插入音频(附带c++中小球的控制代码)

下载网址 GitHub - chrisdill/raylib-cs: C# bindings for raylib, a simple and easy-to-use library to learn videogames programming 克隆库 克隆GitHub仓库-CSDN博客 1 .制作dll 点击 生成之后就会多出这些东西 2.在项目中添加dll 然后就导进来了 测试一下用例代码 …

400G智算网络助力知名自动驾驶企业算力训练提效

根据Gartner的最新趋势预测,自动驾驶技术正迅速发展,预计在未来几年内将带来显著的商业效益,特别是在决策智能和边缘人工智能领域。目前,一家领军企业正积极拥抱基于大模型的数字化转型之路,作为自动驾驶领域的佼佼者&…

STM32编码器接口及编码器测速模板代码

编码器是什么? 编码器是一种将角位移或者角速度转换成一连串电数字脉冲的旋转式传感 器,我们可以通过编码器测量到底位移或者速度信息。编码器从输出数据类型上 分,可以分为增量式编码器和绝对式编码器。 从编码器检测原理上来分&#xff0…

数组常见查找算法

文章目录 时间复杂度1. 顺序查找(Linear Search)2. 二分查找(Binary Search)3. 插值查找(Interpolation Search)4.分块查找5.哈希查找 时间复杂度 衡量算法执行时间随输入规模增长而增长的速度的一个概念。…

网际协议(IP)与其三大配套协议(ARP、ICMP、IGMP)

网际协议(Internet Protocol,IP),又称互联网协议。是OSI中的网络层通信协议,用于跨网络边界分组交换。它的路由功能实现了互联互通,并从本质上建立了互联网。网际协议IP是 TCP/IP 体系中两个最主要的协议之…

CountDownLatch、Semaphore和Cyclicbarrier

文章目录 前言一、CountDownLatch1、概念2、源码3、代码示例:4、应用场景: 二、Semaphore1.概念2.源码3.代码示例4.应用场景 三、Cyclicbarrier1、简介2、源码3、代码示例4、应用场景:5、CyclicBarrier对比CountDownLatch 总结 前言 countDo…

【开源免费】基于Vue和SpringBoot的课程答疑系统(附论文)

博主说明:本文项目编号 T 070 ,文末自助获取源码 \color{red}{T070,文末自助获取源码} T070,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…

Flink 中双流 Join 的深度解析与实战

目录 一、Join 算子 一)语义与特性 二)通用用法 三)不同窗口类型表现 滚动窗口 Join 滑动窗口 Join 二、CoGroup 算子 一)功能特点 二)通用用法与连接类型实现 内连接(InnerJoin) 左…

QNX的内存布局和启动入口

参考资料: QNX官网文档 内存布局 添加图片注释,不超过 140 字(可选) 查看系统内存布局 # pidin syspage=asinfo Header size=0x00000108, Total Size=0x0000d1b0, #Cpu=8, Type=257 Section:asinfo offset:0x0000bdf0 size:0x00000d00 elsize:0x000000200000

数学建模之RSR秩和比综合评价法(详细)

RSR秩和比综合评价法 一、概述 秩和比法(Rank-sum ratio,简称RSR法)是我国学者田凤调于1988年提出的,田教授是我国杰出的卫生统计学家,该方法最初提出时用于解决医学卫生领域的综合评价问题,后经各领域学者的补充和完善&#xf…

计算机网络复习6——网络层

域名系统NDS NDS是互联网的命名系统,用来把便于人们使用的机器名字转换为IP地址,作为人与机器之间的中间件 域名 域名是主机的名字 域名使用层次树状结构,由标号序列组成,各标号之间用点隔开,每个名字在互联网上是…

【PlantUML系列】类图(一)

目录 一、类 二、接口 三、抽象类 四、泛型类 五、类之间的关系 六、添加注释 七、包图 八、皮肤参数 一、类 使用class关键字定义类,类名后跟大括号,声明类的属性和方法。 属性:格式为{visibility} attributeName : AttributeType…

【AI系统】FBNet 系列

FBNet 系列 本文主要介绍 FBNet 系列,在这一章会给大家带来三种版本的 FBNet 网络,从基本 NAS 搜索方法开始,到 v3 版本的独特方法。在本节中读者会了解到如何用 NAS 搜索出最好的网络和训练参数。 FBNet V1 模型 FBNetV1:完全基于 NAS 搜…

高校数字化运营平台解决方案:构建统一的服务大厅、业务平台、办公平台,助力打造智慧校园

教育数字化是建设教育强国的重要基础,利用技术和数据助推高校管理转型,从而更好地支撑教学业务开展。 近年来,国家多次发布政策,驱动教育行业的数字化转型。《“十四五”国家信息化规划》,推进信息技术、智能技术与教育…

【JavaEE 初阶】⽹络编程套接字

一、⽹络编程基础 1.应用层 操作系统提供的一组 api >socket api(传输层给应用层提供) 2.传输层 两个核心协议. TCPUDP 差别非常大,编写代码的时候,也是不同的风格 因此, socket api 提供了两套 TCP 有连接, 可靠传输, 面向字节流, 全双工 UDP …