<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    即興的靈感

    思維是一種藝術(shù); 藝術(shù)需要靈感。

    博客好友

    最新評(píng)論

    Android中UI視圖之試圖繪制機(jī)制

    在Android中,當(dāng)一個(gè)活動(dòng)Activity接收到焦點(diǎn)時(shí),它將被要求繪制它自己的布局。Android框架將處理這個(gè)繪畫的過(guò)程,但是這個(gè)Activity活動(dòng)必須提供它的布局層次的根節(jié)點(diǎn)。

      繪畫從布局的根節(jié)點(diǎn)開始。它被要求來(lái)測(cè)量和繪制布局樹。繪畫通過(guò)遍歷布局樹并渲染每個(gè)和失效區(qū)域相交的視圖來(lái)處理。相應(yīng)的,每個(gè)視圖組負(fù)責(zé)請(qǐng)求繪制它的子視圖(通過(guò)draw() 方法)而每個(gè)視圖負(fù)責(zé)畫它自己。因?yàn)檫@個(gè)樹是順序遍歷的,這意味著先畫父節(jié)點(diǎn)(也就是在屏幕后面),然后按照樹中出現(xiàn)的順序畫其同層次節(jié)點(diǎn)。


      框架將不會(huì)畫不在失效區(qū)域的視圖,而且還將會(huì)幫你畫視圖背景。

      你可以強(qiáng)制一個(gè)視圖被重畫,通過(guò)調(diào)用invalidate()。

      繪畫布局共有兩步:一個(gè)度量過(guò)程和一個(gè)布局過(guò)程。度量過(guò)程在measure(int, int)里實(shí)現(xiàn)且是一個(gè)自頂向下的視圖樹遍歷。每個(gè)視圖在遞歸時(shí)往下推送尺寸規(guī)格。在度量過(guò)程的最后,每個(gè)視圖都已經(jīng)保存了自己的度量。第二個(gè)過(guò)程發(fā)生在layout(int, int, int, int) 中并且也是自頂向下。在這個(gè)過(guò)程中,每個(gè)父節(jié)點(diǎn)負(fù)責(zé)定位它的所有子節(jié)點(diǎn),通過(guò)使用在度量過(guò)程中計(jì)算得到的尺寸。

      當(dāng)一個(gè)視圖的measure()方法返回時(shí),它的getMeasuredWidth()和getMeasuredHeight() 值必須被設(shè)置,以及所有這個(gè)視圖子節(jié)點(diǎn)的值。一個(gè)視圖的度量的寬度和高度值必須符合父視圖引入的限制。這確保在度量過(guò)程之后,所有父節(jié)點(diǎn)接受所有它們的子節(jié)點(diǎn)的度量值。一個(gè)父視圖可能會(huì)在其子視圖上多次調(diào)用measure()方法。比如,父視圖可能會(huì)通過(guò)未指定的尺寸調(diào)用measure來(lái)發(fā)現(xiàn)它們的大小,然后使用實(shí)際數(shù)值再次調(diào)用measure(),如果所有子視圖未做限制的尺寸總合過(guò)大或過(guò)小(也即是,如果子視圖之間不能對(duì)各自占據(jù)的空間達(dá)成共識(shí)的話,父視圖將會(huì)干預(yù)并設(shè)置第二個(gè)過(guò)程的規(guī)則)。

      要開始一個(gè)布局,可調(diào)用requestLayout()。這個(gè)方法通常在視圖認(rèn)為它自己不再適合它當(dāng)前的邊界的情況下被調(diào)用。

      度量過(guò)程使用兩個(gè)類來(lái)交流尺寸。View.MeasureSpec類被視圖用來(lái)告訴它們的父視圖它們想如何被度量和定位。基礎(chǔ)的LayoutParams類僅僅描述了視圖想有多大(高和寬)。對(duì)于每個(gè)維度,它可以指定下面之一:
    · 一個(gè)準(zhǔn)確的數(shù)值
    · FILL_PARENT, 這意味著視圖想和父視圖一樣大(減掉填充padding)。
    · WRAP_CONTENT, 這意味著視圖只想有剛好包裝其內(nèi)容那么大(加上填充)

      對(duì)于不同的ViewGroup子類,有相應(yīng)的LayoutParams子類。比如,相對(duì)布局RelativeLayout有它自己的LayoutParams子類,這包含了能夠讓子視圖橫向和豎向居中顯示的能力。

      度量規(guī)格(MeasureSpecs)被用來(lái)沿著樹從父到子的下傳度量需求。一個(gè)MeasureSpecs可以是下面三種模式之一:
    ·UNSPECIFIED: 這被父視圖用來(lái)決定其子視圖期望的尺寸。比如,一個(gè)線性布局可能在它的子視圖上調(diào)用measure() on its child,通過(guò)設(shè)置其高度為UNSPECIFIED 以及一個(gè)寬度為EXACTLY 240,來(lái)找出這個(gè)子視圖在給定240像素寬度的情況下需要顯示多高。
    ·EXACTLY: 這被父視圖用來(lái)給子視圖強(qiáng)加一個(gè)準(zhǔn)確的尺寸。子視圖必須使用這個(gè)大小,并確保其所有的后代將適合這個(gè)尺寸。
    ·AT_MOST: 這被父視圖用來(lái)給子視圖強(qiáng)加一個(gè)最大尺寸。子視圖必須確保它自己以及所有的后代都適合這個(gè)尺寸。文章地址



    ?
    鳳凰涅槃/浴火重生/馬不停蹄/只爭(zhēng)朝夕
    ???? 隱姓埋名/低調(diào)華麗/簡(jiǎn)單生活/完美人生

    posted on 2010-10-16 10:02 poetguo 閱讀(1660) 評(píng)論(0)  編輯  收藏 所屬分類: Android

    主站蜘蛛池模板: 亚洲色中文字幕无码AV| 免费在线观看理论片| 亚洲午夜精品一区二区| 成年免费a级毛片免费看无码| 国产成人免费片在线视频观看| 亚洲色大成网站www永久男同 | 亚洲人成影院在线| 久久午夜夜伦鲁鲁片无码免费| 久久综合图区亚洲综合图区| 久久综合给合久久国产免费| 久久精品国产亚洲av麻豆色欲| 亚洲视频免费一区| 美女视频黄免费亚洲| 性感美女视频免费网站午夜| 精品久久久久久亚洲综合网| 亚洲国产高清在线一区二区三区 | 亚洲欧洲校园自拍都市| 国产美女在线精品免费观看| 亚洲爆乳成av人在线视菜奈实| 亚洲第一页综合图片自拍| 97超高清在线观看免费视频| 亚洲男女性高爱潮网站| 免费黄色毛片视频| 日韩在线视频免费| 18亚洲男同志videos网站| 四虎成人免费观看在线网址| 人碰人碰人成人免费视频| 亚洲天天做日日做天天看| 成年轻人网站色免费看| 一级特黄a大片免费| 亚洲午夜精品一区二区| 性做久久久久免费观看| 丝瓜app免费下载网址进入ios| 亚洲综合图片小说区热久久| 国产又长又粗又爽免费视频| 久久精品免费观看| 亚洲综合av一区二区三区 | 最新中文字幕电影免费观看| 亚州**色毛片免费观看| 亚洲精品偷拍无码不卡av| 免费一级特黄特色大片在线观看|