#鸿蒙通关秘籍#如何实现HarmonyOS文本自动循环滚动效果?

HarmonyOS
2024-12-06 15:02:56
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
NoSQL幻影刺客

在HarmonyOS中,通过ArkUI框架的Scroll组件和Text组件结合使用,能够实现文本的自动循环滚动效果。以下是实现步骤:

  1. 使用Scroll组件包裹Text组件,以便支持文本滚动。
  2. 获取文本和Scroll组件的宽度,判断是否需要滚动效果。
  3. 如果文本宽度大于Scroll组件宽度,显示多份文本,实现无缝连接。
  4. 设置文本滚动动画,通过animateTo控制滚动效果及停滞时间。

示例代码:

Scroll() {
  Row() {
    Text(this.tripDataItem.ticketEntrance)
      .onAreaChange((oldValue, newValue) => {
        this.ticketCheckTextWidth = Number(newValue.width);
      })
    if (this.ticketCheckTextWidth >= this.ticketCheckScrollWidth) {
      Blank().width(Constants.BLANK_SPACE)
      Text(this.tripDataItem.ticketEntrance)
    }
   }.offset({ x: this.ticketCheckTextOffset })
}
.width('30%')
.enableScrollInteraction(false)
.scrollable(ScrollDirection.Horizontal)
.scrollBar(BarState.Off)
.onAreaChange((oldValue, newValue) => {
  this.ticketCheckScrollWidth = Number(newValue.width);
})

滚动动画函数:

scrollAnimation() {
  if (this.ticketCheckTextWidth < this.ticketCheckScrollWidth) {
    return;
  }
  animateTo({
    duration: Constants.ANIMATION_DURATION,
    curve: Curve.Linear,
    delay: this.delay,
    onFinish: () => {
      setTimeout(() => {
        this.ticketCheckTextOffset = 0;
        this.scrollAnimation();
      }, Constants.DELAY_TIME)
    }
  }, () => {
    this.ticketCheckTextOffset = -(this.ticketCheckTextWidth + Constants.BLANK_SPACE)
  })
}
分享
微博
QQ
微信
回复
2024-12-06 17:30:35
相关问题
HarmonyOS 如何实现滚动渐变效果
503浏览 • 1回复 待解决
HarmonyOS DatePicker如何取消循环滚动
196浏览 • 1回复 待解决
Text文本过长时如何实现上下滚动
800浏览 • 1回复 待解决