在屏幕上滑动手指激活按钮就像按下它们一样

如果我的标题不够清楚,我会详细解释: 假设我们有一个屏幕上有多个按钮(10+),我们按下一个,激活onTouch / onClick。如果我们现在移动手指而不抬起它,我希望它激活它滑过的任何其他按钮。在这种特殊情况下,我想要在虚拟钢琴上滑动时播放声音。 我知道onTouchListener解决方案,你在其中注册每个ACTION_MOVE并找到一些激活新事件的边界,但如果你有多个按钮并希望允许平滑滑动而没有延迟,这远非最佳。 我还阅读了这个线程,它建议我们将View的touchListener与来自活动的一个gesturelistener结合起来,但是再一次,这对我的情况来说并不是最理想的。 我还没有尝试过将touchlistener与gesturelistener结合起来,但如果有人告诉我他们没有别的办法,我会继续这样做。     
已邀请:
在我看来,正确的做法是忘记按钮,并创建一个绘制整个键盘的自定义视图。在此视图中,您可以按照自己喜欢的方式处理触摸事件。你甚至不需要手势探测器,只需分析动作事件的动作和坐标,这很容易。 我不明白你对ACTION_MOVE和延迟的意思。要最小化延迟,请在ACTION_DOWN上做出反应,然后在ACTION_MOVE上进行响应,如果它在处于关闭状态时悬停其他键。它不能比那更快。使用按钮会有一个重要的延迟,因为当用户抬起手指时,在ACTION_UP上触发onClick()事件。 按钮并不意味着按照你的描述工作。这个想法是,如果用户点击按钮然后同时移开他的手指,它不会触发其他视图周围的onClick事件。这可以防止虚假点击。     
我实际上采用了“简单”的方式,使用带有onTouch方法的按钮,使用
ACTION_DOWN
ACTION_MOVE
,坐标计算结合
event.getX()
event.getY()
,可以检测出当前悬停的按钮。它有13个按钮,没有延迟。     

要回复问题请先登录注册