Android app wide view overlay(HUD)

时间:2011-02-03 00:39:08

标签: android view overlay

我希望在整个应用中叠加一个视图,包括所有活动。将其视为我的应用程序上的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 个答案:

答案 0 :(得分:1)

我知道这是一个老问题,但我认为无论如何我会回答,因为这帮助了我。我试图在OpenGL游戏中运行HUD,这对此非常有效。

由于您已经使用窗口管理器显示HUD,因此您需要做的就是在活动的windowManager.addView(hudView, lp);方法中调用onResume()。不确定内存含义是什么(即当窗口管理器在切换活动时将其从屏幕上移除时视图被处理掉),但至少它会在整个应用程序中保持HUD。

答案 1 :(得分:0)

我读到你停止使用android,但也许是为了更多的读者:

你错过了国旗WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,。 最好实现作为服务膨胀的视图。不要每次都打电话 onResume中的活动。