我想在整个应用程序(包括所有 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/

10-12 07:39