2009-05-28 108 views
3

我想根据轨迹球移动在屏幕上移动图像。我能够使用onTrackballEvent方法捕捉运动。但是这被称为非常小的浮动值(我相信每次轮换?)的轨迹球。Android - 轨迹球事件结束了吗?

现在,当使用LayoutParams指定视图的X和Y位置应该是整数时,每次旋转移动视图都没有意义。相反,我只想在用户停止旋转轨迹球之后才移动视图。

有没有什么方法可以判断用户是否停止使用轨迹球?

回答

1

如果没有(我不知道Android),经典的方法是在每个事件中启动一个计时器,并跟踪其中报告的增量(通过将它们添加到运行总和中,一个用于X和Y)。在任何后续事件中,在定时器触发之前,只需重新启动相同的定时器,将其触发推向未来。

当用户停止生成事件时,计时器最终会触发,然后您可以应用所有动作的总和并清除总和。

必须选择合适的超时时间,以便用户交互不会觉得太慢。也许是200-300毫秒或更多。这很容易调整,直到它感觉“正确”。

1

我也从设置阈值中获得了很多价值。因此,如果特定方向的总体运动总和达到给定量,则触发导航事件。

+0

谢谢haseman。那就是我所做的。一旦差异达到某种显着水平,我就改变视图的位置 – lostInTransit 2009-05-29 04:09:08