鸿蒙属性动画、转场动画、帧动画

属性动画-animation:
1.基本使用:声明相关状态变量,将状态变量设置到相关可动画属性接口,通过属性动画接口开启属性动画(在属性动画上面的属性会应用动画)


2.常用属性:animation({ 动画参数 })

duration,类型:number,作用:动画时长,单位为毫秒。
curve类型:string,作用:设置动画曲线,默认值:Curve.EaseInOut
delay类型:number,作用:动画延迟播放时间,单位为毫秒,默认不延时播放。
iterations类型:number作用:动画播放次数,默认值:1,0无效,-1循环
playMode类型:枚举PlayMode作用:动画播放模式,默认播放完成后重头开始播放。
onFinish类型:() => void作用:结束回调,动画播放完成时触发。


3.组件加载自动触发:
onAppear(event: () => void)    //组件挂载显示时触发此回调。
onDisAppear(event: () => void)    //组件卸载消失时触发此回调。


4.属性动画-animateTo:作为属性使用,而animateTo显示动画是一个系统的内置函数,可以直接调用。功能上和 animation一致,适合于给多个元素应用同一套动画的场景
用法:声明相关状态变量将状态变量设置到相关可动画属性接口  
通过属性动画接口开启属性动画(在属性动画上面的属性会应用动画)
写法// 参数 1 动画选项 和 animation 相同       // 参数 2 箭头函数,状态变量的修改写在里面
animateTo({}, () => {})


5.转场动画:转场动画是指对将要出现或消失的组件做动画,对始终出现的组件做动画应使用属性动画,上面学习的那两个
(1)创建TransitionEffect     ?//名字: object//类型 = TransitionEffect//枚举.OPACITY.animation({}))
(2)将转场效果通过transition接口设置到组件  Text('test').transition(this.?//名字)加transition属性
(3)新增或者删除组件触发转场,如:
@State isPresent: boolean = true;
...
if (this.isPresent) {
  Text('test')
    .transition(effect)
}
...
// 控制新增或者删除组件
// 方式一:将控制变量放到animateTo闭包内,未通过animation接口定义动画参数的TransitionEffect将跟随animateTo的动画参数
animateTo({ curve: curves.springMotion() }, () => {
  this.isPresent = false;
})
// 方式二:直接控制删除或者新增组件,动画参数由TransitionEffect的animation接口配置
this.isPresent = false;


6.出现消失转场-转场效果:转场效果可以通过下列语法随意进行设置,支持通过点语法链式调用
// 设置多个效果 出现和消失均有转场
?//名字: object = TransitionEffect
    .OPACITY.animation({})
    .combine(TransitionEffect.scale({ x: 0, y: 0 }))// 组合 缩放效果
    .combine(TransitionEffect.rotate({ angle: 90 })) // 组合 旋转效果
    .combine(TransitionEffect.move(TransitionEdge.END)) // 组合 移动效果
// 出现没有转场         
// 消失透明度转场
? //名字: object = TransitionEffect.asymmetric(
  TransitionEffect.IDENTITY, // 出现转场
  TransitionEffect.OPACITY.animation({ // 消失转场
    duration: 300
  }))


7.ImageAnimator 帧动画组件
ImageAnimator不是容器组件,也不需要传递参数,只需要设置属性即可
其中images设置图片帧信息集合。       state默认为初始状态,用于控制播放状态。
duration单位为毫秒,默认时长为1000ms           iterations默认播放一次,设置为-1无限播放
状态类型为:ImageFrameInfo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值