获取正在接收所有触摸事件的视图

我有一个系统覆盖,位于所有ActivitiesWindows 。 唯一的问题是,当用户把他/她放在屏幕上时,它只能检测到MotionEvents (它不能跟踪手指的移动或检测到手指抬起时)。 作为一个可能的解决scheme,我实现了第二个视图(我称之为跟踪视图),它能够处理所有的触摸事件,但保持隐藏状态,直到系统覆盖层检测到所需位置的触摸; 在这种情况下,它会提出跟踪观点。 唯一的问题是,直到用户将他/她的手指放回到屏幕上,跟踪视图才开始检测触摸事件。 因此,为了解决这个问题,我想拦截获取触摸事件的视图(这是系统覆盖下的视图),并将其所有的触摸事件转发给跟踪视图进行处理。

有谁知道我怎样才能得到接收所有的触摸事件,并redirect它所接收的所有触摸事件的观点?

这个问题是指在这个问题中使用的例子。

Solutions Collecting From Web of "获取正在接收所有触摸事件的视图"

你不能完全按照你的要求去做。 input系统非常小心地限制什么窗口可以接收什么事件; 它是故意不像其他系统,如微软Windows中,你可以参与低级别的事件调度,看到一切正在进行。 唯一允许的是:

  • 一个窗口,可以接收所有将要进入的事件或其后面的任何窗口(不允许窗口后面的窗口接收到这些事件)。 这被称为“触摸模式”。
  • 一个窗口,可以接收其矩形内的所有事件,而不让它们进入窗口后面的窗口,但矩形外的事件被允许进入窗口后面的相应窗口而不被它看到。 这被称为“不触摸模式”。
  • “不触摸模式”的一个变种,可以让人们了解只发生在窗外的停机事件。 它不会收到任何其他进一步的事件,而是作为一个特殊的行动代码: http : //developer.android.com/reference/android/view/MotionEvent.html#ACTION_OUTSIDE

事件派发到窗口的另一个核心规则是,一旦select一个窗口作为触摸事件的目标,它将继续接收事件stream,直到最后一个事件stream。 传统上在Android中,这将适用于触摸手势的所有其他手指(它接收所有手指,不pipe它们出现在哪里,直到最后一个手指上升)。 该平台的更新版本允许您将此行为修改为支持多点触摸: http : //developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_SPLIT_TOUCH

所以这些就是你的工具箱里的工具。 你可以build立与他们可能的事情,但这并不是要让你做任何可能的事件系统的互动,所以会有限制。