2011-02-03 59 views
4

我想覆盖整个应用程序的视图,包括所有活动。把它看作是我的应用程序中的HUD(抬头显示器)。该应用程序有多个活动,包括选项卡活动,HUD不以任何方式与用户交互,它只是显示信息,同时让用户像平常一样与应用程序交互。 我想要这个HUD用于调试目的,所以我(和其他人)可以监控应用程序的活动和状态,当手机没有连接到调试机器(现场测试)时。Android appwide覆盖图(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似乎并不在前台要坚持,当我启动它只是消失了新的活动。

回答

1

我知道这是一个古老的问题,但我想我会回答,因为这帮了我。我试图让一个HUD在openGL游戏中运行,并且完全适用于此。

由于您已经使用窗口管理器显示HUD,所以您需要在活动之间保持它的持续性,请在每个活动的onResume()方法中调用windowManager.addView(hudView, lp);。不知道内存的含义是什么(即,当窗口管理器在切换活动时将其从视屏中移除时,该视图被丢弃),但至少它会将HUD保持在整个应用程序中。

+0

我没有看到您的答案,我从此停止在Android上工作。这对于我的目的来说并不理想,因为现在每个活动都需要了解HUD。但是,它看起来像一个合理的答案,可能会起作用。我接受! – acoward 2011-05-16 02:33:22

0

我读了你停止了与Android平台,但也许对于进一步的读者:

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