首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >手指在屏幕上滑动激活按钮,就像它们被按下一样

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

Stack Overflow用户
提问于 2011-04-08 23:48:29
回答 2查看 2.8K关注 0票数 4

如果我的标题不够清楚,我会详细解释一下:

假设我们有一个充满多个按钮(10+)的屏幕,我们按下一个按钮,激活onTouch/onClick。如果我们现在移动手指,而不是抬起它,我想让它激活它滑过的任何其他按钮。在这种特殊情况下,我希望当您在虚拟钢琴上滑动时播放声音。

我知道onTouchListener-解决方案,你注册每个ACTION_MOVE并找到一些激活新事件的边界,但如果你有多个按钮并想要没有延迟地平滑滑动,那就不是最好的了。

我也读过this thread,它建议我们将视图的touchListener与活动中的一个手势侦听器结合起来,但再一次,这对我的情况来说并不是最优的。

我还没有尝试将touchlistener和gesturelistener结合起来,但是如果有人告诉我他们没有其他方法可以做到这一点,我会继续这样做。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-18 19:04:25

我实际上采取了“简单”的方式,使用了onTouch方法,使用ACTION_DOWNACTION_MOVE进行坐标计算,结合event.getX()event.getY()可以检测到当前悬停在哪个按钮上。它有13个按钮,是无滞后的。

票数 1
EN

Stack Overflow用户

发布于 2011-04-09 02:16:43

在我看来,这样做的正确方法是忘记按钮,并创建一个绘制整个键盘的自定义视图。在此视图中,您可以按自己喜欢的方式处理触摸事件。你甚至不需要手势检测器,只需分析动作和运动事件的坐标,这非常容易。

我不明白你说的ACTION_MOVE和延迟是什么意思。为了最大限度地减少延迟,请先在ACTION_DOWN上反应,然后在ACTION_MOVE上反应(如果它在按下状态时悬停其他键)。它不可能比这更快。对于按钮,有一个重要的延迟,因为在ACTION_UP上,当用户抬起手指时会触发onClick()事件。

按钮并不像你所描述的那样工作。这个想法是,如果用户点击一个按钮,然后同时将手指移开,它不会在周围的其他视图上触发onClick事件。这可以防止虚假点击。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5597592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档