我工作的一个简单的Android应用程序,我的要求是,
“一些移动事件后(MotionEvent.ACTION_MOVE为true)在屏幕上,如果用户停止移动几秒钟一些地方用了从屏幕上走的手指,则需要执行一些动作。”
*我了解到,长按是什么触发,当用户没有做出任何举动向下事件被触发(MotionEvent.ACTION_DOWN)之后。*
那么,有没有办法在屏幕上四处移动后触发长按?
或者我应该创建自己的监听器相同的功能?
任何帮助表示赞赏。
谢谢。
我工作的一个简单的Android应用程序,我的要求是,
“一些移动事件后(MotionEvent.ACTION_MOVE为true)在屏幕上,如果用户停止移动几秒钟一些地方用了从屏幕上走的手指,则需要执行一些动作。”
*我了解到,长按是什么触发,当用户没有做出任何举动向下事件被触发(MotionEvent.ACTION_DOWN)之后。*
那么,有没有办法在屏幕上四处移动后触发长按?
或者我应该创建自己的监听器相同的功能?
任何帮助表示赞赏。
谢谢。
想法是cancel
您在屏幕上(移动手指定时器每次MotionEvent.ACTION_MOVE
)。 当你停止了一段时间后动,说在3秒钟后,计时器代码得到执行,在这你可以做长按任务。 如果你停止运动一段时间,重新开始逝去时间(3秒)之前移动,再新的计时器设定等。 希望它可以帮助你。
timer = new Timer();
public boolean onTouchEvent(MotionEvent event)
{
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
timer.cancel();
timer = null;
timer = new Timer();
timer.schedule(new TimerTask()
{
@Override
public void run() {
// do your long press task here
}
}, 3000);
break;
case MotionEvent.ACTION_UP:
timer.cancel();
timer = null;
break;
}
return super.onTouchEvent(event);
}
恐怕你必须做你自己。 默认的实现只是如果没有移动事件来触发长按事件
关键是要使用System.getCurrentTime()
中onTouchEvent()
怎么样?
在onTouch()
寻找Motion_DOWN事件,
long
变量)触摸事件的时间。 (使用System.getCurrentTime()
isClicked
为true) isClicked
仍然是正确的。 把它看成是你的onLongClick监听器 -
编辑:我错过了一个重要步骤: