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

HarmonyOS7 TransitionEffect 实战:组件显示隐藏的过渡动画

文章目录

    • 前言
    • 效果展示
    • 实现原理
    • 代码详解
      • 基础淡入淡出 + 缩放组合
      • 隐藏时的占位提示
      • 控制按钮
    • TransitionEffect 有哪些效果
      • 不对称过渡 TransitionEffect.asymmetric
    • 常见问题
    • 写在最后

前言

App 里经常有这种需求:点击按钮,一个面板优雅地淡入出现;再点一下,面板缩小消失。不是简单的"有"和"无"的硬切,而是有一个过渡过程。

在 ArkUI 中,这个效果靠transition属性配合if-else条件渲染来实现。今天就来聊聊TransitionEffect的各种玩法,包括组合效果和不对称过渡。

效果展示

实现了一个可切换的内容面板:

  • 显示时,面板从中心缩放展开并淡入
  • 隐藏时,面板缩小并淡出
  • 支持切换不同内容,每次切换都带过渡动画

实现原理

TransitionEffect是 ArkUI 专门为组件出现/消失设计的过渡效果。它和.animation()不一样——.animation()是属性值变化时的过渡,而transition组件从无到有、从有到无时的过渡。

简单说就是:

  • .animation()→ 组件存在,属性变化时的动画
  • .transition()→ 组件创建/销毁时的动画

代码详解

基础淡入淡出 + 缩放组合

if(this.visible){Column().width('100%').height(120).backgroundColor(PRESET_COLORS[this.selectedIndex%8].value).borderRadius(16).transition(TransitionEffect.OPACITY.animation({duration:400,curve:Curve.EaseInOut}).combine(TransitionEffect.scale({x:0,y:0}).animation({duration:400})))}

拆解一下这段代码:

  1. TransitionEffect.OPACITY:透明度从 0 过渡到 1(出现时)或从 1 过渡到 0(消失时)
  2. .animation({ duration: 400 }):为这个效果指定动画参数
  3. .combine(...):组合另一个过渡效果——从 scale(0,0) 到 scale(1,1)

两个效果同时播放,就实现了"从中心缩放展开并淡入"的效果。

隐藏时的占位提示

当面板隐藏时,显示一个占位提示,它也有自己的过渡效果:

}else{Column().width('100%').height(120).backgroundColor('#E8E8E8').borderRadius(16).justifyContent(FlexAlign.Center)Column(){Text('内容已隐藏').fontSize(14).fontColor('#999999')}.transition(TransitionEffect.OPACITY.animation({duration:300}))}

这个占位区域只用了透明度渐变,比主面板的过渡简单一些。

控制按钮

Row({space:10}){Button(this.visible?'隐藏':'显示').onClick(()=>{this.visible=!this.visible})Button('切换内容').onClick(()=>{this.selectedIndex++this.visible=true})Button('滑入显示').onClick(()=>{this.visible=true})Button('淡出隐藏').onClick(()=>{this.visible=false})}.width('100%').justifyContent(FlexAlign.SpaceEvenly).margin({top:16})

TransitionEffect 有哪些效果

ArkUI 内置了这些TransitionEffect

效果说明常用参数
TransitionEffect.OPACITY透明度渐变0→1 或 1→0
TransitionEffect.translate()平移过渡{ x: 100 }从右侧滑入
TransitionEffect.scale()缩放过渡{ x: 0, y: 0 }从中心放大
TransitionEffect.rotate()旋转过渡{ angle: 90 }旋转出现
TransitionEffect.move()位置移动过渡基于组件位置变化

这些效果可以通过.combine()任意组合,实现复杂的过渡动画。

不对称过渡 TransitionEffect.asymmetric

如果想要出现和消失时用不同的效果呢?用asymmetric

