当前位置: 首页 > news >正文

【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 组件,细节粗糙,后续定当潜心钻研,力求精进。

在这里插入图片描述

相关文章:

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

目录 😋环境配置:华为HarmonyOS开发者 📺演示效果: 📖实验步骤及方法: 一、在media文件夹中添加想要使用的图片素材​ 二、在entry/src/main/ets/page目录下创建Welcome.ets文件 1. 整体结构与组件声…...

【MySQL】:Linux 环境下 MySQL 使用全攻略

📃个人主页:island1314 🔥个人专栏:MySQL学习 ⛺️ 欢迎关注:👍点赞 👂🏽留言 😍收藏 💞 💞 💞 1. 背景 🚀 世界上主…...

Linux驱动开发 gpio_get_value读取输出io的电平返回值一直为0的问题

当时gpio子系统进行读取时返回必定是0 因此,首先必须使用platform驱动来管理gpio和pinctrl子系统,然后如果按照正点原子所教的设备树引脚设置为0x10B0则会导致读取到的电平值为0。 解决方法: 将设备树中的引脚设置为 pinctrl_gpioled: gpio…...

【数据结构】栈与队列(FIFO)

在阅读该篇文章之前&#xff0c;可以先了解一下堆栈寄存器和栈帧的运作原理&#xff1a;<【操作系统】堆栈寄存器sp详解以及栈帧>。 栈(FILO) 特性: 栈区的存储遵循着先进后出的原则。 例子: 枪的弹夹&#xff0c;最先装进去的子弹最后射出来&#xff0c;最后装入的子弹…...

vue.js -ref和$refs获取dom和组件

在Vue.js中&#xff0c;ref和$refs是两个常用的属性&#xff0c;用于访问DOM元素和组件实例。下面分别详细解析这两个属性&#xff0c;并提供代码实例。 ref属性 ref属性用于给DOM元素或组件指定一个唯一的引用标识&#xff0c;在Vue实例中可以通过这个标识来访问对应的DOM元素…...

unity学习5:创建一个自己的3D项目

目录 1 在unity里创建1个3D项目 1.1 关于选择universal 3d&#xff0c;built-in render pipeline的区别 1.2 创建1个universal 3d项目 2 打开3D项目 2.1 准备操作面板&#xff1a;操作界面 layout,可以随意更换 2.2 先收集资源&#xff1a;打开 window的 AssetStore 下载…...

IEEE PDF eXpress遇到Font TimesNewRomanPSMT is not embedded的解决方案

IEEE PDF eXpress遇到Font TimesNewRomanPSMT is not embedded的解决方案 问题描述 在IEEE PDF eXpress上上传论文后&#xff0c;出现Font XXX is not embedded的问题。 该问题是指你所插入的图片等&#xff0c;没有将对应的字体嵌入进去。 解决方案 以下以Origin Lab图片…...

计算机网络 (21)网络层的几个重要概念

前言 计算机网络中的网络层是OSI&#xff08;开放系统互连&#xff09;模型中的第三层&#xff0c;也是TCP/IP模型中的第二层&#xff0c;它位于数据链路层和传输层之间&#xff0c;负责数据包从源主机到目的主机的路径选择和数据转发。 一、网络层的主要功能 路由选择&#xf…...

企业网络性能监控

什么是网络性能监控 网络性能监控&#xff08;NPM&#xff09;是指对计算机网络的性能进行持续测量、分析和管理的过程&#xff0c;通过监控流量、延迟、数据包丢失、带宽利用率和正常运行时间等关键指标&#xff0c;确保网络高效、安全地运行&#xff0c;并将停机时间降至最低…...

halcon三维点云数据处理(五)创建代表工具和机器人底座的3D模型

目录 一、gen_robot_tool_and_base_object_model_3d 函数调用二、gen_arrow_object_model_3d 函数调用 首先说明一下这部分代码在find_box_3d这个例程中&#xff0c;非常好用的一个坐标系生成函数。 一、gen_robot_tool_and_base_object_model_3d 函数调用 RobotToolSize : 0.…...

容器技术思想 Docker K8S

容器技术介绍 以Docker为代表的容器技术解决了程序部署运行方面的问题。在容器技术出现前&#xff0c;程序直接部署在物理服务器上&#xff0c;依赖管理复杂&#xff0c;包括各类运行依赖&#xff0c;且易变&#xff0c;多程序混合部署时还可能产生依赖冲突&#xff0c;给程序…...

