Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使overlay在不使用其他应用程序的触摸功能的情况下接收触摸事件?_Java_Android_Kotlin - Fatal编程技术网

Java 如何使overlay在不使用其他应用程序的触摸功能的情况下接收触摸事件?

Java 如何使overlay在不使用其他应用程序的触摸功能的情况下接收触摸事件?,java,android,kotlin,Java,Android,Kotlin,我目前正在尝试制作一个类似于Facebook Messenger聊天头的实用程序覆盖,你可以在屏幕上移动视图。单击视图时,视图将展开为更复杂的布局。但是,问题是如果我将LayoutParams的标志设置为WindowManager.LayoutParams.flag_NOT_TOUCHABLE,则后面的应用程序会接收触摸事件,而我的覆盖层根本不会接收任何触摸事件。但是,如果我移除该标志,覆盖层将接收触摸,但它会阻止触摸。这意味着我甚至无法打开应用程序抽屉,因为触摸被阻止 我使用一个全屏透明的活动

我目前正在尝试制作一个类似于Facebook Messenger聊天头的实用程序覆盖,你可以在屏幕上移动视图。单击视图时,视图将展开为更复杂的布局。但是,问题是如果我将LayoutParams的标志设置为WindowManager.LayoutParams.flag_NOT_TOUCHABLE,则后面的应用程序会接收触摸事件,而我的覆盖层根本不会接收任何触摸事件。但是,如果我移除该标志,覆盖层将接收触摸,但它会阻止触摸。这意味着我甚至无法打开应用程序抽屉,因为触摸被阻止

我使用一个全屏透明的活动作为背景,这样我就可以在它周围移动我的覆盖“小部件”


有没有什么方法可以让它不会阻止触摸事件。即使我没有将其设置为全屏,只要我没有“不可触摸”标志,我的覆盖将完全阻止所有屏幕触摸。

请删除此标志

WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE 
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
用这面旗

WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE 
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE

请参阅此链接

它不适用于透明活动。气泡的实现方式(在Android Q中出现之前)是将视图直接附加到
WindowManager
。请参阅,每个功能中都会出现一次触摸,以覆盖某些触摸事件。它从顶层开始,一直走到底层。如果要阻止触摸,可以使用
return false。如果不想阻止它,请使用
返回true在这些函数中。@kenny_k那么如果我将视图直接附加到WindowManager,我仍然能够移动它吗?顺便说一下,问题仍然存在。我放弃了全屏透明活动,但仍然得到了相同的结果。这就是我制作布局参数的方法:WindowManager.LayoutParams(ViewGroup.LayoutParams.MATCH_父项,ViewGroup.LayoutParams.MATCH_父项,WindowManager.LayoutParams.TYPE_应用程序_覆盖,WindowManager.LayoutParams.FLAG_不可触摸,像素格式.半透明)我想你应该删除WindowManager.LayoutParams.FLAG\u NOT\u TOUCHABLE
——因为这样,它显然是不可触摸的。因为你不再有任何活动,任何超出你视野的触摸事件都将由触摸之下的任何东西来处理。@kenny_k同样的结果。如果我删除不可触摸标志,视图将变为可点击,但下面的应用程序无法再次接收触摸事件