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

ops/2024/11/13 9:58:28/

实现原理

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/ops/111706.html

相关文章

C# Redis 框架开发技术详解

引言 Redis 是一个高性能的键值存储系统,广泛用于缓存、消息队列和实时分析等场景。在 C# 中,有几个著名的库和框架可以方便地与 Redis 进行交互。以下是几个常用的 C# Redis 库: StackExchange.Redis: 这是目前最流行、最推荐的 C# Redis 客…

Flutter-底部选择弹窗(showModalBottomSheet)

前言 现在有个需求,需要用底部弹窗来添加定时的重复。在这里使用原生的showModalBottomSheet来实现 showModalBottomSheet的Props 名称 描述 isScrollControlled全屏还是半屏isDismissible外部是否可以点击,false不可以点击,true可以点击&a…

【STM32】单级与串级PID控制的C语言实现

【STM32】单级与串级PID的C语言实现 前言PID理论什么是PIDPID计算过程PID计算公式Pout、Iout、Dout的作用单级PID与串级PID PID应用单级PID串级PID 前言 笔者最近在学习PID控制器,本文基于Blog做以总结。CSDN上已有大量PID理论知识的优秀文章,因此本文将…

【Kubernetes】(K8S)彻底卸载详细教程

以下全部操作都是使用root用户进行(非root用户可以使用sudo),并且全部命令都需要在Kubernetes集群的所有节点分别执行: 第一步、停止K8S 所有节点执行: 1 2 3 systemctl stop kubelet systemctl stop etcd systemct…

[Web安全 网络安全]-XSS跨脚本攻击

文章目录: 一:前言 1.定义 2.漏洞出现的原因 3.鉴别可能存在XSS漏洞的地方 4.攻击原理 5.危害 6.防御 7.环境 7.1 靶场 7.2 自动扫描工具 7.3 手工测试工具 8.payload是什么 二:常用的标签语法 三:XSS的分类 反射…

ubuntu系统服务器离线安装python包

一、根据工程需要本地下载所需python包 1. 下载环境requirements.txt pip freeze > requirements.txt2. 根据requirements.txt下载python包 注意:查看服务器属于x_86架构还是arm架构、cpython还是pypy 2.1 确定服务器架构(终端输入) …

SpringBoot用kafka.listener监听接受Kafka消息

1.创建kafka监听配置并进行注册 import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.common.serialization.StringDeserializer; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation…

连续时间,离散频率 傅里叶

时域周期——不是把一个信号周期化,而是周期信号取一个周期是x(t),对其周期化不会发生时域的重叠。故当接收到信号,在DFT时,以整个接收到的时间信号为周期进行延拓 推导公式时思路:时域卷积周期冲击,用傅里叶变换推导出…