HarmonyOS Next地址交换动画案例 原创

zhushangyuan_
发布于 2024-2-1 20:23
浏览
0收藏

HarmonyOS Next应用开发案例(持续更新中……)

本案例完整代码,请访问:https://gitee.com/harmonyos-cases/cases/tree/master/CommonAppDevelopment/feature/addressexchange

介绍

本示例介绍使用显式动画 animateTo 实现左右地址交换动画。该场景多用于机票、火车票购买等出行类订票软件中。

效果预览图

HarmonyOS Next地址交换动画案例-鸿蒙开发者社区
使用说明

  1. 加载完成后显示地址交换动画页面,点击中间的图标,左右两边地址交换。

实现思路

  1. 创建左右两边Text组件显示地址。设置初始偏移量以及文本对齐方式。源码参考AddressExchangeView.ets
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)
  ...
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  1. 点击中间的图标时,修改是否切换的状态变量值和通过animateTo修改偏移量的值,来实现动态更新左右两边地址的显示,完成动画效果。源码参考AddressExchangeView.ets
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;
  })
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.

工程结构&模块类型

addressexchange                                            // har类型
|---view
|   |---AddressExchangeView.ets                            // 视图层-地址交换动画页面 
  • 1.
  • 2.
  • 3.

模块依赖

utils

参考资料

显式动画

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
标签
2
收藏
回复
举报
2
2
2条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

前排学习下

回复
2024-2-2 10:23:48
忙忙忙困困困
忙忙忙困困困

努力学习中


回复
2024-2-4 12:44:08


回复
    相关推荐