通过触摸事件模拟长按

时间:2013-07-27 09:09:57

标签: android event-handling touch-event long-press

我们如何通过触摸事件来模拟长按?或者我们如何在ACTION_DOWN状态下计算触摸屏幕的时间?

3 个答案:

答案 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)

要计算触摸次数,您可以获取事件的getPointerCount(),例如here

并且对于长按可能this帮助

修改:并希望this link帮助您确定获取触摸持续时间

答案 2 :(得分:1)

您必须计算ACTION_DOWN和ACTION_UP事件之间的时间。 仅在ACTOIN_DOWN状态下计算此时间是不可能的,因为它是表示LAP TAP事件的TAP的事件序列的START事件