参见英文答案 >
Android: How to detect double-tap? 19个
我想检测一个视图上的doubletap,比如一个按钮,然后知道它是哪个视图.我见过 this similar question,但他们说这是一个重复的问题似乎没有回答我的问题.
我想检测一个视图上的doubletap,比如一个按钮,然后知道它是哪个视图.我见过 this similar question,但他们说这是一个重复的问题似乎没有回答我的问题.
我只能find将GestureDetector添加到活动中,并向其添加一个OnDoubleTapListener.但只有在我点击屏幕的背景/布局时才会触发.当我(双击)按钮时不会触发它.
这是我在onCreate中的代码:
gd = new GestureDetector(this,this); gd.setonDoubleTapListener(new OnDoubleTapListener() { @Override public boolean onDoubleTap(MotionEvent e) { Log.d("OnDoubleTapListener","onDoubleTap"); return false; } @Override public boolean onDoubleTapEvent(MotionEvent e) { Log.d("OnDoubleTapListener","onDoubleTapEvent"); //if the second tap hadn't been released and it's being moved if(e.getAction() == MotionEvent.ACTION_MOVE) { } else if(e.getAction() == MotionEvent.ACTION_UP)//user released the screen { } return false; } @Override public boolean onSingleTapConfirmed(MotionEvent e) { Log.d("OnDoubleTapListener","onSingleTapConfirmed"); return false; } });
解决方法
您只需使用这几行代码即可实现此目的.就这么简单.
final GestureDetector gd = new GestureDetector(context,new GestureDetector.SimpleOnGestureListener(){ //here is the method for double tap @Override public boolean onDoubleTap(MotionEvent e) { //your action here for double tap e.g. //Log.d("OnDoubleTapListener","onDoubleTap"); return true; } @Override public void onLongPress(MotionEvent e) { super.onLongPress(e); } @Override public boolean onDoubleTapEvent(MotionEvent e) { return true; } @Override public boolean onDown(MotionEvent e) { return true; } }); //here yourView is the View on which you want to set the double tap action yourView.setonTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v,MotionEvent event) { return gd.onTouchEvent(event); } });
将这段代码放在要在视图上设置双击操作的活动或适配器上.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。