HarmonyOS List停止滑动回调不准确

​List 组件有个回调方法 onScrollStop,这个方法不是真正停止的时候调用,而是每次还在往上滑动中,我又往上滑一下也会调用,但是实际上这个时候并没有停止,所以应该是不需要调用的,要么可以再加一个真正停止滑动了的回调也可以。

很多的业务场景都是等 List 停止滚动了再执行,以免影响性能和过多的请求,目前除了 onScrollStop 相对满足要求,但是有上面的问题,导致效果不理想。​

HarmonyOS
2024-10-29 10:35:52
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

​onScrollStop回调不停地被触发的原因是因为在List边缘效果为弹簧效果时,划动经过起始位置时会触发一次,回弹回起始位置时再触发一次。当滑动继续进行且超出边缘时,会再次触发该事件。

如果您希望在滑动到边缘后停止滑动并不再触发该事件,可以考虑设置List的EdgeEffect属性为None,这样就不会有越界回弹的情况发生了。

可以借鉴防抖函特性,在滚动开始时清除查询延迟任务,滚动停止时开始延迟任务。

Demo如下:​

@Entry  
@Component  
struct ListDemo {  
  private arr: number[] = [];  
  private scrollerForScroll: Scroller = new Scroller();  
  private timer: number = 0  
  
  aboutToAppear(): void {  
    for (let i = 0; i < 100; i++) {  
      this.arr.push(i)  
    }  
  }  
  build() {  
    Column() {  
      List({ space: 10, scroller: this.scrollerForScroll }) {  
        ForEach(this.arr, (item: number) => {  
          ListItem() {  
            Text("ListItem" + item)  
              .width("100%")  
              .height("100%")  
              .borderRadius(15)  
              .fontSize(24)  
              .textAlign(TextAlign.Center)  
              .backgroundColor(Color.White)  
          }.width("100%").height(100)  
        }, (item: number) => item + '')  
      }  
      .width("100%")  
      .scrollBar(BarState.Off)  
      .onScrollStart(() => {  
        clearTimeout(this.timer)  
      })  
      .onScrollStop(() => {  
        this.timer = setTimeout(() => {  
          console.log('test onScrollStop')  
        }, 500)  
      })  
    }  
    .width('100%')  
    .height('100%')  
    .backgroundColor(0xDCDCDC)  
  }  
}
分享
微博
QQ
微信
回复
2024-10-29 17:45:30
相关问题
HarmonyOS onScrollyoffset不准确问题
328浏览 • 1回复 待解决
HarmonyOS 获取当前定位不准确
164浏览 • 1回复 待解决
Polyline组件绘制坐标不准确
1891浏览 • 1回复 待解决
HarmonyOS uv timer定时器不准确
231浏览 • 1回复 待解决
HarmonyOS 地图的路径规划功能不准确
215浏览 • 1回复 待解决
mysql LEFT JOIN 使用SUM不准确
2719浏览 • 1回复 待解决
HarmonyOS Web组件
112浏览 • 1回复 待解决
HarmonyOS list滑动问题
660浏览 • 1回复 待解决
HarmonyOS 如何声明全局函数
238浏览 • 1回复 待解决
HarmonyOS killAllProcesses()无成功的
50浏览 • 1回复 待解决
HarmonyOS 活体检测问题
85浏览 • 1回复 待解决
interface如何调用
858浏览 • 1回复 待解决
HarmonyOS list 嵌套web滑动切换问题
378浏览 • 1回复 待解决
HarmonyOS List嵌套waterflow滑动卡顿
197浏览 • 1回复 待解决
HarmonyOS如何拦截list滑动事件?
272浏览 • 1回复 待解决
HarmonyOS ArkTS接口的案例问题
232浏览 • 1回复 待解决
HarmonyOS 组件是否有销毁方法
428浏览 • 1回复 待解决