我希望能够创建一个始终位于 Android 显示屏前面的 Activity。 它应该不接收任何输入,只需将其传递给它下面的任何应用程序。类似于 HUD。
我能够研究我需要将基础窗口类型设置为 TYPE_SYSTEM_ALERT 但看起来 Android 忽略了我的代码 - 即使我从 list 中删除 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 list 中从外部启用,否则它也不起作用。
<item name="android:windowIsTranslucent">true</item>
最佳答案
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
PixelFormat.TRANSLUCENT);
WindowManager wm = (WindowManager) getApplicationContext()
.getSystemService(Context.WINDOW_SERVICE);
ViewGroup mTopView = (ViewGroup) App.inflater.inflate(R.layout.main, null);
getWindow().setAttributes(params);
wm.addView(mTopView, params);
关于android - 如何在 Android 中创建始终处于顶部的全屏覆盖 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10095344/