一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Android: Service中創(chuàng)建窗口顯示(TYPE

 Sundy工作室 2013-10-15

有時候需要在顯示UI的時候不中斷原來的Activity

比如在播放視頻時或者玩游戲時,需要顯示某個菜單(可以是系統(tǒng)提示,或類似于TV菜單)

顯然用Activity來做是不行的,因?yàn)樾翧ctivity啟動的時候會把原來的Activity pause掉

怎么做呢,可以參考系統(tǒng)電量提示窗口或statusbar那樣在service中啟動窗口

新窗口將會出現(xiàn)在UI最上層,但不會中斷原來的Activity

效果圖,一個是播視頻中,一個是玩游戲中:


看一下WindowManager.LayoutParams的兩個屬性:

int TYPE_SYSTEM_ALERT        Window type: system window, such as low power alert.
int TYPE_SYSTEM_OVERLAYWindow type: system overlay windows, which need to be displayed on top of everything else.

這兩個不錯,正是我們想要的,上代碼~


Seivece中代碼

  1. private void showSystemDialog() {     
  2.     /* create ui */   
  3.         View v = View.inflate(mContext, R.layout.main, null);  
  4.         AlertDialog.Builder b = new AlertDialog.Builder(mContext);  
  5.         b.setView(v);  
  6.         d = b.create();   
  7.         d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);  
  8.         //d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY);  
  9.     d.show();     
  10.   
  11.         /* set size & pos */  
  12.         WindowManager.LayoutParams lp = d.getWindow().getAttributes();                
  13.         WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);  
  14.         Display display = wm.getDefaultDisplay();  
  15.     if (display.getHeight() > display.getWidth()) {  
  16.         //lp.height = (int) (display.getHeight() * 0.5);  
  17.         lp.width = (int) (display.getWidth() * 1.0);          
  18.     } else {  
  19.         //lp.height = (int) (display.getHeight() * 0.75);  
  20.         lp.width = (int) (display.getWidth() * 0.5);                  
  21.     }  
  22.         d.getWindow().setAttributes(lp);  
  23.           
  24.         /* update ui data */  
  25.         lv = (ListView) d.getWindow().findViewById(R.id.listview);   
  26.        SimpleAdapter adapter = new SimpleAdapter(mContext, getListData(), R.layout.list_item,                 
  27.                             new String[]{"item_text", "item_img"},                
  28.                             new int[]{R.id.item_text, R.id.item_img});   
  29.         lv.setAdapter(adapter);           
  30.           
  31.         /* set listener */  
  32.        lv.setOnItemClickListener(new OnItemClickListener() {  
  33.         public void onItemClick(AdapterView<?> parent, View view, int pos,  
  34.                 long id) {  
  35.             d.dismiss();    
  36.         }  
  37.        });       
  38.       
  39. }  

創(chuàng)建了一個dialog,可以調(diào)整dialog的位置、大小,dialog的從R.layout.main創(chuàng)建,動態(tài)添加UI數(shù)據(jù)

響應(yīng)Ui上的OnClick操作


* manifest中需要相應(yīng)的permission

    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />  
    <uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" /> 

* TYPE_SYSTEM_ALERT跟TYPE_SYSTEM_OVERLAY的區(qū)別

   以上面的代碼為例,system_alert窗口可以獲得焦點(diǎn),響應(yīng)操作

   system_overlay窗口顯示的時候焦點(diǎn)在后面的Activity上,仍舊可以操作后面的Activity

* 上面的代碼中請留意d.show()的位置,只有在show之后才能調(diào)整dialog大小及更新數(shù)據(jù)

* 可以調(diào)整的Attributes,先dump出來

   lp.flags = 0x20002, // FLAG_DIM_BEHIND | FLAG_ALT_FOCUSABLE_IM

   lp.gravity = 0x11, // CENTER

   lp.type = 0x7d3, // TYPE_SYSTEM_ALERT

   這些Attr都可以設(shè)置,具體定義在API文檔WindowManager.LayoutParams中








    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美不卡午夜中文字幕| 国产成人精品资源在线观看| 精品人妻一区二区三区四在线| 亚洲高清中文字幕一区二三区| 毛片在线观看免费日韩| 日韩精品少妇人妻一区二区| 粉嫩内射av一区二区| 国内胖女人做爰视频有没有| 自拍偷女厕所拍偷区亚洲综合| 91欧美亚洲视频在线| 久久精品亚洲精品国产欧美| 欧美日韩国产成人高潮| 国产内射一级二级三级| 亚洲综合色在线视频香蕉视频| 中文字幕一二区在线观看| 国产精品日韩欧美第一页| 国产一区麻豆水好多高潮| 狠狠干狠狠操亚洲综合| 国产av熟女一区二区三区蜜桃| 久久亚洲国产视频三级黄| 五月情婷婷综合激情综合狠狠 | 国产一区欧美一区日本道| 日韩精品一区二区三区射精| 国产成人精品一区二区在线看| 欧美人妻盗摄日韩偷拍| 男女午夜在线免费观看视频| 九九热精品视频免费在线播放| 亚洲欧美日韩国产自拍| 久久精品国产在热久久| 俄罗斯胖女人性生活视频| 成人免费在线视频大香蕉| 日韩国产中文在线视频| 国产日韩欧美在线亚洲| 免费在线成人激情视频| 中文字幕一区二区三区中文| 欧美夫妻性生活一区二区| 久七久精品视频黄色的| 欧美一区二区口爆吞精| 欧美性高清一区二区三区视频| 亚洲最新av在线观看| 国产精品视频久久一区|