我们如何通过触摸事件来模拟长按?或者我们如何在ACTION_DOWN状态下计算触摸屏幕的时间?
答案 0 :(得分:15)
我最终实现了一个触摸屏长按,全部:
textView.setOnTouchListener(new View.OnTouchListener() {
private static final int MIN_CLICK_DURATION = 1000;
private long startClickTime;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
longClickActive = false;
break;
case MotionEvent.ACTION_DOWN:
if (longClickActive == false) {
longClickActive = true;
startClickTime = Calendar.getInstance().getTimeInMillis();
}
break;
case MotionEvent.ACTION_MOVE:
if (longClickActive == true) {
long clickDuration = Calendar.getInstance().getTimeInMillis() - startClickTime;
if (clickDuration >= MIN_CLICK_DURATION) {
Toast.makeText(MainActivity.this, "LONG PRESSED!",Toast.LENGTH_SHORT).show();
longClickActive = false;
}
}
break;
}
return true;
}
});
其中private boolean longClickActive = false;
是一个类变量。
答案 1 :(得分:2)
答案 2 :(得分:1)
您必须计算ACTION_DOWN和ACTION_UP事件之间的时间。 仅在ACTOIN_DOWN状态下计算此时间是不可能的,因为它是表示LAP TAP事件的TAP的事件序列的START事件