
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
弹性边界效果的核心就一个衰减函数,用atan做非线性阻力,松手后animateTo回弹。代码量不大,但效果提升非常明显。有了这个弹性效果,普通的拖拽功能瞬间就变得有质感了,用户在操作中会感到一种"弹性"的愉悦感。

区分单击和双击的核心就是GestureMode.Exclusive加上TapGesture的count参数。把count:2放在前面优先匹配,count:1兜底,系统自动帮你处理等待超时和手势竞争。这个方案简单可靠,是目前HarmonyOS6上做单击双击区分的最佳实践。

滑动删除这个功能用Stack+PanGesture实现起来非常灵活,不受系统swipeAction的限制,想怎么定制就怎么定制。核心就是上层translate跟着手指走,松手后根据阈值判断是展开还是回弹。这个方案在HarmonyOS6的手机上体验很好,PC端加上hover和右键菜单之后也不错。

拖拽排序虽然是个老生常谈的功能,但真正用HarmonyOS6的手势API实现起来还是有不少细节要处理。核心就是长按进入拖拽模式、PanGesture跟踪手指位置、松手后执行数组重排。把这三个步骤做好,再加上合理的视觉反馈和PC端的hover效果,一个体验不错的拖拽排序列表就搞定了。

GestureMode.Exclusive解决的是"多个手势抢着触发"的问题。单击和长按的区分是最典型的场景,但只要你的需求是"用户做了一个动作,系统要判断是A还是B",都可以用互斥手势组来搞定。把判断逻辑交给系统,你的代码只需要关心"触发A做什么、触发B做什么"就行了。

顺序手势组是做"先选中再操作"交互的最佳方案。长按+拖拽这个组合在各种列表编辑、画板工具、图片标注场景里都用得到。关键是把步骤反馈做好,让用户随时知道自己在哪个阶段,别让人家猜。

先说下手势组GestureGroup的概念。它可以把多个手势组合在一起,然后通过不同的GestureMode来控制这些手势之间的关系。GestureMode.Parallel就是并行模式——组内的所有手势可以同时生效。用户一根手指拖拽的同时,另一只手可以缩放或旋转,三个操作互不干扰。这在图片编辑、地图操作、画板应用里非常常见。与之对比的是Sequence(顺序模式,手势要按顺序触发)和Exclus

滑动速度检测是一个被低估的功能,很多开发者只用SwipeGesture来判断方向,完全忽略了speed这个宝藏属性。实际上,合理利用速度信息可以让交互体验提升一个档次——用户随手一甩就能快速翻页,慢慢滑动可以精细浏览,这种差异化的反馈会让App用起来特别舒服。

SwipeGesture的方向检测本质上就是角度判断,搞清楚angle的对应关系就没什么难度了。上面这个例子虽然简单,但覆盖了方向检测的核心逻辑,拿到项目中稍微改改就能用。后面还会继续写手势相关的系列文章,包括速度检测、手势组合这些更高级的玩法,感兴趣的可以关注一下。

这是这个手势系列的最后一篇了。从最基础的onClick到PanGesture、PinchGesture、RotationGesture,再到今天PC端的交互差异,基本上把HarmonyOS手势交互的核心内容都覆盖了。回过头来看,手势交互的核心就两件事:选对API、做好细节。API就那么几个,用法也不复杂。但视觉反馈、边界处理、状态恢复这些细节,才是区分"能用"和"好用"的关键。做PC端的Harmo








