如何在android中实现表面视图的双击

时间:2011-10-27 14:27:27

标签: android surfaceview gesture

请告诉我们如何使用手势检测器在Android中实现SurfaceView的双击。任何人都可以提供代码示例吗?

2 个答案:

答案 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

中找到