0

我想在PRESS_DOWN按钮时旋转我的对象,并在我PRESS_UP时停止旋转。
我试图用OnTouchListener 来做,但似乎没有办法知道那个按钮仍然被按下。
例如,我第一次触摸按钮,并且使用ACTION_DOWN引发了第一次触摸事件,但是如果我保持手指不动,则不会发生任何事情(没有更多事件)。或者,如果我将它移动得非常快,那么触摸事件 ACTION_MOVE 的提升速度会有所不同。取决于手指移动速度的不同速度对我的任务来说是不可接受的。所以我决定在ACTION_DOWN升高时启动计时器(以固定速度旋转)并引发ACTION_UP 时取消 TimerTask,它工作得很好,就像我需要的那样。但我认为这不是最好的解决方案,甚至不是最坏的解决方案。请给我其他可能的解决方案的建议。

4

2 回答 2

1

您使用计时器的解决方案很好,并且是您应该做的。如果您正在运行动画,则不能依赖 UI 事件,您必须有一个单独的线程或计时器来定期更新。

于 2013-09-14T17:28:33.723 回答
1

使用计时器是一个好方法。据我所知,我认为使用简单的 if-else 可以更有效地解决您的问题。例如,

boolean state = true;
if(state)
{
 // do the code for ACTION_DOWN
}
else
{
 // do the code for ACTION_UP
state = true;
}

给这个 if 语句一个循环,你想要多少次。但我不知道,这个解决方案是否符合您的要求。

于 2013-09-14T17:31:38.133 回答