.transition(TransitionEffect.asymmetric(// 出现时的效果TransitionEffect.OPACITY.animation({duration:300}).combine(TransitionEffect.translate({y:-20}).animation({duration:300})),// 消失时的效果TransitionEffect.OPACITY.animation({duration:200}).combine(TransitionEffect.translate({y:20}).animation({duration:200}))))

出现时从上方滑入 + 淡入(300ms),消失时向下方滑出 + 淡出(200ms)。不对称过渡让交互更自然,因为"出现"和"消失"在视觉上本来就不应该是对称的。

常见问题

Q: transition 不生效怎么办?

检查两点:

  1. 组件必须是在if-else条件渲染中,@State变量控制显示/隐藏
  2. 状态变量的修改必须触发build()重新渲染

Q: 能不能用.animation()替代transition

不行。.animation()只在组件存在时生效,组件被销毁后属性变化就没有载体了。transition专门处理组件创建和销毁的过渡。

Q: 过渡动画的时长怎么选?

经验值:

  • 出现动画:300-500ms,稍慢一点让用户注意到
  • 消失动画:200-300ms,快一点不拖沓

写在最后

TransitionEffect是 ArkUI 里做组件出现/消失动画的利器。掌握combine组合和asymmetric不对称这两个关键 API,就能覆盖绝大部分场景。

实际开发中,建议给每个需要频繁显示/隐藏的面板都加上过渡效果,哪怕是简单的透明度渐变,体验也会好很多。

http://www.jsqmd.com/news/1257087/

相关文章:

  • AI 版权求证:用 Andersen、Getty、Bartz 等真实裁决,拆“AI 偷画“传言
  • 深圳汽车养护服务行业GEO优化公司选型指南丨2026生成式引擎优化服务商深度测评与头部榜单解析 - 企业新闻快传
  • VLA-世界模型-TVA:具身智能的递归改进引擎(4)
  • C++ vector二维数组:从内存布局到性能优化的深度解析
  • 深圳人力资源服务行业GEO优化公司选型指南丨生成式引擎优化服务商深度测评与2026本地实践 - 小随科技
  • 完全指南:5分钟掌握免费在线EPUB编辑器EPubBuilder
  • 走进 Gang of Four 设计模式:责任链模式
  • 大模型选型生死线:幻觉率>5%即不可商用?头部金融科技公司内部评估标准首次流出
  • 专业工具完全指南:高效解决Windows Edge浏览器卸载难题的PowerShell脚本方案
  • OneMore:160+功能让OneNote变身终极笔记管理神器
  • Linux基础命令的使用
  • Adobe GenP破解工具:3分钟免费激活Adobe全家桶终极指南
  • SCMP供应链管理专家报名步骤 - 众智商学院职业教育
  • 2026年7月国内正规的焊管批发厂家哪家好,镀锌方管/球墨铸铁管/焊管,焊管直销厂家哪家好 - 品牌推荐师
  • HarmonyOS7 多媒体能力怎么放进一个页面:MediaPanelSwitcher 组合式案例解析
  • 如何安全畅玩GTA5:YimMenu保护工具终极使用指南
  • VC++串口通讯模块实战:异步I/O、环形缓冲区与工业级可靠性设计
  • 小型化工业网关机工控主板怎么选?多网口与无线扩展集成要点
  • SQLyog社区版:5分钟掌握完全免费的MySQL数据库管理终极指南
  • 如何实现30+平台自动签到:青龙面板一站式解决方案完全指南
  • 2026 年更新:武清可靠的轮式挖掘机出租厂家哪家专业,别再租昂贵设备!这台机器如何帮你省下大笔工程费? - 行业甄选官
  • windows 部署 jar包的方式
  • 上海企业HR招聘渠道盘点:主流平台优劣分析
  • 绿皮书第三章ref
  • AI大模型实战指南:低成本高效应用方案
  • 喷码机数据采集联网监控系统方案
  • cppm证书无锡 - 众智商学院职业教育
  • 2026年广东3D打印塑料外壳生产厂家实力解析 - 卓企推荐
  • 深圳服饰品牌服务行业GEO优化公司选型指南丨生成式引擎优化服务商2026深度测评 - 科技快讯
  • 文件系统中的 FALLOC_FL_PUNCH_HOLE 与文件打洞技术详解