请告诉我们如何使用手势检测器在Android中实现SurfaceView
的双击。任何人都可以提供代码示例吗?
答案 0 :(得分:16)
你可以试试以下......实际上我测试了它并且效果很好:
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)在OnTouchListener
上设置SurfaceView
,覆盖其onTouch()
方法并致电onTouchEvent()
上的GestureDetector
对象:
surfview.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
mGesDetect.onTouchEvent(event);
return true;
}
});
答案 1 :(得分:0)
我已经尝试了以上解决方案。但是,这不适用于我的情况。我在表面视图触摸监听器中获得了触摸事件,但是在 onDoubleTap 或 onSingleTapConfirmed 方法中都没有找到任何回调。我的代码如下:
$sql = "SELECT IDpage, numPages FROM Pages WHERE IDpage=".$page;
$result = mysqli_query( $conn,$sql)
$row = mysqli_fetch_array($result);
$num = $row['numPages'] + 1;
$sql = "UPDATE Pages SET numPages=".$num." WHERE IDpage=".$page;;
$result = mysqli_query( $conn,$sql)
当我使表面视图可点击时,它就起作用了。
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);
}
});
详细说明可以在此link
中找到