我正在开发一个简单的Android应用程序,我的要求是,
“在屏幕上的一些移动事件(MotionEvent.ACTION_MOVE为真)之后,如果用户停止移动几秒钟,而不需要从屏幕上取出手指,则需要执行一些操作。”
*我了解到LongPress是在用户在触发向下事件后没有进行任何移动时触发的事件(MotionEvent.ACTION_DOWN)。*
那么在屏幕上移动后有没有办法触发LongPress?
或者我应该为相同的功能创建自己的监听器吗?
感谢任何帮助。
谢谢。
答案 0 :(得分:5)
每当您在屏幕上移动手指(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);
}
答案 1 :(得分:1)
我担心你必须自己做。默认实现是仅在没有Move事件时触发长按事件
关键是在System.getCurrentTime()
onTouchEvent()
如何?
onTouch()
中的
查找Motion_DOWN事件,
long
变量中设置)触摸事件的时间。 (使用System.getCurrentTime()
)isClicked
为真)isClicked
仍为真,则在x毫秒之后执行(其中x是longClick的持续时间)。将其视为您的onLongClick Listener -