Activityに依存しないグローバルダイアログの実装
2878 ワード
Activityに依存しないグローバル・ダイアログを実装するには、次の3つの方法があります.
最初の方法はシステムを利用してdialogをポップアップする
alterでshow()文の前に:
そしてAndroidManifestでxmlへのアクセス権:android.permission.SYSTEM_ALERT_WINDOW
2つ目の方法はWindowManagerを取得し、直接viewを追加することです
3つ目の方法は、背景に透明なactivityを使用して、Activityでダイアログボックスをポップアップすることです.
これは簡単で、通常のダイアログボックスの表示に相当します.
最初の方法はシステムを利用してdialogをポップアップする
alterでshow()文の前に:
alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
そしてAndroidManifestでxmlへのアクセス権:android.permission.SYSTEM_ALERT_WINDOW
2つ目の方法はWindowManagerを取得し、直接viewを追加することです
wmParams = new WindowManager.LayoutParams();
// WindowManagerImpl.CompatModeWrapper
mWindowManager = (WindowManager)getApplication().getSystemService(getApplication().WINDOW_SERVICE);
// window type
wmParams.type = LayoutParams.TYPE_PHONE;
// ( )
wmParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE;
//
wmParams.gravity = Gravity.LEFT | Gravity.TOP;
// , x、y , gravity
wmParams.x = 0;
wmParams.y = 0;
//
wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
wmParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
LayoutInflater inflater = LayoutInflater.from(getApplication());
//
mFloatLayout = (LinearLayout) inflater.inflate(R.layout.float_layout, null);
// mFloatLayout
mWindowManager.addView(mFloatLayout, wmParams);
3つ目の方法は、背景に透明なactivityを使用して、Activityでダイアログボックスをポップアップすることです.
これは簡単で、通常のダイアログボックスの表示に相当します.