如何创建一个可以覆盖主屏幕但在按下主页或后退按钮时不会被解除的透明活动?

在我的应用程序中,我希望显示一个始终可见,半透明的状态,但我很难弄清楚它是如何完成的。

Facebook Messenger和我见过的其他一些应用程序都是这样做的,所以我知道它是可能的。 他们使用SYSTEM_ALERT_WINDOW权限来显示一个大致透明的活动或对话框’always-on-top’。

但我不明白的是他们如何制作它以便在按下后退或主页按钮时它们不会关闭? 换句话说,他们似乎根本不像活动,但我不知道他们还能做什么?

这里的任何帮助将非常感谢:-)

您可以借助于创建透明活动

  1. 使用,使xml文件中的布局背景透明

    机器人:背景=“@机器人:彩色/透明”

  2. 此外,使清单文件中的主题对该特定活动透明

  3. 并且对于反压按下覆盖onBackPressed()方法并删除super.onBackPressed()

     @Override public void onBackPressed() { // TODO Auto-generated method stub } 

您可以使用以下代码..除了它不允许从内部存储安装应用程序之外,它对我有用..

 LayoutInflater layoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); View oView = layoutInflater.inflate(R.layout.activity_transperant, null); WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 0 | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT); WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); wm.addView(oView, params);