如何在不使用gesturedetector的情况下在android中实现双击事件?
答案 0 :(得分:7)
如果您指的是双击,则必须使用GestureDetector.OnDoubleTapListener。
答案 1 :(得分:2)
我确定其中的所有代码都确定第二次点击是否在第一次点击的特定时间内,否则将其视为第二次点击。无论如何我就是这样做的。
答案 2 :(得分:1)
只需使用setOnTouchListener记录第一次和第二次点击时间。如果它们非常接近,请将其确定为双击。像这样,
public class MyActivity extends Activity {
private final String DEBUG_TAG= "MyActivity";
private long firstClick;
private long lastClick;
private int count; // to count click times
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button mButton= (Button)findViewById(R.id.my_button);
mButton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
// if the second happens too late, regard it as first click
if (firstClick != 0 && System.currentTimeMillis() - firstClick > 300) {
count = 0;
}
count++;
if (count == 1) {
firstClick = System.currentTimeMillis();
} else if (count == 2) {
lastClick = System.currentTimeMillis();
// if these two clicks is closer than 300 millis second
if (lastClick - firstClick < 300) {
Log.d(DEBUG_TAG,"a double click happened");
}
}
break;
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}
});
}
}
答案 3 :(得分:1)
看这里,这是jar中的库,用于监听触摸手势,实现和工作) https://github.com/NikolayKolomiytsev/zTouch
答案 4 :(得分:0)
查看GestureDetector
的源代码并复制您需要的位(具体来说,请查看isConsideredDoubleTap
方法)