我想检测一个doubletap视图,例如a button,然后知道它是哪个视图.我已经看到了这个类似的问题,但他们说这是一个重复的问题似乎没有回答我的问题.
所有我能找到是一个添加GestureDetector到活动中,并添加OnDoubleTapListener到它.但只有在我点击屏幕的背景/布局时才会触发.当我(双击)a时,它不会被触发button.
这是我里面的代码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;
}
});
Run Code Online (Sandbox Code Playgroud)
Imt*_*bir 17
您只需使用这几行代码即可实现此目的.就这么简单.
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);
}
});
Run Code Online (Sandbox Code Playgroud)
将这段代码放在要在视图上设置双击操作的活动或适配器上.
| 归档时间: |
|
| 查看次数: |
35973 次 |
| 最近记录: |