This question already has answers here:
Android: How to detect double-tap?
(25个答案)
3年前关闭。
我需要创建一个小的文本区域。当我双击该文本区域时,它将移至下一个 Activity 。我该怎么做?
注意:我经过了一段时间的测试,才发现
另一个注意事项:测试时,请在实际设备上而不是仿真器上执行。我很难让鼠标足够快地创建onFling事件。实际设备上的实际手指似乎要快得多。
(25个答案)
3年前关闭。
我需要创建一个小的文本区域。当我双击该文本区域时,它将移至下一个 Activity 。我该怎么做?
最佳答案
如果您正确设置,则OnDoubleTapListener
中的GestureListener
非常有用。您无需处理每个轻拍,也无需计算之间的时间。取而代之的是让Android为您处理轻击,双击,滚动或猛击。使用实现SimpleGestureListener
和GestureListener
的帮助程序类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 true
和return false
的正确组合是什么。这是真正棘手的部分。另一个注意事项:测试时,请在实际设备上而不是仿真器上执行。我很难让鼠标足够快地创建onFling事件。实际设备上的实际手指似乎要快得多。
10-07 19:35