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

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
CMO晨光熹

在鸿蒙开发中,通过显式动画实现地址交换动画,首先需要设定左右两边的文本组件,并运用animateTo方法改变偏移量来实现动画效果。

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),
  ...
}

点击页面上的图标时,通过更改this.swap的状态变量值,结合animateTo方法实现动态更新两边地址的显示。

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
微信
回复
1天前
相关问题