我正在与一个门控制单元一起控制车窗。我有4个按钮(“自动上下”和“上下”)。他们做得很好,但我希望单个向上和向下按钮能够像在真车上一样做出反应。如果我长按它们,只要单击该按钮,它们就会移动。
我尝试使用OnTouchListener来实现它,甚至在我在按钮上四处移动时也可以使用。如果我只是单击并按住我的手指,它会执行一小步,然后直到我四处移动手指时才执行任何操作。
是否有类似isClicked()方法的内容?我尝试过isActivated,isPressed,isSelected,Focused,但是没有一个解决了我的问题。
您必须自己在onTouch方法中对其进行编程:之所以会发生这种情况,是因为触摸事件是在被触摸时通过参数Event.DOWN触发,然后在手指移动时通过参数Event.MOVE触发的,最终在释放时通过Event.UP触发的。
因此,您将必须检测到touch DOWN事件,启动一个计时器,每x毫秒将窗口打开一次,然后在检测到touch UP事件时停止
这是一个例子:
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN)
{
startTimer(); // The timer should repeatly call itself
}
else if(event.getAction()==MotionEvent.ACTION_UP)
{
stopTimer(); // The timer should stop
}
}
编辑:如果您只需要一个isClicked()方法的等效项,则可以将布尔值存储为类变量:在上面的代码中,将“ startTimer()”替换为“ mClicked = true”,然后将“ stopTimer()”替换为通过“ mClicked = false”。然后,您可以在班级中的任何地方检查当前是否单击了该按钮
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句