使用 WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH 获取所有 MotionEvent

Bri*_*ian 5 flags android action view layoutparams

我的问题直接针对这个问题。该问题的答案展示了如何创建 a ViewGroup,将其嵌入到 a 中WindowManager,并允许 sWindowManager捕获MotionEvents 通过onTouchEvent(MotionEvent event)。是允许 this接收sWindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH的标志。然而,根据文档,这个标志ViewGroupMotionEvent

...不会收到完整的向下/移动/向上手势

我想知道是否有解决方法或方法,以便我可以获得所有触摸事件,包括向下、移动和向上。概念证明位于应用程序Wave Launcher中,它使用相同的概念,但能够接收多个ACTION_OUTSIDE事件。

hac*_*bod 3

不,你不能,这很大程度上是设计使然。

Wave Launcher 不会这样做,它有一个 UI 元素,您可以在其中启动触摸手势,然后与标准一样,甚至分派所有触摸事件都会传递到第一个向下点的窗口,直到最后向上。