Android应用程序全局视图叠加(HUD)

5
我希望能够在我的整个应用程序中添加一个视图,包括所有活动。可以将其视为应用程序上的HUD(抬头显示)。该应用程序具有多个活动,包括选项卡活动,而HUD不会以任何方式与用户进行交互,它只是在用户正常交互时显示信息。
我需要此HUD用于调试目的,以便我(和其他人)可以在手机未连接到调试机器(现场测试)时监视应用程序活动和状态。
如何添加这样的视图?
我尝试使用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);

但是当我启动新的活动时,HUD似乎不会在前台持续存在,它只是消失了。
2个回答

1

我知道这是一个老问题,但我还是想回答一下,因为这对我很有帮助。我试图在一个OpenGL游戏中运行HUD,这对此非常完美。

由于您已经使用窗口管理器显示了HUD,所以您只需要在每个活动的onResume()方法中调用windowManager.addView(hudView, lp);即可使其在活动之间保持持久。不确定内存影响如何(即当窗口管理器从屏幕上删除视图时,视图是否被处理),但至少它将在整个应用程序中保持HUD。


我没有看到你的答案,而且我已经停止在Android上工作了。对于我的目的来说,这并不理想,因为现在每个活动都需要知道HUD的存在。然而,这似乎是一个合理的答案,可能会起作用。我接受! - acoward

0

我看到你停止使用Android了,但是也许对于其他读者:

你错过了标志WindowManager.LayoutParams.TYPE_SYSTEM_ALERT。最好实现为由服务膨胀的视图。不要在每个活动的onResume中调用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接