我希望能够创建一个始终位于 Android 显示屏前面的 Activity。它应该不接收任何输入,只需将其传递给它下面的任何应用程序。类似于HUD的东西。
我能够研究我需要将基础窗口类型设置为 TYPE_SYSTEM_ALERT 但看起来 Android 忽略了我的代码 - 即使我从清单中删除 android.permission.SYSTEM_ALERT_WINDOW 权限也不会引发异常。(必须使用此窗口类型)。当我尝试在对话框上使用 ALERT 类型时,它工作正常,但我无法将对话框变成全屏透明实体。这是我的代码,也许缺少一些简单的东西。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
getWindow().setBackgroundDrawableResource(android.R.color.transparent);
getWindow().setFormat(PixelFormat.TRANSLUCENT);
setContentView(R.layout.main);
}
必须在 xml 清单中从外部启用半透明设置,否则它也不起作用。
<item name="android:windowIsTranslucent">true</item>