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

鸿蒙NEXT开发动画案例5

 1.创建空白项目


2.Page文件夹下面新建Spin.ets文件,代码如下:

/*** TODO SpinKit动画组件 - Pulse 脉冲动画* author: CSDN—鸿蒙布道师* since: 2024/05/09*/
@ComponentV2
export struct SpinFive {// 参数定义@Require @Param spinSize: number = 48;@Require @Param spinColor: ResourceColor = '#209ED8';// 局部状态@Local scale1: number = 1;@Local opacity1: number = 1;build() {Canvas().width(this.spinSize).height(this.spinSize).borderRadius(this.spinSize).backgroundColor(this.spinColor).renderFit(RenderFit.CENTER).scale({ x: this.scale1, y: this.scale1 }).opacity(this.opacity1).onAppear(() => {this.startAnimation();})}/*** 启动无限循环的关键帧动画*/private startAnimation(): void {const uiContext = this.getUIContext();if (!uiContext) return;const keyframes: Array<KeyframeState> = [{duration: 0,curve: Curve.EaseInOut,event: (): void => {this.scale1 = 0;this.opacity1 = 1;},},{duration: 1000,curve: Curve.EaseInOut,event: (): void => {this.scale1 = 1.0;this.opacity1 = 0.01;},}];uiContext.keyframeAnimateTo({ iterations: -1, delay: 0 },keyframes);}
}
代码如下:
/*** TODO SpinKit动画组件 - Pulse 脉冲动画* author: CSDN—鸿蒙布道师* since: 2024/05/09*/
@ComponentV2
export struct SpinFive {// 参数定义@Require @Param spinSize: number = 48;@Require @Param spinColor: ResourceColor = '#209ED8';// 局部状态@Local scale1: number = 1;@Local opacity1: number = 1;build() {Canvas().width(this.spinSize).height(this.spinSize).borderRadius(this.spinSize).backgroundColor(this.spinColor).renderFit(RenderFit.CENTER).scale({ x: this.scale1, y: this.scale1 }).opacity(this.opacity1).onAppear(() => {this.startAnimation();})}/*** 启动无限循环的关键帧动画*/private startAnimation(): void {const uiContext = this.getUIContext();if (!uiContext) return;const keyframes: Array<KeyframeState> = [{duration: 0,curve: Curve.EaseInOut,event: (): void => {this.scale1 = 0;this.opacity1 = 1;},},{duration: 1000,curve: Curve.EaseInOut,event: (): void => {this.scale1 = 1.0;this.opacity1 = 0.01;},}];uiContext.keyframeAnimateTo({ iterations: -1, delay: 0 },keyframes);}
}

3.修改Index.ets文件,代码如下:
 

import { SpinFive } from './Spin';@Entry
@Component
struct Index {@State message: string = 'Hello World';build() {Column() {SpinFive({spinSize: 60,spinColor: '#FF0000'})}.alignItems(HorizontalAlign.Center).justifyContent(FlexAlign.Center).height('100%').width('100%')}
}代码如下:
import { SpinFive } from './Spin';@Entry
@Component
struct Index {@State message: string = 'Hello World';build() {Column() {SpinFive({spinSize: 60,spinColor: '#FF0000'})}.alignItems(HorizontalAlign.Center).justifyContent(FlexAlign.Center).height('100%').width('100%')}
}

4.运行项目,登录华为账号,需进行签名

5.动画效果如下:
 

http://www.xdnf.cn/news/4926.html

相关文章:

  • tomcat6性能优化
  • MySQL 数据库操作
  • uniapp小程序轮播图高度自适应优化详解
  • 使用Python 打造多格式文件预览工具 — 图、PDF、Word、Excel 一站式查看
  • Java SE(10)——抽象类接口
  • 高效C/C++之十:Coverity修复问题:尽量多使用 c++强制类型转化
  • 人工智能之数学基础:二次型
  • 内网渗透——红日靶场三
  • HOT 100 | 【子串】76.最小覆盖子串、【普通数组】53.最大子数组和、【普通数组】56.合并区间
  • AI与计算机视觉(CV):目标检测与图像分割的最新进展
  • 行业 |四大痛点待破:“拆解”DeepSeek一体机
  • 英伟达Blackwell架构重构未来:AI算力革命背后的技术逻辑与产业变革
  • 【强化学习】动态规划(Dynamic Programming, DP)算法
  • Jenkins集成Maven
  • 如何构建容器镜像并将其推送到极狐GitLab容器镜像库?
  • 【亲测有效】如何清空但不删除GitHub仓库中的所有文件(main分支)
  • 单例模式的两种设计
  • [论文阅读]Deeply-Supervised Nets
  • Idea Code Templates配置
  • K8S - Harbor 镜像仓库部署与 GitLab CI 集成实战
  • 工业与协议融合篇:如何将多个协议集成进一个系统?
  • OpenCV中适用华为昇腾(Ascend)后端的逐元素操作(Per-element Operations)
  • MCU存储系统架构解析
  • 面试问题(连载。。。。)
  • 【Bootstrap V4系列】学习入门教程之 组件-下拉菜单(Dropdowns)
  • k8s术语之secret
  • 数据库——关系代数之扩展操作
  • Java—— 集合 Collection
  • SNMP 协议介绍、开发方法及示例
  • 0X. Linux嵌入式系统(课堂笔记)