2011-02-03 31 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中的每個 活動中調用它。