青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

大龍的博客

常用鏈接

統(tǒng)計

最新評論

Android 之 Window、WindowManager 與窗口管理

其實(shí)在android中真正展示給用戶的是window和view,activity在android中所其的作用主要是處理一些邏輯問題,比如生命周期的管理、建立窗口等。在android中,窗口的管理還是比較重要的一塊,因?yàn)樗苯迂?fù)責(zé)把內(nèi)容展示給用戶,并和用戶進(jìn)行交互。響應(yīng)用戶的輸入等。

在講窗口管理時,有必要先說下ViewManager這個接口,這個接口主要有以下的實(shí)現(xiàn)子接口和實(shí)現(xiàn)類,分別是:WindowManagerViewGroup里面還有三個重要的方法:

      * addView(); 

     * updateViewLayout();

     * removeView();

WindowManager中,addView方法表示的是將主窗口中的頂級view(也就是DecorView)添加到WindowManager中,并建立會話。接下來會詳細(xì)介紹。我們先來看看Window

Window:

Window是android中的窗口,表示頂級窗口的意思,也就是主窗口,它有兩個實(shí)現(xiàn)類,PhoneWindow和MidWindow,我們一般的activity對應(yīng)的主要是PhoneWindow,在activity中經(jīng)常使用的setContentView等方法也是在這個里面實(shí)現(xiàn)的。

    @Override

    public void setContentView(View view,ViewGroup.LayoutParams params) {

        if (mContentParent == null) {

            installDecor();

        } else {

            mContentParent.removeAllViews();

        }

        mContentParent.addView(view, params);

        final Callback cb = getCallback();

        if (cb != null) {

           cb.onContentChanged(); //窗口類容發(fā)生變化時更新

        }

    }

 每個主窗口中都有一個View,稱之為DecorView,是主窗口中的頂級view(實(shí)際上就是ViewGroup),在View中有兩個成員變量叫做mParent、mChildren,它是用來管理view的上下級關(guān)系的。而ViewGroup是對一組View的管理。因此,在ViewGroup中建立了所有view的關(guān)系網(wǎng)。而最終ViewGroup附屬在主窗口上。這樣就很容易在窗口中通過findViewById找到具體的View了。view中的事件處理也是根據(jù)這個路徑來處理的。

我們再來看看ActivityThead中的兩個重要的方法(至于ActivityThead將在一篇中詳細(xì)介紹)

           performLaunchActivity( );

            handleResumeActivity( );

performLaunchActivity中,會調(diào)用activity.attach方法建立一個window, 在handleResumeActivity方法中啟動activity的時候,會將主窗口加入到WindowManager

             View decor =r.window.getDecorView(); //獲得窗口的頂級View

      decor.setVisibility(View.INVISIBLE);

      ViewManager wm= a.getWindowManager();    //WindowManager繼承自ViewManager

      WindowManager.LayoutParams l =r.window.getAttributes();

      a.mDecor = decor;

      l.type =WindowManager.LayoutParams.TYPE_BASE_APPLICATION;

     l.softInputMode |= forwardBit;

     if (a.mVisibleFromClient) {

         a.mWindowAdded = true;

         wm.addView(decor, l); //實(shí)際上是把主窗口的頂級view加入到WindowMangaer

      }

我們再來看看WindowManager

WindowManager:

WindowManager主要用來管理窗口的一些狀態(tài)、屬性、view增加、刪除、更新、窗口順序、消息收集和處理等。

通過Context.getSystemService(Context.WINDOW_SERVICE)的方式可以獲得WindowManager的實(shí)例.

WindowManager繼承自ViewManager,里面涉及到窗口管理的三個重要方法,分別是:

     * addView(); 

     * updateViewLayout();

     * removeView();  

在WindowManager中還有一個重要的靜態(tài)類LayoutParams.通過它可以設(shè)置和獲得當(dāng)前窗口的一些屬性。

