#鸿蒙通关秘籍#如何在鸿蒙应用中实现地址交换动画?

HarmonyOS
8h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
云海迷踪SMM

使用显式动画 animateTo 可以实现地址交换动画效果,以下是实现步骤:

  1. 创建左右两个 Text 组件以显示地址,并设置初始偏移量和文本对齐方式:

    ts Row() { Text($r('app.string.address_exchange_address_left')) .translate({ x: this.translateX }) .width($r('app.string.address_exchange_address_width')) .textAlign(this.swap ? TextAlign.End : TextAlign.Start) ...

    Text($r('app.string.address_exchange_address_right')) .translate({ x: -this.translateX }) .width($r('app.string.address_exchange_address_width')) .textAlign(this.swap ? TextAlign.Start : TextAlign.End) ... }

  2. 点击中间图标时,通过 animateTo 修改偏移量,使左右地址动态更新,实现动画效果:

    ts Stack() { Image($r('app.media.address_exchange_airplane')) .size({ height: $r('app.integer.address_exchange_airplane_size'), width: $r('app.integer.address_exchange_airplane_size') })

    Image($r('app.media.address_exchange_recycle')) .size({ height: $r('app.integer.address_exchange_recycle_size'), width: $r('app.integer.address_exchange_recycle_size') }) .rotate({ angle: this.rotateAngle }) .animation({ curve: Curve.EaseOut, playMode: PlayMode.Normal, }) } .width($r('app.string.address_exchange_image_width')) .onClick(() => { this.swap = !this.swap animateTo({ curve: curves.springMotion() }, () => { if (this.swap) { this.translateX = this.distance; } else { this.translateX = this.zeroTranslate; } }) this.rotateAngle += this.rotateAddAngle; })

分享
微博
QQ
微信
回复
5h前
相关问题