開始我想獲取當(dāng)前活動的activity實例,然后在依附其彈出dialog,不過沒有找到獲取的方法,只能獲取到classname,后來找到了3個方法: 第一個方法利用系統(tǒng)彈出dialog,很牛x,不過樣子有點丑 第二個方法是獲取WindowManager,直接添加view 第三個方法是找一個透明的activity當(dāng)背景。 第一種其實可以通過setview去改變外觀,第二種和第一種最終是利用同一個原理,第三種實在是懶得找了,有時間的時候再補上吧。。。 -------------------------------------------------- 先說具體做法,原因在其后給出: 寫好Alter功能塊后,在alter.show()語句前加入: [java] view plaincopyalert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 注:alter為AlertDialog類型對象 然后在AndroidManifest.xml中加入權(quán)限: [java] view plaincopy'android.permission.SYSTEM_ALERT_WINDOW'> 下面進行簡單的解釋: 如果只在Service中寫入常在Activity中使用的創(chuàng)建Alter的代碼,運行時是會發(fā)生 錯誤的,因為Alter的顯示需要依附于一個確定的Activity類。而以上做法就是聲明我們要彈出的這個提示框是一個系統(tǒng)的提示框,即全局性質(zhì)的提示框,所以只要手機處于開機狀態(tài),無論它現(xiàn)在處于何種界面之下,只要調(diào)用alter.show(),就會彈出提示框來。 轉(zhuǎn)載自 http://blog.csdn.net/twoicewoo/article/details/7448584 ------------------------------------------------------------------ d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);//系統(tǒng)中關(guān)機對話框就是這個屬性//d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);//窗口可以獲得焦點,響應(yīng)操作//d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY);//窗口不可以獲得焦點,點擊時響應(yīng)窗口后面的界面點擊事件 ------------------------------------------------------------------- final WindowManager wm = (WindowManager)context.getSystemService('window'); WindowManager.LayoutParams para = newWindowManager.LayoutParams(); para.height = -1; para.width = -1; para.format = 1; para.flags = LayoutParams.FLAG_FULLSCREEN |LayoutParams.FLAG_LAYOUT_IN_SCREEN; para.type = LayoutParams.TYPE_SYSTEM_ALERT; final View mView = LayoutInflater.from(context).inflate( R.layout.xxxxxxxxxx, null); wm.addView(mView, para); mView.findViewById(R.id.button).setOnClickListener(newOnClickListener() { @Override public void onClick(View v) { wm.removeView(mView); } }); 參考 http://www./q/3746 ---------------------------------------------
|