对于(单个)触摸手势,有一个GestureOverlayView视图,可以将其放置在其他视图(Gridview,Listviews ...)和空白区域上,并且仍然可以正确检测到触摸。
如何制作多点触控(捏/缩小)手势?过度
空的活动空间可以做到
ScaleGestureDetector.SimpleOnScaleGestureListener,但是如果我要怎么办
例如在列表中使用这种手势?
我是否必须为内部的每个视图实现ScaleGesture检测器
明确地进行活动,或者有任何更聪明的方式来做到这一点?
/编辑:更多规范
现在我正在这样做:
//setup listener
overlay = (GestureOverlayView) findViewById(R.id.CgestureOverlayView);
overlay.setGestureVisible(false);
overlay.addOnGesturePerformedListener(this);
但是当我使用GestureOverlayView时,我必须实现这一点
public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture)
问题是我没有Raw手势文件,因为Gestures Builder不允许我构建多点触摸手势。哪里可以实现提到的MotionEvent处理?
我应该做这样的事情,然后重写GestureOverlayView.onTouchEvent()吗? (或者我看不出你的意思,因为即使没有GestureOverlayView也可以使用OnTouchEvent)
public boolean onTouchEvent(MotionEvent ev) {
overlay.onTouchEvent(ev);
return true;
}
// Edit#2最后,我不必使用GestureOverlay,我从ListView捕获了那些MouseEvent,它们填充了整个活动。无论如何,当您拥有MotionEvents时,不必定义自己的多点触摸手势,而可以使用ScaleGestureDetector.SimpleOnScaleGestureListener来处理此类事件。
最佳答案
GestureOverlayView可让您设置GestureOverlayView.OnGestureListener类型的侦听器。此接口中的方法将传递GestureOverlayView接收到的原始MotionEvent。
从这些事件中,应该可以检测到所需的任何手势,甚至包括多点触摸手势。
编辑:而不是使用
overlay.addOnGesturePerformedListener(this);
你会用
overlay.addOnGestureListener(this);
这将为您提供可用于确定任何多点触摸手势的原始MotionEvent。从那里,您将需要对触摸进行自己的跟踪,并弄清何时发生多点触摸手势以及发生了多少移动(我敢肯定有很多示例代码片段可用于缩放)
当然,没有理由您不能只编写自己的与GestureOverlayView相同功能的View类,仅使用多点触摸手势即可,但是如果您仍然希望GestureOverlayView提供的单点触摸手势行为,则此方法将允许您只需添加所需的多点触控支持即可。
关于android - 多点触控多 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26434744/