Java 如何在Android中创建一个系统覆盖,允许与下面的窗口交互?

Java 如何在Android中创建一个系统覆盖,允许与下面的窗口交互?,java,android,overlay,Java,Android,Overlay,正如在这个应用程序中所看到的,我想创建一个应用程序,通过创建一个阴影覆盖使屏幕变暗 窗口已经创建,并且部分透明,但是,我无法启动它下面的应用程序。我可以单击它们,然后看到按钮按下,但当我的应用程序运行时,其他应用程序无法启动 建议 我在下面附上了我的代码,以及一个已经在这样做的应用程序示例 final WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParam

正如在这个应用程序中所看到的,我想创建一个应用程序,通过创建一个阴影覆盖使屏幕变暗

窗口已经创建,并且部分透明,但是,我无法启动它下面的应用程序。我可以单击它们,然后看到按钮按下,但当我的应用程序运行时,其他应用程序无法启动

建议

我在下面附上了我的代码,以及一个已经在这样做的应用程序示例

final WindowManager.LayoutParams params = new WindowManager.LayoutParams( 
    WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
    WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN |
    WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | 
    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | 
    WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
    WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
    PixelFormat.TRANSLUCENT);   

    WindowManager wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);    

    LayoutInflater inflater = (LayoutInflater)   getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    ViewGroup mTopView = (ViewGroup) inflater.inflate(R.layout.activity_black, null);
    getWindow().setAttributes(params);
    wm.addView(mTopView, params);

将“活动”修改为“设置”,并将“涂黑”组件移动到一个服务,效果良好

这是一个简单的方法:

Dialog dialog = new Dialog(this,android.R.style.Theme_DeviceDefault_Dialog_NoActionBar_MinWidth);
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY);

dialog.getWindow().setFormat(PixelFormat.TRANSLUCENT);
dialog.getWindow().setDimAmount(0);
dialog.setContentView(new EditText(this));
dialog.show();

幸运的是,从安卓4.0开始,出于隐私和安全原因,您尝试做的事情不再有效。您可以拦截触摸事件(未传递到底层活动)或不拦截触摸事件(传递到底层活动)。经过测试,上述产品com.haxor在Android 4.0上运行良好。啊,我误解了您的要求。有问题的应用程序不拦截触摸事件。很抱歉,我无法获得您的答案,您能在这里帮助我吗。我的问题和你的一样,但我能从上一层得到触摸响应,但我得到的是一个完全黑屏。