Android類似360懸濁ウィンドウ作成(一)


転載先:クリックしてリンクを開く原文:WindowManagerを呼び出し、WindowManagementを設定する.LayoutParamsの関連属性は、WindowManagerのaddViewメソッドによってViewを作成することによって生成されたViewはWindowManagerに基づいている.LayoutParamsは属性が違うので、効果も違います.たとえば、システムのトップレベルのウィンドウを作成し、懸濁ウィンドウの効果を実現します.WindowManagerの方法は簡単で、基本的に3つのaddView、removeView、updateViewLayoutを使用します.ウィンドウマンはLayoutParamsのプロパティは多く、SDKドキュメントを参照してください.ここではAndroidのWindowManagerを示します.JAvaソース、具体的に見てもいいです.簡単なサンプルコードを次に示します.
public class myFloatView extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button bb=new Button(getApplicationContext());
        WindowManager wm=(WindowManager)getApplicationContext().getSystemService("window");
        WindowManager.LayoutParams wmParams = new WindowManager.LayoutParams();
 
        /**
         *    WindowManager.LayoutParams     
         *        SDK  
         */
        wmParams.type=2002;   //     ,      2003
        wmParams.format=1;
         /**
         *   flags    
         *     wmParams.flags |= FLAG_NOT_FOCUSABLE;
         *40    wmParams     (32)+ FLAG_NOT_FOCUSABLE(8)
         */
        wmParams.flags=40;
        wmParams.width=40;
        wmParams.height=40;
        wm.addView(bb, wmParams);  //  View
    }
}

AndroidManifestでxmlに権限を追加するには、次の手順に従います.
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
   /**
         * Window type: phone.  These are non-application windows providing
         * user interaction with the phone (in particular incoming calls).
         * These windows are normally placed above all applications, but behind
         * the status bar.
         */
        public static final int TYPE_PHONE              = FIRST_SYSTEM_WINDOW+2;
 
        /**
         * Window type: system window, such as low power alert. These windows
         * are always on top of application windows.
         */
        public static final int TYPE_SYSTEM_ALERT       = FIRST_SYSTEM_WINDOW+3;

このFIRST_SYSTEM_WINDOWの値は2000です.
2003と2002の違いは、2003タイプのViewが2002タイプよりもtopで、システムドロップダウンステータスバーに表示できることです!