我想在整个应用程序(包括所有 Activity )上覆盖 View 。可以将其视为我的应用程序上的HUD(平视显示器)。该应用程序具有多种 Activity ,包括选项卡 Activity ,并且HUD不会以任何方式与用户交互,它只是在显示信息的同时让用户像往常一样与应用程序交互。
我希望将此HUD用于调试目的,以便我(和其他人)可以监视应用程序的 Activity 并在手机未连接到调试机的情况下状态(现场测试)。
如何添加这样的 View ?
我试过像这样使用WindowManager.addView():
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT,
WindowManager.LayoutParams.TYPE_APPLICATION,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
windowManager.addView(hudView, lp);
但是,当我启动新 Activity 时,HUD似乎并没有停留在前台,它只是消失了。
最佳答案
我知道这是一个古老的问题,但是我认为无论如何我都会回答,因为这帮助了我。我试图让HUD在openGL游戏中运行,因此非常适合。
由于已经使用窗口管理器显示了HUD,因此要使它在 Activity 之间保持持久状态,您需要做的就是在每个 Activity 的windowManager.addView(hudView, lp);
方法中调用onResume()
。虽然不确定内存的含义是什么(即在切换 Activity 时窗口管理器将其从屏幕上删除时 View 是否已被废弃),但至少它将使HUD贯穿整个应用程序。
关于Android应用范围 View 叠加层(HUD),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4881597/