This question already has answers here:
Android: How to detect double-tap?

(25个答案)


3年前关闭。




我需要创建一个小的文本区域。当我双击该文本区域时,它将移至下一个 Activity 。我该怎么做?

最佳答案

如果您正确设置,则OnDoubleTapListener中的GestureListener非常有用。您无需处理每个轻拍,也无需计算之间的时间。取而代之的是让Android为您处理轻击,双击,滚动或猛击。使用实现SimpleGestureListenerGestureListener的帮助程序类OnDoubleTapListener,您不需要做很多事情。

findViewById(R.id.touchableText).setOnTouchListener(new OnTouchListener() {
    private GestureDetector gestureDetector = new GestureDetector(Test.this, new GestureDetector.SimpleOnGestureListener() {
        @Override
        public boolean onDoubleTap(MotionEvent e) {
            Log.d("TEST", "onDoubleTap");
            return super.onDoubleTap(e);
        }
        ... // implement here other callback methods like onFling, onScroll as necessary
    });

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        Log.d("TEST", "Raw event: " + event.getAction() + ", (" + event.getRawX() + ", " + event.getRawY() + ")");
        gestureDetector.onTouchEvent(event);
        return true;
    }
});

注意:我经过了一段时间的测试,才发现return truereturn false的正确组合是什么。这是真正棘手的部分。

另一个注意事项:测试时,请在实际设备上而不是仿真器上执行。我很难让鼠标足够快地创建onFling事件。实际设备上的实际手指似乎要快得多。

10-07 19:35