Android開発芸術探索ノート(十三)のWindowとWindowManager
1978 ワード
一、紹介
Windowは抽象クラスであり、その具体的な実装は
Androidのすべてのビューは、Activity、Dialog、Toastなど、Windowによって表示されます.これらのビューは実際にはWindowに添付されているので、Windowは実際にはViewの直接管理者です.
二、簡単にWindowを追加する
show my code
Flag制御Windowの表示特性 FLAG_NOT_TOUCH_MODALは、現在のWindow領域以外のクリックイベントを最下位のWindowに渡し、現在のWindow内のクリックイベントを自分で処理するシステムを示します. FLAG_NOT_FOCUSABLEは、Windowがフォーカスを取得する必要がなく、入力イベントも受信しないことを示し、上のFlagが有効になり、最終イベントは下層のフォーカスを持つWindowに直接渡されます. FLAG_SHOW_WHEN_LOCKこのモードをオンにすると、ウィンドウがロック画面に表示されます.
TypeパラメータはWindowのタイプを表しますアプリケーションWindowはActivity に対応する子Windowは単独では存在せず、特定の親Windowに付属する必要がある.Dialog のようにシステムWindowは、Toastのようにシステムステータスバー を作成するには、
Windowは抽象クラスであり、その具体的な実装は
PhoneWindow
クラスである.WindowManagerは、Windowへの外部アクセスのためのポータルであり、Windowの具体的な実装は、WindowManagerService(システムサービス)において、WindowManagerとWindowManagerServiceのインタラクションがIPCプロセスである.Androidのすべてのビューは、Activity、Dialog、Toastなど、Windowによって表示されます.これらのビューは実際にはWindowに添付されているので、Windowは実際にはViewの直接管理者です.
二、簡単にWindowを追加する
show my code
mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
mFloatingButton = new Button(this);
mFloatingButton.setText("click me");
mLayoutParams = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, 1, 0,
PixelFormat.TRANSPARENT);
mLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL // Window Window,
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE // ,
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED; //
mLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
mLayoutParams.gravity = Gravity.LEFT | Gravity.TOP;
mLayoutParams.x = 100;
mLayoutParams.y = 300;
mFloatingButton.setOnTouchListener(this);
// View
mWindowManager.addView(mFloatingButton, mLayoutParams);
WindowManager.LayoutParams
のFlagとTypeをご紹介します.Flag制御Windowの表示特性
TypeパラメータはWindowのタイプを表します
の権限を宣言する必要があります.