#鸿蒙通关秘籍#如何在鸿蒙中实现文本首尾相接循环滚动效果

HarmonyOS
7h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
墨s舞步CRM

在鸿蒙中,实现文本首尾相接的循环滚动效果可以通过结合 Scroll 组件与 Text 组件来完成。以下是具体的实现步骤:

  1. 使用 Scroll 组件包裹 Text 组件,首次显示所有文本。
  2. 当文本长度超过 Scroll 组件的宽度时,通过判断条件显示相同的文本。
  3. 使用 offset 动画来控制文本的偏移,实现连续滚动效果。
  4. 通过定时器 setTimeout 实现滚动到末尾时的停滞,并在停滞后重设偏移量,重新开始滚动。

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

scrollAnimation() { if (ticketCheckTextWidth < ticketCheckScrollWidth) { return; } animateTo({ duration: Constants.ANIMATION_DURATION, curve: Curve.Linear, delay: delay, onFinish: () => { setTimeout(() => { ticketCheckTextOffset = 0; scrollAnimation(); }, Constants.DELAY_TIME) } }, () => { ticketCheckTextOffset = -(ticketCheckTextWidth + Constants.BLANK_SPACE) }) }

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