8、鸿蒙动画开发实战:做一个会跳舞的按钮!(附动效示意图)

动画是提升鸿蒙应用交互体验的关键利器。今天,我们手把手实现一个"跳跃动画按钮",通过 ArkTS 的动画能力打造更灵动的 UI,打造真正有"呼吸感"的界面!


🎯 一、目标效果

  • ✅ 按钮点击后执行放大/缩小的跳跃动画
  • ✅ 动效自然顺滑
  • ✅ 支持重复点击,不卡顿

🔧 二、使用到的动画能力

HarmonyOS ArkUI 动画支持以下模式:

  • 属性动画(支持 scale/translate/opacity 等)
  • 曲线动画(easeIn/easeOut/elastic 等)
  • 帧动画(适用于逐帧切换)

我们将用 animateTo 实现尺寸动画。


🛠️ 三、实战代码:实现跳动按钮

scss 复制代码
@Entry
@Component
struct BouncyButton {
  @State scaleVal: number = 1.0

  build() {
    Column() {
      Text('点我跳动!')
        .fontSize(18)
        .padding(12)
        .backgroundColor('#4A90E2')
        .borderRadius(12)
        .scale({ x: this.scaleVal, y: this.scaleVal })
        .onClick(() => {
          this.animate()
        })
    }
    .alignItems(HorizontalAlign.Center)
    .justifyContent(FlexAlign.Center)
    .height('100%')
  }

  animate() {
    animateTo({ duration: 100, curve: Curve.EaseInOut }, () => {
      this.scaleVal = 1.2
    }, () => {
      animateTo({ duration: 100, curve: Curve.EaseInOut }, () => {
        this.scaleVal = 0.9
      }, () => {
        animateTo({ duration: 100, curve: Curve.EaseInOut }, () => {
          this.scaleVal = 1.0
        })
      })
    })
  }
}

🖼️ 四、效果图预览(跳跃中帧)

图示说明:按钮缩放至 1.2 倍,边角圆润,蓝色背景,字体居中,动画自然跳动


📌 五、知识点回顾

技术点 说明
@State 控制动画目标值(scale)
animateTo 实现平滑补间动画
多段动画嵌套 三段组合实现"先放大→再缩小→归位"
scale 控制缩放大小,支持 X/Y 分别定义

🧩 六、扩展玩法推荐

  • 加上点击反馈音效:增强触感体验
  • 加入弹性曲线(Curve.Spring) :更拟真
  • 支持长按持续跳动:玩法增强
  • 跳动 + 颜色渐变联动:打造视觉动效 combo!

📘 第九篇预告

《设备能力调用全攻略:调用相机、定位与系统分享》

教你玩转鸿蒙端侧原生能力,让你的应用动真格!


相关推荐
wefly20174 分钟前
从使用到原理,深度解析m3u8live.cn—— 基于 HLS.js 的 M3U8 在线播放器实现
java·开发语言·前端·javascript·ecmascript·php·m3u8
小江的记录本21 分钟前
【事务】Spring Framework核心——事务管理:ACID特性、隔离级别、传播行为、@Transactional底层原理、失效场景
java·数据库·分布式·后端·sql·spring·面试
sheji341628 分钟前
【开题答辩全过程】以 基于springboot的校园失物招领系统为例,包含答辩的问题和答案
java·spring boot·后端
程序员cxuan37 分钟前
人麻了,谁把我 ssh 干没了
人工智能·后端·程序员
英俊潇洒美少年40 分钟前
vue如何实现react useDeferredvalue和useTransition的效果
前端·vue.js·react.js
钛态1 小时前
Flutter for OpenHarmony:mockito 单元测试的替身演员,轻松模拟复杂依赖(测试驱动开发必备) 深度解析与鸿蒙适配指南
服务器·驱动开发·安全·flutter·华为·单元测试·harmonyos
kyriewen111 小时前
给浏览器画个圈:CSS contain 如何让页面从“卡成PPT”变“丝滑如德芙”
开发语言·前端·javascript·css·chrome·typescript·ecmascript
英俊潇洒美少年1 小时前
react19和vue3的优缺点 对比
前端·javascript·vue.js·react.js
wuyikeer2 小时前
Spring Framework 中文官方文档
java·后端·spring
Victor3562 小时前
MongoDB(61)如何避免大文档带来的性能问题?
后端