如果我的标题不够清楚,我会详细解释一下:
假设我们有一个充满多个按钮(10+)的屏幕,我们按下一个按钮,激活onTouch/onClick。如果我们现在移动手指,而不是抬起它,我想让它激活它滑过的任何其他按钮。在这种特殊情况下,我希望当您在虚拟钢琴上滑动时播放声音。
我知道onTouchListener-解决方案,你注册每个ACTION_MOVE并找到一些激活新事件的边界,但如果你有多个按钮并想要没有延迟地平滑滑动,那就不是最好的了。
我也读过this thread,它建议我们将视图的touchListener与活动中的一个手势侦听器结合起来,但再一次,这对我的情况来说并不是最优的。
我还没有尝试将touchlistener和gesturelistener结合起来,但是如果有人告诉我他们没有其他方法可以做到这一点,我会继续这样做。
发布于 2011-12-18 19:04:25
我实际上采取了“简单”的方式,使用了onTouch方法,使用ACTION_DOWN和ACTION_MOVE进行坐标计算,结合event.getX()和event.getY()可以检测到当前悬停在哪个按钮上。它有13个按钮,是无滞后的。
发布于 2011-04-09 02:16:43
在我看来,这样做的正确方法是忘记按钮,并创建一个绘制整个键盘的自定义视图。在此视图中,您可以按自己喜欢的方式处理触摸事件。你甚至不需要手势检测器,只需分析动作和运动事件的坐标,这非常容易。
我不明白你说的ACTION_MOVE和延迟是什么意思。为了最大限度地减少延迟,请先在ACTION_DOWN上反应,然后在ACTION_MOVE上反应(如果它在按下状态时悬停其他键)。它不可能比这更快。对于按钮,有一个重要的延迟,因为在ACTION_UP上,当用户抬起手指时会触发onClick()事件。
按钮并不像你所描述的那样工作。这个想法是,如果用户点击一个按钮,然后同时将手指移开,它不会在周围的其他视图上触发onClick事件。这可以防止虚假点击。
https://stackoverflow.com/questions/5597592
复制相似问题