25年1月更新。Windows 上搭建 Python 开发环境:PyCharm 安装全攻略(文中有安装包不用官网下载)

python环境没有安装的可以点击这里先安装好python环境&#xff0c;python环境安装教程 安装 PyCharm IDE 获取 PyCharm PyCharm 提供两种主要版本——社区版&#xff08;免费&#xff09;和专业版&#xff08;付费&#xff09;。对于初学者和个人开发者而言&#xff0c;社区…...

Oracle job(定时任务)

1、job的作用 可以定时执行任务&#xff08;分/次、时/次、天/次等&#xff09; 2、创建job --创建job --注意点&#xff1a; --①job_no 为系统自动获取&#xff1b; --②存储过程名需要加‘&#xff1b;’ --③定时器开始执行时间可以填‘sysdate,表示立即执行 --④执行频…...

[python3]Excel解析库-xlwt

xlwt 是一个用于创建 Excel .xls 文件&#xff08;即旧版的 Excel 97-2003 格式&#xff09;的 Python 库。它允许你用 Python 编写程序来生成 Excel 文件&#xff0c;而不需要实际运行 Microsoft Excel 应用程序。请注意&#xff0c;xlwt 只支持写入 .xls 文件&#xff0c;并不…...

【Rust自学】10.3. trait Pt.1:trait的定义、约束与实现

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 题外话&#xff1a;trait的概念非常非常非常重要&#xff01;&#xff01;&#xff01;整个第10章全都是Rust的重难点&#xff01;&#x…...

大数据高级ACP学习笔记(2)

钻取&#xff1a;变换维度的层次&#xff0c;改变粒度的大小 星型模型 雪花模型 MaxCompute DataHub...

K8s高可用集群之Kubernetes集群管理平台、命令补全工具、资源监控工具部署及常用命令

K8s高可用集群之Kubernetes管理平台、补全命令工具、资源监控工具部署及常用命令 1.Kuboard可视化管理平台2.kubectl命令tab补全工具3.MetricsServer资源监控工具4.Kubernetes常用命令 1.Kuboard可视化管理平台 可以选择安装k8s官网的管理平台&#xff1b;我这里是安装的其他开…...

【ArcGIS Pro二次开发实例教程】(2):BSM字段赋值

一、简介 一般的数据库要素或表格都有一个BSM字段&#xff0c;用来标识唯一值。 此工具要实现的功能是&#xff1a;按一定的规律&#xff08;前缀中间的填充数字OBJECT码&#xff09;来给BSM赋值。 主要技术要点包括&#xff1a; 1、ProWindow的创建&#xff0c;Label,Comb…...

OpenCV轮廓相关操作API (C++)

在OpenCV中&#xff0c;轮廓&#xff08;contours&#xff09;是图像处理中的一个重要概念&#xff0c;通常用于形状分析、物体检测等任务。OpenCV提供了多种与轮廓相关的API&#xff0c;可以在C中使用。 一.常用的与轮廓相关的操作及其对应的API函数 1.查找轮廓 findContou…...

[开源]自动化定位建图系统

系统状态机&#xff1a; 效果展示&#xff1a; 1、 机器人建图定位系统-基础重定位&#xff0c;定位功能演示 2、 机器人建图定位系统-增量地图构建&#xff0c;手动回环检测演示 3、敬请期待… 开源链接&#xff1a; 1、多传感器融合里程计 https://gitee.com/li-wenhao-lw…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

【WebSocket】SpringBoot项目中使用WebSocket

1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖&#xff0c;添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器

一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下&#xff0c;音视频内容犹如璀璨繁星&#xff0c;点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频&#xff0c;到在线课堂中知识渊博的专家授课&#xff0c;再到影视平台上扣人心弦的高清大片&#xff0c;音…...

2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版

1.题目描述 2.思路 当前的元素可以重复使用。 &#xff08;1&#xff09;确定回溯算法函数的参数和返回值&#xff08;一般是void类型&#xff09; &#xff08;2&#xff09;因为是用递归实现的&#xff0c;所以我们要确定终止条件 &#xff08;3&#xff09;单层搜索逻辑 二…...