HarmonyOS开发5.0【骨架屏】 app界面制作

server/2024/9/25 10:31:17/

实现原理

1.定义组件和状态变量:

使用 @Entry 和 @Component 装饰器定义了一个名为 IvSkeleton 的组件

定义了一个状态变量 translageX,初始值为 -100%,用于控制闪电效果的位置。

定义了两个数值变量 widthValue 和 heightValue,分别设置为 100,用于定义组件的宽度和高度。

2.构建组件

在 build() 方法中,使用 Stack() 创建一个堆叠布局容器。

在堆叠容器中,首先创建一个背景效果:

使用 Text() 组件创建一个文本元素。

设置文本的高度和宽度分别为 heightValue 和 widthValue。

设置背景颜色为半透明黑色 (rgba(0,0,0,0.1)).

3.闪电效果:

再次使用 Text() 创建一个文本元素,用于实现闪电效果。

设置文本的高度和宽度分别为 heightValue 和 widthValue。

使用 .translate() 方法将闪电效果的位置设置为 translageX。

组件加载后 (onAppear()),将 translageX 的值从 -100% 改变为 100%,从而移动闪电效果的位置。

4.添加动画效果:

设置动画持续时间为 1500 毫秒(1.5 秒)。

设置迭代次数为 -1,表示无限循环。

使用 .linearGradient() 方法创建一个线性渐变效果,实现闪电效果:

设置角度为 90 度。

设置颜色从透明到白色再到透明的渐变。

通过以上步骤,实现了以下功能:

初始状态下,闪电效果位于屏幕左侧(-100%)。

组件加载后,闪电效果移动到屏幕右侧(100%)。

闪电效果会无限循环地在屏幕上移动,形成闪烁的效果。

这种实现方式可以用来创建动态的视觉效果,例如闪电或光标效果。

实现代码

@Entry
@Component
struct IvSkeleton {@State translageX: string = '-100%' // 定义闪电效果的位置widthValue: number = 100heightValue: number = 100build() {Stack() {// 背景效果Text().height(this.heightValue).width(this.widthValue).backgroundColor('rgba(0,0,0,0.1)')// 闪电效果Text().height(this.heightValue).width(this.widthValue).translate({ x: this.translageX })// 控制闪电位置.onAppear(() => {// 当组件加载后,触发此函数,将translate的x轴位置改变到100%this.translageX = '100%'}).animation({duration: 1500, // 1.5秒内完成闪电动画iterations: -1  // 无限闪动动画}).linearGradient({// 闪电效果angle: 90,colors: [['rgba(255,255,255,0)', 0],['rgba(255,255,255,1)', 0.5],['rgba(255,255,255,0)', 1]]})}}
}

效果图

1

页面效果

2

以上就是本篇文章所带来的鸿蒙开发>鸿蒙开发中一小部分技术讲解;想要学习完整的鸿蒙全栈技术。可以在结尾找我可全部拿到!
下面是鸿蒙的完整学习路线,展示如下:
1

除此之外,根据这个学习鸿蒙全栈学习路线,也附带一整套完整的学习【文档+视频】,内容包含如下

内容包含了:(ArkTS、ArkUI、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、鸿蒙南向开发、鸿蒙项目实战)等技术知识点。帮助大家在学习鸿蒙路上快速成长!

鸿蒙【北向应用开发+南向系统层开发】文档

鸿蒙【基础+实战项目】视频

鸿蒙面经

2

为了避免大家在学习过程中产生更多的时间成本,对比我把以上内容全部放在了↓↓↓想要的可以自拿喔!谢谢大家观看!
3


http://www.ppmy.cn/server/118923.html

相关文章

JVM相关

1.JVM内存区域 一个运行起来的java进程就是一个Java虚拟机,就需要从操作系统中申请一大块内存。 内存中会根据作用的不同被划分成不同的区域: (1)栈:存储的内容是代码在执行过程中,方法之间的调用关系&a…

2024年9月HarmonyOS鸿蒙应用开发者高级认证全新题库(覆盖99%考题)

一个小时通过鸿蒙高级认证 1、在开发 Harmony0S 应用工程时, 随着业务的发展,现在需要创建一个模块, 关于在 DevEco Studio 中创建 Module , 下列选项哪种方式是错误的? 必对 在 hvigor 目录下,单击鼠标右键&#xf…

保护您的企业免受网络犯罪分子侵害的四个技巧

在这个日益数字化的时代,小型企业越来越容易受到网络犯罪的威胁。网络犯罪分子不断调整策略,并使用人工智能来推动攻击。随着技术的进步,您的敏感数据面临的风险也在增加。 风险的不断增大意味着,做好基本工作比以往任何时候都更…

面试—MySQL

目录 多表查询 事务 存储引擎 索引结构 索引分类 SQL性能优化 索引失效 视图 存储过程 触发器 MySQL锁 全局锁 表锁 行锁 多表查询 分类 内连接 只返回两个表符合条件的数据,相关联的数据(两个表的交集) 外连接 左外连接以左…

vscode搭建ros开发环境问题记录(更新...)

文章目录 vscode 不能自动补全方法一:方法二: 开发环境: vmware 15.7 ubuntu 20.04 ros noetic vscode 不能自动补全 方法一: 这里将头文件已经正确包含到c_cpp_properties.json中代码中仍然不能自动补全, 将C_CPP插…

Spring01

spring框架 spring是轻量级的容器框架 spring framework 1、Spring核心学习内容 IOC、AOp, jdbcTemplate,声明式事务 2、IOC:控制反转,孚以管理部8号对象 3.AOP:切面编程4.JDBCTemplate:是spring提供一套访问数据库的技术,应用性强,相对好理解5.声明式…

【SQL】百题计划:SQL对于空值的比较判断。

[SQL]百题计划 方法&#xff1a; 使用 <> (!) 和 IS NULL [Accepted] 想法 有的人也许会非常直观地想到如下解法。 SELECT name FROM customer WHERE referee_Id <> 2;然而&#xff0c;这个查询只会返回一个结果&#xff1a;Zach&#xff0c;尽管事实上有 4 个…

Selenium如何通过js注入避免被检测

1. 前言 在使用Selenium进行模拟爬虫的时候&#xff0c;很多时候网站都会有一定的检测机制&#xff0c;能够检测出你这个是Selenium程序&#xff0c;比如淘宝网。 如何知道当前是否被检测&#xff0c;我们可以通过以下代码来进行检验&#xff1a; window.navigator.webdrive…