我們先來看看addView()方法,在addView中,會利用LayoutParams獲得windowView屬性,并為每個window創(chuàng)建ViewRootViewRootViewWindowManager之間的橋梁,真正把View傳遞給WindowManager的是通過ViewRootsetView()方法,ViewRoot實(shí)現(xiàn)了ViewWindowManager之間的消息傳遞。在將主窗口添加到WindowManger時,它首先會建立一個代理對象:

              wm=(WindowManagerImpl)context.getSystemService(Context.WINDOW_SERVICE)

并且打開會話(IWindowSession),之后Window將通過該會話與WindowManager建立聯(lián)系,

來看下setView方法:

         try {

        res =sWindowSession.add(mWindow, mWindowAttributes,

         getHostVisibility(), mAttachInfo.mContentInsets);

     } catch (RemoteException e) {

         mAdded = false;

        mView = null;

         mAttachInfo.mRootView =null;

         unscheduleTraversals();

         throw newRuntimeException("Adding window failed", e);

      } finally {

         if (restore) {

            attrs.restore();

         }

      }

在這段代碼中,ViewRoot通過IWindowSession把窗口添加到WindowManager中。ViewRoot繼承了Handler,實(shí)際上它的本質(zhì)就是一個Handler,窗口中View的事件處理、消息發(fā)送、回調(diào)等將通過ViewRoot來處理。

這樣就完成了把窗口添加到WindowManager中,并交由WindowManager來管理窗口的view、事件、消息收集處理等。

