我希望在整个应用中叠加一个视图,包括所有活动。将其视为我的应用程序上的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似乎并没有停留在前景中。它只是消失了。
答案 0 :(得分:1)
我知道这是一个老问题,但我认为无论如何我会回答,因为这帮助了我。我试图在OpenGL游戏中运行HUD,这对此非常有效。
由于您已经使用窗口管理器显示HUD,因此您需要做的就是在活动的windowManager.addView(hudView, lp);
方法中调用onResume()
。不确定内存含义是什么(即当窗口管理器在切换活动时将其从屏幕上移除时视图被处理掉),但至少它会在整个应用程序中保持HUD。
答案 1 :(得分:0)
我读到你停止使用android,但也许是为了更多的读者:
你错过了国旗WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
。
最好实现作为服务膨胀的视图。不要每次都打电话
onResume中的活动。