欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Android之Window、WindowManager與窗口管理-創(chuàng)新互聯(lián)

出處:http://blog.csdn.net/xieqibao/article/details/6567814

為欒城等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及欒城網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站制作、網(wǎng)站建設(shè)、欒城網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

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

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

      * addView();

     * updateViewLayout();

     * removeView();

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

window:

Window是android中的窗口,表示頂級(jí)窗口的意思,也就是主窗口,它有兩個(gè)實(shí)現(xiàn)類,PhoneWindow和MidWindow,我們一般的activity對(duì)應(yīng)的主要是PhoneWindow,在activity中經(jīng)常使用的setContentView等方法也是在這個(gè)里面實(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ā)生變化時(shí)更新

        }

    }

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

我們?cè)賮?lái)看看ActivityThead中的兩個(gè)重要的方法(至于ActivityThead將在一篇中詳細(xì)介紹):

      performLaunchActivity( );

         handleResumeActivity( );

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

             View decor =r.window.getDecorView();  //獲得窗口的頂級(jí)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í)際上是把主窗口的頂級(jí)view加入到WindowMangaer

      }

我們?cè)賮?lái)看看WindowManager。

windowManager:

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

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

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

     * addView();

     * updateViewLayout();

     * removeView();

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

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

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

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

來(lái)看下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通過(guò)IWindowSession把窗口添加到WindowManager中。ViewRoot繼承了Handler,實(shí)際上它的本質(zhì)就是一個(gè)Handler,窗口中View的事件處理、消息發(fā)送、回調(diào)等將通過(guò)ViewRoot來(lái)處理。

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


另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前文章:Android之Window、WindowManager與窗口管理-創(chuàng)新互聯(lián)
本文URL:http://aaarwkj.com/article20/copojo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、做網(wǎng)站、小程序開發(fā)、全網(wǎng)營(yíng)銷推廣、手機(jī)網(wǎng)站建設(shè)虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
国产成人91精品免费看片| 日韩三级成人在线视频| 久久亚洲一本综合久久| 好看的中文字幕人妻少妇| 日本免费一区二区三区等视频| 国产另类极品熟女露脸自拍| 亚洲人妻一区二区久久| 日韩激情小视频在线观看| 日韩精品视频在线观看| 亚洲中文字幕少妇视频| 在线青青草视频免费观看| 少妇精品久久久一区二区三区| 日韩欧美黄色三级视频| 欧美精品青青久久久久久| 国产传媒网站在线观看| 久久产精品一区二区三区日韩| 亚洲日本韩国福利久久| 成人午夜三级在线观看| 女同毛片一区二区三区| 亚洲精品a在线观看av| 国产精品福利午夜在线| av在线免费观看青青草原| 国产av一区二区三区最新精品| 一区二区亚洲国产精品| 日韩成人午夜视频在线| 久久久久久成人综合色| 欧美制服丝袜亚洲自拍偷拍| 亚洲av永久国产剧情| 国产精品一区二区久久毛片| 91日本精品免费在线视频| 一区二区三区艳情播放| 日韩有码在线中文字幕| 偷怕自拍在线免费观看| 男女视频午夜刺激一区二区| 黄色大全欧美在线观看| 99国产综合精品女| 久久精品女人天堂av免费观看 | 国产夫妻自拍一级黄片| 夫妻性生活在线视频一级片| 日本成熟妇高潮视频在线观看不卡| 日本精品不卡一二三区|