2011-02-03 4 views
4

すべてのアクティビティが含まれているアプリ全体にオーバーレイ表示したい。それを私のアプリ上のHUD(Head Up Display)と考えてください。このアプリは、タブのアクティビティを含む複数のアクティビティを持ち、HUDは何らかの方法でユーザーとやりとりすることはなく、単に情報を表示しながら、ユーザーが通常どおりにアプリケーションとやりとりできるようにします。 私はこのHUDをデバッグのために使いたいので、電話機がデバッグマシンに接続されていないとき(フィールドテスト)、私と他の人がアプリケーションのアクティビティと状態を監視できます。Android appwide view overlay(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

私はこれが古い質問だと知っていますが、これは私を助けてくれたので、とにかく答えると思いました。私はopenglゲームでHUDを実行しようとしていましたが、これは完全に動作します。

すでにウィンドウマネージャを使用してHUDを表示しているので、各アクティビティのonResume()メソッドでwindowManager.addView(hudView, lp);を呼び出すだけで、アクティビティ間の持続性を保つために行う必要があります。メモリの影響が何であるかはわかりません(つまり、ウィンドウマネージャがアクティビティの切り替え時に画面から画面を削除したときに表示されているビュー)が、少なくともアプリケーション全体でHUDを維持します。

+0

私はあなたの答えを見ていないし、私は以来Androidでの作業を停止しました。すべての活動がHUDを認識する必要があるので、私の目的には理想的ではありません。しかし、それはおそらくうまくいく合理的な答えのように見えます。承諾します! – acoward

0

私はあなたがアンドロイドで作業を停止したことを読んで、多分さらに読者のために:

あなたはフラグWindowManager.LayoutParams.TYPE_SYSTEM_ALERT,を逃しました。 サービスによって拡張されたビューとして実装することをお勧めします。 onResumeのアクティビティごとに アクティビティで呼び出さないでください。