1

我的问题涉及 onTouch。据我所知,没有办法检测一个视图的 ACTION_DOWN,而不是在同一个 onTouch 事件或滑动时检测另一个视图的 ACTION_UP,因为每个 onTouch 事件都链接到一个视图。

我有一个带有一些图形的视图 (A),在 EVENT_DOWN 上检测到坐标并制作一个“弹出窗口”,其中包含一个视图 (B),该视图 (B) 拥有更多视图 (“按钮”)。B 的位置和大小可能会不时变化。我更愿意在 B 的一个孩子(“按钮”)上检测 ACTION_UP。

我想使用 onInterceptTouchEvent 不好。毕竟,B 不是 A 的父母。它反过来。

使用 androids 的拖放功能似乎有点过头了。看起来它是用于实际拖动图形和传输数据的。拖动不可见的图形来检测手指离开屏幕不是很优雅。

另一种方法是在每次显示弹出窗口时检测 B 的孩子的位置(和大小),但这也不是很顺利。

检测视图 A 的 ACTION_DOWN 及其子视图 B(或它的子视图)ACTION_UP 的最佳方法是什么?

还是有其他方法可以检测这些事件?

4

1 回答 1

0

我确实为非常相似的事情挣扎了一两天,最后我得出结论,据我所知 onInterceptTouchEvent 是唯一的方法。我刚刚为 A 和 B 创建了一个容器视图“C”,然后当 A 收到 ACTION_DOWN 时,我指示“C”拦截滑动中的所有进一步事件,针对 B 的已知位置测试坐标,然后将事件转发到如果 ACTION_UP 对 B 的边界测试为阳性,则通过自定义方法“B”(小心手动将 MotionEvents 从一个类传递到另一个类,因为坐标都是错误的)。

不是一个非常令人满意的解决方案,但这是我唯一能想到的。

另外,以防万一您使用它,android 3.0+ 有一些拖放辅助方法,我确信它们非常有用,尽管我正在为 2.x 开发,所以它们对我没用。

于 2012-05-28T21:24:45.407 回答