欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > 鸿蒙NEXT开发动画案例5

鸿蒙NEXT开发动画案例5

2025/5/14 16:47:42 来源:https://blog.csdn.net/weixin_48639457/article/details/147813632  浏览:    关键词:鸿蒙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.动画效果如下:
 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词