OnLongPress只有触摸不动

时间:2014-11-18 20:40:39

标签: android events ontouchlistener

我在android中有一个视图,我想接受onLongPress动作。

我有一个OnTouch方法可以在屏幕上移动时处理内容。但是当长按而不移动手指时,应该调用OnLongPress方法。

到目前为止,我的努力是让onTouch活动正常进行。但现在,当在视图周围滑动时,会调用onLongPress方法,因为从逻辑上讲,我很长时间都在按屏幕。

我只想让手指在屏幕上静止不动时onLongPress工作,有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:0)

你应该取消长按。来自documentation

  

public void cancelLongPress ()

     

取消待处理的长按。你的子类可以   如果您希望在用户按下时出现上下文菜单,请使用此选项   并且在同一个地方举行,但如果他们不想让它出现   按,然后移动到足以导致滚动。

答案 1 :(得分:0)

这样的事情怎么样:

@Override
public boolean onTouch(View view, MotionEvent event) {
    switch (event.getAction()) {

        case MotionEvent.ACTION_DOWN:
            downX = event.getX();
            downTime = Calendar.getInstance().getTimeInMillis();
            return true;                

        case MotionEvent.ACTION_UP:
            upX = event.getX();
            upTime = Calendar.getInstance().getTimeInMillis();

            float deltaX = downX - upX;
            float deltaTime = upTime - downTime;

            if((deltaX < UNACCEPTABLE_MOVE_DISTANCE) && (deltaTime > MINIMUM_TIME))
                //REPORT LONG PRESS WITH INTERFACE
            else
                //REPORT SOMETHING ELSE
            return true;
        default:
            return true;
    }
}