HarmonyOS鸿蒙Next中Swiper onGestureSwipe是跟手滑动时的逐帧回调,但是松手后发现还是会回调,正常吗?

HarmonyOS鸿蒙Next中Swiper onGestureSwipe是跟手滑动时的逐帧回调,但是松手后发现还是会回调,正常吗?感觉不正常啊

3 回复

研读ArkUI ace仓源码发现,目前Swiper onGestureSwipe系统规格设计如此,Swiper的onGestureSwipe跟手阶段包括DragEnd离手这一帧,手势顺序是先Touch UP再DragEnd,所以会出现离手后还会回调一次onGestureSwipe的日志的情况。

建议将Touch UP换成onAnimationStart回调,onAnimationStart是在DragEnd离手后触发的。

更多关于HarmonyOS鸿蒙Next中Swiper onGestureSwipe是跟手滑动时的逐帧回调,但是松手后发现还是会回调,正常吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,Swiper组件的onGestureSwipe回调在用户滑动时会逐帧触发,松手后继续回调是正常行为。这是因为滑动惯性效果仍在继续,系统会继续触发回调直到滑动完全停止。开发者可以通过判断滑动速度或状态来处理松手后的逻辑。

这是正常现象。在HarmonyOS Next中,Swiper组件的onGestureSwipe回调不仅会在手指拖动时触发,在松手后的惯性滑动阶段也会继续触发回调,直到滑动完全停止。这种设计是为了让开发者能够完整跟踪滑动过程的每个阶段,包括惯性滑动时的位置变化。如果需要区分主动拖动和惯性滑动,可以通过GestureEvent中的velocity参数来判断 - 当velocity为0时表示拖动结束,非0值表示处于惯性滑动状态。

回到顶部