Activityに依存しないグローバルダイアログの実装

2878 ワード

Activityに依存しないグローバル・ダイアログを実装するには、次の3つの方法があります.
最初の方法はシステムを利用して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; 
//  , xy , 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でダイアログボックスをポップアップすることです.
これは簡単で、通常のダイアログボックスの表示に相当します.