我正在开发一个简单的 android 应用程序,我的要求是,
“在屏幕上发生一些移动事件(MotionEvent.ACTION_MOVE 为真)之后,如果用户在没有从屏幕上取下手指的地方停止移动几秒钟,则需要执行一些操作。”
*我了解到 LongPress 是在触发向下事件后用户不进行任何移动时触发的东西(MotionEvent.ACTION_DOWN)。*
那么有什么方法可以在屏幕中移动后触发 LongPress 吗?
或者我应该为相同的功能创建自己的监听器?
任何帮助表示赞赏。
谢谢你。
我正在开发一个简单的 android 应用程序,我的要求是,
“在屏幕上发生一些移动事件(MotionEvent.ACTION_MOVE 为真)之后,如果用户在没有从屏幕上取下手指的地方停止移动几秒钟,则需要执行一些操作。”
*我了解到 LongPress 是在触发向下事件后用户不进行任何移动时触发的东西(MotionEvent.ACTION_DOWN)。*
那么有什么方法可以在屏幕中移动后触发 LongPress 吗?
或者我应该为相同的功能创建自己的监听器?
任何帮助表示赞赏。
谢谢你。
想法是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);
}
恐怕你必须自己做。默认实现是只有在没有 Move 事件时才触发长按事件
关键是用System.getCurrentTime()在onTouchEvent()
如何?
在onTouch()
寻找 Motion_DOWN 事件,
long变量中设置)触摸事件的时间。(使用System.getCurrentTime())isClicked真)isClicked仍然为真。将其视为您的 onLongClick 侦听器--
编辑:我错过了一个重要步骤: