第七篇【传奇开心果系列】鸿蒙开发技术点案例示例:ArkUI声明式UI编程思想_arkui声明式开发范式 让应用开发更加便捷 下载(2)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新HarmonyOS鸿蒙全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img

img
img
htt

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注鸿蒙)
img

正文

  1. struct Index:定义了一个名为Index的自定义组件。
  2. @State message: string = "Hello World";:使用@State装饰器声明了一个状态变量message,类型为字符串,并赋初值为"Hello World"。这个状态变量可以在组件内部使用,并随着组件的渲染和交互而更新。
  3. build():构造函数,用于声明UI结构和布局。在这里,通过嵌套使用Row()Column()函数创建了一个横向布局组件,并在其中嵌套了一个纵向布局组件。
  4. Text(this.message):在纵向布局组件中使用Text()函数创建了一个文本组件,并将message变量的值作为文本内容。这样,文本组件会根据message的值进行渲染。
  5. .fontSize(50):使用.fontSize()方法设置文本的字号为50。这是对文本组件的样式进行定制的一种方式。
  6. .fontWeight(FontWeight.Bold):使用.fontWeight()方法设置文本的字体粗细为粗体。同样,这是对文本组件的样式进行定制的一种方式。
  7. .width('100%'):使用.width()方法设置组件的宽度占整个页面的百分比为100%。这是对布局组件的样式进行定制的一种方式。
  8. .height('100%'):使用.height()方法设置组件的高度占整个页面的百分比为100%。同样,这是对布局组件的样式进行定制的一种方式。

以上代码展示了组件化开发的核心思想:将页面拆分为独立的、可复用的组件,并通过嵌套和组合这些组件来构建复杂的用户界面。每个组件都有自己的状态和属性,通过声明和操作这些状态和属性,以及定义组件的UI结构和样式,来实现组件的功能和外观。通过组件化开发,可以提高代码的可维护性、重用性和扩展性,使开发过程更加模块化和灵活。

五、以官方示例helloworld解读组件可定制

在这里插入图片描述以上示例代码展示了如何通过设置组件的属性来进行定制。下面以该示例代码为例,说明组件的可定制性:

  1. @State message: string = "Hello World";:通过声明状态变量message,可以在使用该组件时传入不同的文本内容。这样,每次使用该组件时,可以根据需要定制文本内容,使其显示不同的信息。
  2. .fontSize(50):通过设置文本的字号为50,可以定制文本的大小。如果需要调整字号,只需修改该属性的值即可。
  3. .fontWeight(FontWeight.Bold):通过设置文本的字体粗细为粗体,可以定制文本的粗细程度。如果需要调整字体粗细,只需修改该属性的值即可。
  4. .width('100%'):通过设置组件的宽度占整个页面的百分比为100%,可以定制组件的宽度。如果需要调整组件的宽度,只需修改该属性的值即可。
  5. .height('100%'):通过设置组件的高度占整个页面的百分比为100%,可以定制组件的高度。如果需要调整组件的高度,只需修改该属性的值即可。

通过修改这些属性的值,可以实现对组件的定制。例如,可以将message的值修改为其他文本内容,调整字号、字体粗细、宽度和高度的值,以满足不同的需求和设计要求。

此外,还可以通过添加其他属性、样式和事件处理等来进一步定制组件。例如,可以添加背景颜色、边框样式、动画效果等,以及为组件添加点击事件等交互行为。

总之,以上示例代码展示了组件的可定制性。通过修改组件的属性和样式,以及添加相应的事件处理,可以根据具体需求和设计要求来定制组件的外观和行为,实现灵活的组件化开发。

六、用示例解读响应式布局

在这里插入图片描述以下是两个示例代码,分别展示了使用媒体查询和弹性布局来实现响应式布局的方法:

  1. 使用媒体查询:
响应式容器

在上述示例中,.container类表示一个容器元素,设置了宽度为100%、高度为300px,并且有一个背景颜色。通过媒体查询@media,当屏幕宽度小于等于768px时,将容器的高度调整为200px。这样,在较小的屏幕上,容器的高度会相应地进行调整。

  1. 使用弹性布局:
项目1
项目2
项目3

