HarmonyOS7 转场动画 Transition:页面切换更顺滑

发布时间:2026/9/12 20:06:29
HarmonyOS7 转场动画 Transition:页面切换更顺滑 文章目录前言组件出现与消失的转场代码实现自定义转场方向与组合核心代码页面跳转转场完整示例转场不生效排查清单常见误区小白必踩完整可运行示例页面转场代码解析写在最后前言你有没有注意过好的 app 在页面之间切换、弹窗出现消失时不是啪地硬切而是有个淡入、滑入的过程这种过渡就叫转场动画。HarmonyOS 里做转场非常简单核心就一个.transition()修饰符。这篇文章我把组件出现/消失、页面跳转两种转场都讲了配代码你直接抄。组件出现与消失的转场最常见场景点按钮一个提示条从顶部滑下来再点它滑回去。关键是用状态控制组件是否存在再给它加转场。代码实现LocalshowTip:booleanfalsebuild(){Column(){Button(切换提示).onClick((){this.showTip!this.showTip})if(this.showTip){Text(这是一条温馨提示).fontSize(14).backgroundColor(#FFF3CD).padding(10).transition(TransitionEffect.SLIDE)// 滑入滑出}}}讲解if (this.showTip)控制这个 Text是否存在于组件树里。.transition(TransitionEffect.SLIDE)当组件出现或消失时自动播放滑入/滑出动画。注意transition只对组件的插入和删除生效。你用if控制存在性它就天然有了转场时机。直接改opacity是不会触发 transition 的。自定义转场方向与组合TransitionEffect还能组合多种效果比如淡入 从下方滑入核心代码.transition(TransitionEffect.OPACITY.combine(TransitionEffect.translate({y:30})).combine(TransitionEffect.scale({x:0.9,y:0.9})))OPACITY透明度过渡淡入淡出。.translate({ y: 30 })从下方 30vp 处滑入。.scale(...)带一点缩放显得更柔和。.combine(...)把多个效果叠加一次满足。页面跳转转场页面之间切换用Navigation的转场或在 push 时指定动画。简单起见给目标页的Entry组件加转场完整示例// 目标页面EntryComponentV2struct DetailPage{build(){Column(){Text(详情页).fontSize(24)}.width(100%).height(100%).transition(TransitionEffect.translate({x:100%}).animation({duration:300}))}}x: 100%表示从右边整屏宽度的位置滑入配合 300ms就是经典的新页面从右推入效果。转场不生效排查清单现象原因解决完全没动画没用if控制存在性用if/else控制组件增删只有淡入没滑动只写了 OPACITY用.combine(translate)动画卡顿duration 太长或组合过多精简效果控制在 300ms 内常见误区小白必踩误区说明不用if控制组件存在性transition只对组件的插入/删除生效直接改opacity不会触发转场。只写OPACITY没滑动想要滑入滑出用.combine(TransitionEffect.translate(...))叠加。duration 太长转场控制在 300ms 内太长显得拖沓体验反而差。下面这段代码可以直接复制到 DevEco Studio 里运行。建议你边读边敲改一改文末「动手改一改」里的参数亲眼看看效果。完整可运行示例页面转场用transition让组件出现/消失带过渡而不是直接闪现。代码解析// 配合 if 条件 animateTo 触发 transitionEntryComponentstruct TransDemo{Stateshow:booleanfalsebuild(){Column({space:20}){Button(this.show?隐藏:显示).onClick((){animateTo({duration:300},(){this.show!this.show})})if(this.show){Text(我带过渡出现了).fontSize(22).transition(TransitionEffect.OPACITY.animation({duration:300}))}}.width(100%).height(100%).justifyContent(FlexAlign.Center)}}你会看到什么点按钮文字以「淡入/淡出」的方式出现和消失而不是硬切。动手改一改把TransitionEffect.OPACITY改成TransitionEffect.SLIDE文字改为从侧边滑入。给 Text 同时叠两个 transitionOPACITY.combine(TransitionEffect.SLIDE)。把duration: 300改大看慢动作过渡。写在最后转场动画是性价比最高的体验优化——几行.transition()就能让 app 贵气不少。记住核心用if控制存在性来触发转场用combine叠加效果。把你项目里所有弹窗/提示的显隐都加上.transition(TransitionEffect.SLIDE)用户会明显觉得你的 app 更跟手、更顺。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询