posted on 2013-01-13 04:18 大龍 閱讀(1349) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲高清在线观看一区| 久久精品男女| 国产精品色一区二区三区| 久久精品午夜| 久久aⅴ国产欧美74aaa| 亚洲无毛电影| 99亚洲伊人久久精品影院红桃| 久久久精品国产一区二区三区 | 欧美另类综合| 欧美激情精品久久久久久| 麻豆久久婷婷| 欧美成人免费视频| 欧美日韩国产区| 国产嫩草影院久久久久| 狠狠v欧美v日韩v亚洲ⅴ| 黄色亚洲精品| 亚洲精品久久久久久久久久久久| 亚洲日本在线视频观看| 亚洲免费高清| 久久偷窥视频| 欧美激情国产日韩| 欧美性猛交99久久久久99按摩| 久久久www免费人成黑人精品| 亚洲天堂av高清| 久久精品国产91精品亚洲| 美女视频黄a大片欧美| 亚洲承认在线| 香蕉久久一区二区不卡无毒影院| 久久久精品国产99久久精品芒果| 欧美精选午夜久久久乱码6080| 国产欧美精品日韩精品| 亚洲免费视频一区二区| 欧美日本高清| 日韩午夜精品视频| 亚洲高清三级视频| 久久视频在线免费观看| 国产日韩专区| 久久免费观看视频| 亚洲欧美日韩一区在线| 国产精品vip| 亚洲欧美综合v| 亚洲性图久久| 国产精品久久久久久久一区探花| 亚洲国产二区| 欧美wwwwww| 老司机精品久久| 9i看片成人免费高清| 99精品国产在热久久| 国产精品高清在线| 欧美专区在线观看| 久久九九热re6这里有精品| 韩国av一区二区三区| 久久久久久一区| 蜜桃伊人久久| 欧美日本不卡| 羞羞答答国产精品www一本 | 亚洲精选久久| 亚洲精选在线观看| 亚洲国产精品小视频| 亚洲日本中文| 久久综合色播五月| 中文亚洲欧美| 亚洲大片一区二区三区| 亚洲人成网站色ww在线| 欧美午夜视频| 久久字幕精品一区| 欧美精品一区二区三区蜜臀| 亚洲欧美日韩精品久久亚洲区 | 欧美一区二区三区在线免费观看| 亚洲天堂成人在线观看| 亚洲国产aⅴ天堂久久| 亚洲一区欧美| 亚洲综合999| 欧美三级视频在线播放| 欧美韩国在线| 国模精品娜娜一二三区| 亚洲永久视频| 亚洲欧美日韩久久精品| 欧美日韩伦理在线免费| 欧美国产高清| 亚洲精品欧美专区| 欧美黄污视频| 99视频精品全国免费| 亚洲私人影院在线观看| 国产精品福利网| 亚洲欧美视频一区| 欧美二区不卡| 99亚洲精品| 性欧美精品高清| 好吊色欧美一区二区三区四区| 欧美在线亚洲一区| 老牛国产精品一区的观看方式| 精品不卡一区| 欧美久久一区| 亚洲欧美电影院| 欧美成人午夜视频| 亚洲永久精品大片| 在线精品视频一区二区三四| 欧美福利在线| 久久精品亚洲一区二区三区浴池| 久久亚洲风情| 亚洲男人天堂2024| 亚洲第一久久影院| 国产欧美精品日韩精品| 欧美精品日本| 免费试看一区| 久久嫩草精品久久久精品| 中文久久精品| 99精品99久久久久久宅男| 美玉足脚交一区二区三区图片| 亚洲综合精品| 一区二区三区黄色| 亚洲精品免费在线播放| 经典三级久久| 激情婷婷亚洲| 黄色成人av在线| 在线观看视频一区| 在线精品视频免费观看| 亚洲福利视频专区| 亚洲激情电影中文字幕| 伊人成人在线| 亚洲激情在线观看视频免费| 亚洲激情亚洲| 一区二区三区欧美激情| 一区二区免费在线视频| 亚洲精品一区二区三区蜜桃久| 亚洲午夜av电影| 午夜精品短视频| 久久精品人人做人人爽电影蜜月| 亚洲在线成人| 久久午夜国产精品| 欧美激情在线狂野欧美精品| 亚洲欧美日韩一区| 国产精品成人一区二区三区吃奶 | 久久躁日日躁aaaaxxxx| 久久偷窥视频| 欧美午夜精品久久久久免费视| 国产精品社区| 亚洲国产精品www| 亚洲自拍另类| 亚洲福利视频网站| 亚洲小少妇裸体bbw| 老司机精品视频一区二区三区| 久久精品国产亚洲5555| 欧美日本一区二区三区| 国产日韩综合| 亚洲欧美在线另类| 亚洲精品乱码久久久久久日本蜜臀| 一级日韩一区在线观看| 久久全国免费视频| 国产老肥熟一区二区三区| 99热在线精品观看| 亚洲缚视频在线观看| 久久精品夜色噜噜亚洲aⅴ| 国产精品色一区二区三区| 亚洲伦伦在线| 亚洲日韩视频| 欧美日韩国产成人在线观看| 亚洲国产一成人久久精品| 欧美大片91| 欧美二区不卡| 一本色道久久综合狠狠躁篇怎么玩 | 国产精品午夜久久| 性刺激综合网| 久久久久国产精品一区二区| 国产色综合网| 欧美高清在线| 欧美性做爰毛片| 久久精品二区亚洲w码| 久久精品系列| 一区二区三区不卡视频在线观看| 99一区二区| 国产深夜精品| 日韩视频免费观看高清完整版| 国产精品www.| 老司机精品久久| 国产精品sm| 亚洲黄页视频免费观看| 国产精品婷婷午夜在线观看| 欧美电影免费观看| 国产精品乱码| 亚洲另类一区二区| 亚洲精品1区2区| 欧美一区二区视频在线观看| 亚洲激情第一页| 久久伊人亚洲| 久久综合一区| 国语自产偷拍精品视频偷| 亚洲剧情一区二区| 最新国产乱人伦偷精品免费网站| 亚洲一区在线免费| 在线中文字幕不卡| 欧美日韩成人| 亚洲精品视频在线| 99国产精品99久久久久久| 老巨人导航500精品| 欧美成人精品不卡视频在线观看| 国产亚洲欧洲一区高清在线观看 | 在线免费日韩片| 久久成人精品|