Android如何覆盖来抓住所有的触摸,并传递它们?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

我基本上试图从类似系统覆盖的东西中获取所有触摸事件数据,根据这些触摸数据移动我的精灵,然后允许OS /主屏幕/浏览器根据数据进行操作(反之亦然)。

我可以做什么:

我可以抓住所有触摸事件,并通过移动我的精灵来对其进行操作,并且不允许操作系统/主屏幕/浏览器查看其中的任何事件,或者,我可以允许触摸事件通过并且仅获得“TOUCH_OUTSIDE”我的应用程序采取行动。

我未达到的目标:

我不能为了我的生活找出解决方法来处理数据。我能想到的唯一方法是我无法实现:拦截我的APP中的数据并将其传递到OS / homescreen / browser上,以便与OS /主屏幕/浏览器首先获取数据,然后以某种方式获取信息的回调允许OS /主屏幕/浏览器获取数据,处理数据并轮询他们的滚动/位置值以便在我的APP中对其执行操作。

提问于
用户回答回答于

他们讨论解决方法,但我不认为他们中的任何一个实际上会为我正在尝试做的工作而工作。两者都将事件提供给底层应用程序,并且能够窥探他们为自己采取行动:

要创建叠加视图,在设置LayoutParams时,需要将类型设置为TYPE_SYSTEM_OVERLAY并使用标志FLAG_WATCH_OUTSIDE_TOUCH。这提出了一个问题,因为Android文档指出:“您不会收到完整的向下/向上/向上的手势,只有第一个向下的位置作为ACTION_OUTSIDE。” 为了接收完整的触摸事件数组,您需要使用TYPE_SYSTEM_ALERT类型,但这会导致覆盖层接管屏幕并停止与其他元素的交互。

用户回答回答于

扫码关注云+社区