【HarmonyOS应用开发——ArkTS语言】欢迎界面(启动加载页)的实现【合集】

目录

😋环境配置:华为HarmonyOS开发者

📺演示效果:

📖实验步骤及方法:

一、在media文件夹中添加想要使用的图片素材​

二、在entry/src/main/ets/page目录下创建Welcome.ets文件

1. 整体结构与组件声明

2. 状态变量声明

3. 页面显示(onPageShow)方法

4. 视图构建部分(build )方法

(1)扫描渐变(sweepGradient)效果

5.其他内容部分

(1)空白元素(Blank)

(2)文本元素(Text)

(3)图像元素(Image)

👋实验小结


😋环境配置:华为HarmonyOS开发者

🎯学习小目标:实现如下的欢迎界面(应用启动加载页)

📺演示效果:

📖实验步骤及方法:

一、在media文件夹中添加想要使用的图片素材

二、在entry/src/main/ets/page目录下创建Welcome.ets文件

界面的实现代码如下:

@Entry
@Component
@Preview
struct Welcome{@State opacityValue: number = 0.3;onPageShow(): void {this.opacityValue = 1}build() {Column(){Blank()Blank()Column(){Text('奇怪的知识').fontColor(Color.Gray).fontSize(36).fontWeight(FontWeight.Bold)}.alignItems(HorizontalAlign.Start).opacity(this.opacityValue).alignItems(HorizontalAlign.Start).opacity(this.opacityValue).animation({duration:2000,iterations:1,onFinish: ()=>{}})Blank()Column() {Image($r('app.media.smartCat')).width(200)}.alignItems(HorizontalAlign.Start).opacity(this.opacityValue).alignItems(HorizontalAlign.Start).opacity(this.opacityValue).animation({duration:2000,iterations:1,onFinish: ()=>{}})Blank()Column() {Text('增加了!').fontColor(Color.White).fontSize(36).fontWeight(FontWeight.Bold)}.alignItems(HorizontalAlign.Start).opacity(this.opacityValue).alignItems(HorizontalAlign.Start).opacity(this.opacityValue).animation({duration:1500,iterations:10,onFinish: ()=>{}})Blank()Blank()Blank()Column() {Image($r('app.media.RossyYan')).width(200).opacity(0.15)}}.width('100%').height('100%').sweepGradient({center: [180,327],start: 0,end: 359,rotation: 45, // 旋转角度repeating: true, // 渐变颜色是否重复colors: [[0x0E0B0B, 0.0], [0x81817D, 0.3], [0x020202, 0.5]] // 数组末尾元素占比小于1时满足重复着色效果})}
}

以下是对这段代码的详细讲解:

1. 整体结构与组件声明
  • @Entry@Component@Preview 注解(装饰器)

    • @Entry 通常用于标识这个组件是整个应用程序的入口组件,意味着程序启动时可能会首先展示这个组件所定义的界面内容。
    • @Component 表明这是一个可复用的组件,它可以被组合到其他更复杂的界面结构中,符合组件化开发的理念。
    • @Preview 往往用于在开发工具中提供组件的预览功能,方便开发者快速查看组件呈现的样子,而无需完整启动整个应用程序。
  • Welcome 结构体:定义了一个名为 Welcome 的结构体,它代表了整个界面组件的逻辑和视图结构。

2. 状态变量声明
@State opacityValue: number = 0.3;
  • 这里使用 @State 装饰器声明了一个名为 opacityValue 的状态变量,类型为数字(number),初始值被设置为 0.3。在响应式编程框架中,状态变量的变化会触发界面的重新渲染,以便更新相应的显示效果,比如这里会影响后续一些视图元素的透明度相关表现。
3. 页面显示(onPageShow)方法
onPageShow(): void {this.opacityValue = 1
}
  • 定义了 onPageShow 方法,它很可能是在页面显示(比如初次加载、从后台切换到前台等触发页面可见的情况)时被调用的回调函数。在这个函数中,将 opacityValue 的值修改为 1,这意味着页面显示时会改变相关元素的透明度情况(后续使用该变量控制透明度的视图元素会有相应变化)。
4. 视图构建部分(build )方法
build() {Column(){// 内部视图元素}.width('100%').height('100%').sweepGradient({// 渐变相关配置})
}

build 方法用于构建组件的视图层级结构。整体上是一个垂直方向排列的 Column(列)布局,占据父容器的 100% 宽度和 100% 高度(通过 .width('100%').height('100%') 设置)。

(1)扫描渐变(sweepGradient效果

设置了一个扫描渐变(sweepGradient)效果,相关配置如下:

  • center:指定了渐变的中心坐标为 [180, 327],决定了渐变的起始位置参照点。
  • start 和 end:分别定义了渐变的起始角度(0)和结束角度(359),意味着渐变会绕着中心旋转一圈覆盖整个范围。
  • rotation:设置了额外的旋转角度为 45 度,进一步调整渐变的呈现效果。
  • repeating:设置为 true,表明渐变颜色会重复显示,营造出一种循环的渐变效果。
  • colors:定义了渐变的颜色数组,包含了三个颜色元素,每个元素是一个包含颜色值(十六进制表示,如 0x0E0B0B 等)和占比(如 0.00.30.5)的数组,末尾元素占比小于 1 时满足重复着色效果,从而实现渐变的色彩过渡和循环效果。
5.其他内容部分
(1)空白元素(Blank

多次出现了 Blank(),从名字推测可能是用于占位、增加间距等作用的空白视图,不过具体功能还得看对应框架中 Blank 组件的实际定义。

(2)文本元素(Text
Text('奇怪的知识').fontColor(Color.Gray).fontSize(36).fontWeight(FontWeight.Bold)

这是一个显示文本的视图,文本内容为 “奇怪的知识”,设置了字体颜色为灰色(Color.Gray),字体大小为 36,字体加粗(FontWeight.Bold),并且其透明度受 opacityValue 状态变量控制,同时还添加了一个动画效果,动画相关配置如下:

.animation({duration:2000,iterations:1,onFinish: ()=>{}
})

意味着这个文本元素在显示时有一个时长为 2000 毫秒(2 秒)的动画过程,动画仅执行一次(iterations: 1),当动画结束时执行 onFinish 回调函数(这里函数体为空,可能根据实际需求补充相应逻辑)。

类似的还有另外两个文本元素:

Text('增加了!').fontColor(Color.White).fontSize(36).fontWeight(FontWeight.Bold)

这个文本显示 “增加了!”,字体颜色为白色,字体大小等设置与之前类似,不过动画配置有所不同,时长为 1500 毫秒(1.5 秒),且会重复执行 10 次(iterations: 10)。

(3)图像元素(Image

有两处使用了 Image 来显示图片:

Image($r('app.media.smartCat')).width(200)

这是加载一张图片(通过 $r('app.media.smartCat') 这种资源引用方式,具体取决于对应框架的资源管理机制),并设置图片宽度为 200 单位(具体单位也看框架默认设置,可能是像素等),其透明度同样受 opacityValue 状态变量控制,也有一个时长 2000 毫秒、执行一次的动画效果。

还有:

Image($r('app.media.RossyYan')).width(200).opacity(0.15)

加载另一张图片($r('app.media.RossyYan')),宽度设置为 200,并且初始透明度被设置为 0.15,不过这里没有看到额外的动画效果添加到这个特定的图片元素上(与前面带动画的元素对比而言)。

👋实验小结

在本次对 Welcome 组件的探索过程中,虽略有收获,但深知仍有漫漫长路要走。
从代码架构层面而言,@Entry 指明入口、@Component 助力复用、@Preview 便于预览,只是初窥门径,为开发流程带来些许便利。@State 变量操控元素透明度,在页面加载时有了初步动态呈现,尚不算精巧。Column 布局结合渐变背景,安置文本、图像,勉强构建出可用界面。动画增添几分生气,可提升空间巨大。尤其动画回调与 Blank 组件,细节粗糙,后续定当潜心钻研,力求精进。

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

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

相关文章

查看打开的端口

对一个大范围的网络或活跃的主机进行渗透测试,需要了解这些主机上所打开的端口号。 使用Nmap工具扫描主机上开放的端口号: 输出的信息显示了主机www.yiai.xyz上开放的所有端口 指定扫描端口范围 如果目标主机上打开的端口较多时,用户查看起…

运动控制探针功能详细介绍(CODESYS+SV63N伺服)

汇川AM400PLC和禾川X3E伺服EtherCAT通信 汇川AM400PLC和禾川X3E伺服EtherCAT通信_汇川ethercat通信-CSDN博客文章浏览阅读1.2k次。本文详细介绍了如何使用汇川AM400PLC通过EtherCAT总线与禾川X3E伺服进行通信。包括XML硬件描述文件的下载与安装,EtherCAT总线的启用,从站添加…

大模型 LangChain 开发框架:Runable 与 LCEL 初探

大模型 LangChain 开发框架:Runable 与 LCEL 初探 一、引言 在大模型开发领域,LangChain 作为一款强大的开发框架,为开发者提供了丰富的工具和功能。其中,Runnable 接口和 LangChain 表达式语言(LCEL)是构…

力扣28找出字符串中第一个匹配项的下标

class Solution:def strStr(self, haystack: str, needle: str) -> int:# 特殊情况处理if not needle:return 0# 获取 haystack 和 needle 的长度a len(needle)b len(haystack)# 遍历 haystack,检查每个子字符串是否与 needle 匹配for i in range(b - a 1):if…

基于微信小程序的自修室预约系统

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 在知识爆炸的时代,自修室成为了众多学习者…

计算机网络期末复习(含选择题、判断题、简答题、判断题)

📢📢📢传送门 一、选择题二、判断题三、简答题目1.问:常用的信道复用技术包括哪几种?简述它们的基本工作原理2.问:请分别列举OSI参考模型和TCP/IP参考模型的层次结构3.问:请描述交换机的基本功能。用它怎样…

MySQL - 函数

一 . 函数定义: 函数 是指一段可以直接被另一段程序调用的程序或代码。 ---> 说明这些函数已经被mysql内置了 MySQL中的函数主要分为以下四类: 字符串函数、数值函数、日期函数、流程函数。 二 . 字符串函数 MySQL中内置了很多字符串函数&#xff0c…

UniApp 原生插件开发指南

一、UniApp 原生插件开发引言 在当今的移动应用开发领域,跨平台开发已成为主流趋势,而 UniApp 作为一款强大的跨平台开发框架,备受开发者青睐。它凭借 “一套代码,多端运行” 的特性,极大地提高了开发效率&#xff0c…

Java高频面试之SE-08

hello啊,各位观众姥爷们!!!本牛马baby今天又来了!哈哈哈哈哈嗝🐶 成员变量和局部变量的区别有哪些? 在 Java 中,成员变量和局部变量是两种不同类型的变量,它们在作用域…

计算机网络 (15)宽带接入技术

前言 计算机网络宽带接入技术是指通过高速、大容量的通信信道或网络,实现用户与互联网或其他通信网络之间的高速连接。 一、宽带接入技术的定义与特点 定义:宽带接入技术是指能够传输大量数据的通信信道或网络,其传输速度通常较高&#xff0c…

2453.学习周刊-2024年53周

封面 不要站在问题一边打败孩子,而是站在孩子一边打败问题,多从孩子的角度思考问题,帮助孩子一起解决问题 ✍优秀博文 SQL中历史数据处理实践指南新领导上任了,老员工该如何适应?主动接纳还是我行我素? ✍…

回归预测 | MATLAB实现CNN-SVM多输入单输出回归预测

回归预测 | MATLAB实现CNN-SVM多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-SVM多输入单输出回归预测预测效果基本介绍模型架构程序设计参考资料 预测效果 基本介绍 CNN-SVM多输入单输出回归预测是一种结合卷积神经网络(CNN)和支持向量机&#…

python学opencv|读取图像(二十四)使用cv2.putText()绘制文字进阶-倾斜文字

【1】引言 前述学习进程中,我们已经掌握了pythonopencv绘制文字的基本技能,相关链接为: python学opencv|读取图像(二十三)使用cv2.putText()绘制文字-CSDN博客 在这里,我们使用不同的字体、线条颜色和线…

【Unity3D】UGUI Canvas画布渲染流程

参考文档:画布 - Unity 手册 Canvas组件:画布组件是进行 UI 布局和渲染的抽象空间。所有 UI 元素都必须是附加了画布组件的游戏对象的子对象。 参数: Render Mode 渲染模式:Screen Space - Overlay、Screen Spa…

热备份路由HSRP及配置案例

✍作者:柒烨带你飞 💪格言:生活的情况越艰难,我越感到自己更坚强;我这个人走得很慢,但我从不后退。 📜系列专栏:网路安全入门系列 目录 一,HSRP的相关概念二,…

牛客网刷题 ——C语言初阶——JZ15 二进制中1的个数

1.题目描述 题目OJ链接 描述 输入一个整数 n ,输出该数32位二进制表示中1的个数。其中负数用补码表示。 2.思路 求2进制中1的个数,可以转换为求每一位,1的个数,1&1还是1 所以判断如果该数值&1为真,我们就co…

机器学习笔记 - 单幅图像深度估计的最新技术

1、深度估计简述 单眼深度估计是一项计算机视觉任务,AI 模型从单个图像中预测场景的深度信息。模型估计场景中对象从一个照相机视点的距离。单目深度估计已广泛用于自动驾驶、机器人等领域。深度估计被认为是最困难的计算机视觉任务之一,因为它要求模型理解对象及其深度信息之…

Spring AOP 扫盲

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…

RocketMQ面试题:基础部分

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

【VUE】使用create-vue快速创建一个vue + vite +vue-route 等其他查看的工程

create-vue 简介 GitHub:https://github.com/vuejs/create-vue 创建的选项有多个,具体的可以看下方截图,当创建完成的时候可以发现工程中是自带vite的。 下面对其中的各种内容进行简单的说明 JSX (可以选择,但是我感觉没什么必要) 全称:JavaScript XML 允许你在 Java…