新活动开始后如何跟踪Android触摸事件

3

在我的应用程序中,触摸按钮(而不是点击)会启动一个新活动,并且我不会放手,希望在新活动中跟踪触摸的动作。但是第二个活动中的“on touch”监听器没有响应这个动作。我该如何做?


同样的问题,旧活动似乎仍在接收它们,直到你不移动并再次触摸屏幕,新活动才会响应...我也在努力解决这个问题。我基本上正在尝试的是,在触摸视图后向下移动,然后启动一个新活动,该活动将在相同的位置上具有此视图的副本(我将旧活动中视图的位置信息传递给新活动),然后我拖动新视图在新活动中而不需要抬起手指。 - jpardogo
最好使用单个活动并替换片段,因为您可以在活动级别拦截触摸事件。 - sockeqwe
在我的情况下,问题不仅仅是一个活动启动了这种拖动元素的覆盖层。您可以在应用程序的任何活动上的任何点上拖动此元素,因此为可能的情况创建所有活动的片段容器将没有意义,我确实需要一个新的活动。更清洁,更高效,代码更少。 - jpardogo
2
目前最好的解决方案是EventBus,尽管我曾试图使用MotionEvent.obtain来模拟事件...但还没有成功,如果成功了,我会再写回来。我也想指出安卓专家David Smith在我在Google+上问他时的答案。答案链接:https://plus.google.com/u/0/110611379037323129529/posts/Mpp1KDqN1cQ - jpardogo
1个回答

1
你可以尝试使用EventBus,例如(如果你更喜欢,也可以使用Otto,由你决定)。
注册你的第一个和第二个活动,然后在MotionEvent TOUCH_UP事件上通知你的订阅者触摸结束了。
eventBus.post(event);

他们将在onEvent方法中接收该事件。
public void onEvent(AnyEventType event) {/* Do something */};

我认为原生情况下无法通过活动来共享事件,但您可以尝试这种方式。


这并不是管理不同动作事件的解决方案,因为它是一个新活动,意味着它可以从任何地方触发。我也有同样的问题。我正在努力找出新活动如何从启动时开始拦截事件。 - jpardogo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接