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

news/2025/1/15 1:06:23/

实现原理

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/news/1526431.html

相关文章

【Vue嵌套数据中,实现动态表头和内容】

el-table中,表头和内容是动态的。表头名称取数组对象tableData中的crb.name、dcpg.name等等。表头为空,不显示这一列。内容取的是数组对象tableData中的crb.count、dcpg.count等等。tableData [ { crb: { name:‘矫正状态: 在矫(数里)’, count: 1, }, …

只有IP地址没有域名怎么实现HTTPS访问?

🔐 实现IP地址HTTPS访问 🌐 确认公网IP地址 公网IP:确保你拥有一个公网IP地址,或者内网映射公网,这是实现HTTPS访问的前提。 📝 选择证书颁发机构(CA) 选择CA:选择一个…

Java多线程面试精讲:源于技术书籍的深度解读

写在前面 ⭐️在无数次的复习巩固中,我逐渐意识到一个问题:面对同样的面试题目,不同的资料来源往往给出了五花八门的解释,这不仅增加了学习的难度,还容易导致概念上的混淆。特别是当这些信息来自不同博主的文章或是视…

code eintegrity npm err sha512

当 npm install 出现报错的时候: 你应该这样去解决: 删除 package-lock.json 文件,重新执行 npm install。 问题出现的原因 EINTEGRITY 错误码表示在npm缓存中无法找到 指定sha512校验合的模块。 出现这个问题的原因是缓存不一致&…

加密与安全 _ 安全原则:任何客户端的东西都不可信任

文章目录 OverView客户端的计算不可信1. 初始错误示例2. 改进后的正确示例3. 更进一步的优化:使用简化的请求对象 客户端提交的参数需要校验初始错误示例改进后的正确示例方式一:手动校验参数方式二:使用 Spring Validation 进行参数校验 隐藏…

王者荣耀改重复名(java源码)

王者荣耀改重复名 项目简介 “王者荣耀改重复名”是一个基于 Spring Boot 的应用程序,用于生成王者荣耀游戏中的唯一名称。通过简单的接口和前端页面,用户可以输入旧名称并获得一个新的、不重复的名称。 功能特点 生成新名称:提供一个接口…

Spring Boot,在应用程序启动后执行某些 SQL 语句

在 Spring Boot 中,如果你想在应用程序启动后执行某些 SQL 语句,可以利用 spring.sql.init 属性来配置初始化脚本。这通常用于在应用启动时创建数据库表、索引、视图等,或者填充默认数据。data-locations 和 schema-locations 指定了 SQL 脚本…

Golang | Leetcode Golang题解之第409题最长回文串

题目&#xff1a; 题解&#xff1a; func longestPalindrome(s string) int {mp : map[byte]int{}for i : 0; i < len(s); i {mp[s[i]]}res : 0for _, v : range mp {if v&1 1 {res v - 1} else {res v}}if res<len(s) {res}return res }