KitKat SDK支持一种名为quick scale的新型缩放手势。用户可以双击并滑动以缩放视图,而不需要两个手指来捏缩放。您可以在Chrome和地图应用中看到这一点。
Chrome和地图区分双击(放大相关内容区域,如前所述)和双击滑动(允许您用一根手指任意缩放)。
引擎盖下,ScaleGestureDetector uses a GestureDetector检测双击并开始寻找相应的滑动。
我的问题是如何模仿Chrome和地图,检测双击和双击滑动手势,但不能同时检测两者。也就是说,我想区分正常的双击(无滑动)和双击滑动。
我有一个GestureDetector和一个ScaleGestureDetector正在我视图上的所有触摸事件。目前,当我进行双击滑动时,GestureListener.onDoubleTap()和ScaleGestureListener.onScaleBegin()都会触发。 onDoubleTap()首先被触发,因此无法取消处理ScaleGestureListener中的事件。
我看到两种可能的解决方案,两者都不是很干净:
处理此问题的最佳方式是什么?
答案 0 :(得分:0)
这个派对有点晚了,但是快速刻度更像是一个未完成的双击,第二个点击变成拖动,如:
点按,点按,点按,移动
您对快速比例的解释似乎是:
点按,点按,点按,点按,点按,移动
如果您只在第二个操作上注册一个简单的双击,这会让您的问题变得更容易。当第二次动作发生时,您只需要确定在第二次敲击循环期间是否发生了拖动。如果手势识别器不适合您,您可以通过查看getScaledTouchSlop手动执行此操作。
此外,复制ScaleGestureDetector可能没有你想象的那么糟糕 - github充斥着“compat”项目,这些项目基本上是新版本SDK中功能的后端。