Android浮上ウィンドウの実現

2195 ワード

最近流量統計をしていますが、懸濁窓がサンプルポイントになります.そこで下懸濁窓の実現を少し検討した:効果図は以下の通り:透明な背景を作った.の
  • 懸濁ウィンドウはメインインタフェースに現れる必要があります.APPが閉じられても、懸濁ウィンドウは1つのサービスで制御する必要があります.
  • 懸濁ウィンドウが他のアプリケーションよりも高い以上、懸濁ウィンドウを制御するのはシステムクラスであり、WindowMangerは懸濁ウィンドウの主な実現クラスである.WindowManager:ウィンドウマネージャ、ウィンドウにコントロールを追加および削除するには、(1)まずWindowManagerオブジェクトを取得し、
  • WindowManager mWindowManager=
     getApplication().getSystemService(getApplication().WINDOW_SERVICE);

    (2)フローティングコントロールのスタイルを設定し、WindowManagerオブジェクト、コントロールのスタイルに対して専用のクラスをカプセル化する:WindowManager.LayoutParams、重要な属性と方法:
    LayoutParams.x設定コントロールは画面のx軸にデフォルト設定されています.y設定コントロールは画面のy軸にデフォルト設定されています.画面上のコントロールを設定するフォーム設定コントロールは画面にあるwidth設定コントロールの幅…詳細はAPIドキュメントを参照
    次のようになります.
                 //  param  
        WindowManager.LayoutParam wmParams=new      WindowManager.LayoutParams();
    
        //                 
        wmParams.gravity = Gravity.LEFT | Gravity.TOP; 
    
        //          ,  x、y   
        wmParams.x = 0;
        wmParams.y = 0;
    
        //            
        wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
    

    3、カスタムビューと上で定義したwmParamsスタイルをウィンドウに追加し、懸濁窓として使用する
    LayoutInflater inflater = LayoutInflater.from(getApplication());
            //            
         LinearLayout   mFloatLayout = (LinearLayout) inflater.inflate(R.layout.flow_window, null);
    
            //  mFloatLayout
            mWindowManager.addView(mFloatLayout, wmParams);
    
    4

    mWindowManager.removeViewImmediate (View view) “`
    それ以来、簡単にコントロールを携帯電話に浮かべることができます.この懸濁ウィンドウはすべてより高くなります.どんなインタフェースでも現れます.「インテリジェント化」は比較できません.つまり、携帯電話のメインインタフェース(一級インタフェース)でしか表示されません.他のときは表示されません.どうすればいいですか.
    考え方は:私は懸濁で携帯電話の流量の更新をしているので、更新する時、私は今携帯電話が表示しているインターフェースが主なインターフェースであるかどうかを判断して、そうでなければ、私は隠れて、いいです.