【HarmonyOS 5.0.0 或以上】构建旋转加载动画组件 SpinLoader:支持自定义图标 / 连续旋转 / 多态组合动效

🎯 目标

封装一个经典的旋转加载组件 SpinLoader,适用于:

  • 页面加载、接口请求、提交处理过程中的等待反馈

  • 可自定义图标(SVG / Emoji / 图片)

  • 支持无限旋转、手动控制开始/暂停

  • 可嵌套在按钮、卡片、全屏遮罩中使用

  • 后续可扩展为组合动画(旋转+闪烁)、变速旋转、点击加速等效果


🧱 动效结构示意

🔄 图标围绕中心连续旋转(如刷新、加载中)

🧰 组件实现:SpinLoader.ets(无限旋转动画)

@Component
export struct SpinLoader {
  @Prop size: number = 40
  @Prop icon: string = '🔄'
  @Prop duration: number = 800
  @Prop autoStart: boolean = true

  @State angle: number = 0
  @State spinning: boolean = this.autoStart

  aboutToAppear() {
    if (this.spinning) {
      this.rotateLoop()
    }
  }

  build() {
    Text(this.icon)
      .fontSize(this.size)
      .rotate({ angle: this.angle })
      .animateTo({ duration: this.duration, curve: Curve.Linear })
  }

  private async rotateLoop() {
    while (this.spinning) {
      this.angle += 360
      if 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值