在上述示例中,.container类表示一个容器元素,使用了弹性布局模型(Flexbox)。通过设置display: flex,容器的子元素会自动在水平方向上排列。子元素的.item类设置了相同的弹性属性flex: 1,使它们平均占据可用空间。

通过媒体查询@media,当屏幕宽度小于等于768px时,将容器的flex-direction属性设置为column,子元素会自动垂直排列,以适应较小的屏幕。

这两个示例展示了使用媒体查询和弹性布局来实现响应式布局的方法。你可以根据具体的需求和设计要求,调整媒体查询的条件和样式规则,或者修改弹性布局的属性,以实现你所需的响应式效果。
3. 使用栅格系统:

项目1
项目2
项目3

在上述示例中,.container类表示一个容器元素,使用了栅格系统来划分列数。通过设置display: grid,容器内的子元素会按照网格布局排列。使用grid-template-columns属性来定义网格的列数和宽度,repeat(3, 1fr)表示重复3次,每个列宽度平均占据可用空间。

通过媒体查询@media,当屏幕宽度小于等于768px时,将网格的列数调整为2列,适应较小的屏幕。当屏幕宽度小于等于480px时,将网格的列数调整为1列,使项目在较小的屏幕上垂直排列。

通过调整栅格的列数和媒体查询的条件,可以实现不同屏幕尺寸下的响应式布局效果。

以上示例代码展示了使用栅格系统来实现响应式布局的方法。你可以根据具体的需求和设计要求,调整栅格的列数、间距以及媒体查询的条件,以实现你所需的响应式效果。
4. 使用CSS的@media规则:

响应式容器

在上述示例中,.container类表示一个容器元素,设置了宽度为100%、高度为300px,并且有一个背景颜色。

通过使用CSS的@media规则,根据不同屏幕尺寸应用不同的样式。当屏幕宽度小于等于768px时,使用媒体查询(max-width: 768px),将容器的高度调整为200px,并且修改背景颜色为灰色。当屏幕宽度小于等于480px时,使用媒体查询(max-width: 480px),将容器的高度调整为150px,并且修改背景颜色为浅灰色。

通过使用不同的媒体查询条件和样式规则,可以根据设备的屏幕尺寸来调整容器的高度和背景颜色,以实现响应式布局效果。

以上示例代码展示了使用CSS的@media规则来实现响应式布局的方法。你可以根据具体的需求和设计要求,调整媒体查询的条件和样式规则,以实现你所需的响应式效果。

七、以官方helloworld示例代码为例解读组件的动态更新

在这里插入图片描述以上代码展示了一个名为Index的自定义组件,其中包含了一个状态变量message和一个build()方法用于构建UI。

在这个示例中,组件的状态变量message被初始化为"Hello World"。在build()方法中,使用Row()和Column()组件进行横向和纵向布局,并嵌套了一个Text组件来显示message的内容。

如果想要实现组件动态更新,可以通过修改状态变量message的值来触发重新渲染。例如,可以在外部代码中通过调用setState()方法来更新message的值,然后组件会自动根据新的值重新渲染。

以下是示例代码演示如何更新组件的状态变量:

// 导入需要的模块
import { Entry, Component, State, Text, Row, Column } from ‘arkts’;

// 装饰器,指页面入口。
@Entry
// 装饰器,指下面开始自定义组件
@Component
// 自定义组件
struct Index {
// 装饰器,指状态变量,字符串类型,赋值:"Hello World’
@State message: string = “Hello World”;

// 构造函数,UI声明
build() {
// 横向布局组件
Row() {
// 嵌套纵向布局组件
Column() {
// 文本组件,参数
Text(this.message)
// 设置字号
.fontSize(50)
// 设置字体粗细
.fontWeight(FontWeight.Bold);
}
// 设置页面宽度占比百分比
.width(‘100%’);
}
// 设置页面高度占比百分比
.height(‘100%’);
}
}

// 创建Index组件实例
const index = new Index();

// 更新组件的状态变量message的值

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注鸿蒙)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

// 更新组件的状态变量message的值

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注鸿蒙)
[外链图片转存中…(img-JI23bL2k-1713202871772)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值