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