HarmonyOS swiper在滑动时子组件的onAreaChange会被调用多次?有没有获取组件position的方法

在swiper的子组件中有onAreaChange,在此方法中有获取位置的信息,这些是否会受滑动影响?具体代码如下:

Swiper(this.swiperContentController) {
  LazyForEach(this.pageTitleSource, (item: PregnancyTitleData) => {
    ...
    .
    Column() {
      ...
    }.onAreaChange((oldValue: Area, newValue: Area) => {
      let newX = newValue.globalPosition.x as number
      if (newX < 0) {
        newX = 0
      }
      this.thumbStartX = newX
    })

    Image($r('app.media.detail_pregnant_icon_schedule'))
      .width(30)
      .height(30)
      .position(this.getFirstPosition())
      .translate({ x: this.getThumbXPosition(), y: 0 })
      .transition(TransitionEffect.SLIDE.animation({
        duration: this.getDuration(),
        curve: Curve.EaseOut,
        iterations: 1,
        playMode: PlayMode.Normal,
      }))
    ...
  }, (item: PregnancyTitleData) => JSON.stringify(item))
}

然后在this.getThumbXPosition()中会用到this.thumbStartX。

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

onAreaChange方法可以获取当前元素相对于父元素的偏移量。在swiper中onAreaChange会被调用多次,且所有列中的onAreaChange都会被调用。在swiper中,有onContentDidScroll方法,可以用来判断对应的列的移动距离,主要是正在展示的列和之后会展示的列,可以通过index来区分。

分享
微博
QQ
微信
回复
1天前
相关问题
组件调用组件方法
1293浏览 • 1回复 待解决
组件调用组件方法
338浏览 • 1回复 待解决
HarmonyOS调用组件方法
454浏览 • 1回复 待解决
HarmonyOS组件调用组件方法
28浏览 • 1回复 待解决