[英]How to implement double tap for surface view in android
请告诉如何使用手势检测器在 Android 中为SurfaceView
实现双击。 有人可以提供代码示例吗?
您可以尝试以下...实际上我对此进行了测试,并且效果很好:
1)扩展GestureDetector.SimpleOnGestureListener
并覆盖它的onDoubleTap()
方法:
class DoubleTapGestureDetector extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onDoubleTap(MotionEvent e) {
Log.d("TAG", "Double Tap Detected ...");
return true;
}
}
2)实例化GestureDetector
:
final GestureDetector mGesDetect = new GestureDetector(this, new DoubleTapGestureDetector());
3)在SurfaceView
上设置OnTouchListener
,覆盖其onTouch()
方法并在GestureDetector
对象上调用onTouchEvent()
:
surfview.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
mGesDetect.onTouchEvent(event);
return true;
}
});
我已经尝试过上述解决方案。 但是,它对我的情况不起作用。 我在表面视图触摸监听器中得到了触摸事件,但在onDoubleTap或onSingleTapConfirmed方法中都没有找到任何回调。 我的代码如下:
final GestureDetector gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener(){
@Override
public boolean onDoubleTap(MotionEvent e) {
// code here
return super.onDoubleTap(e);
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
// code here
return super.onSingleTapConfirmed(e);
}
});
surfaceView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
});
当我使表面视图可点击时,它起作用了。
surfaceView.setClickable(true);
可以在此链接中找到详细说明
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.