<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è)繪畫的過程,但是這個(gè)Activity活動(dòng)必須提供它的布局層次的根節(jié)點(diǎn)。

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


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

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

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

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

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

      度量過程使用兩個(gè)類來交流尺寸。View.MeasureSpec類被視圖用來告訴它們的父視圖它們想如何被度量和定位。基礎(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)被用來沿著樹從父到子的下傳度量需求。一個(gè)MeasureSpecs可以是下面三種模式之一:
    ·UNSPECIFIED: 這被父視圖用來決定其子視圖期望的尺寸。比如,一個(gè)線性布局可能在它的子視圖上調(diào)用measure() on its child,通過設(shè)置其高度為UNSPECIFIED 以及一個(gè)寬度為EXACTLY 240,來找出這個(gè)子視圖在給定240像素寬度的情況下需要顯示多高。
    ·EXACTLY: 這被父視圖用來給子視圖強(qiáng)加一個(gè)準(zhǔn)確的尺寸。子視圖必須使用這個(gè)大小,并確保其所有的后代將適合這個(gè)尺寸。
    ·AT_MOST: 這被父視圖用來給子視圖強(qiáng)加一個(gè)最大尺寸。子視圖必須確保它自己以及所有的后代都適合這個(gè)尺寸。文章地址



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

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

    主站蜘蛛池模板: 国产国拍亚洲精品mv在线观看| 日韩成人免费视频播放| 亚洲综合无码AV一区二区| 国产亚洲欧美日韩亚洲中文色| 国外成人免费高清激情视频| 激情综合亚洲色婷婷五月| 在线看片免费不卡人成视频| 亚洲女人初试黑人巨高清| 日韩视频在线精品视频免费观看| 亚洲国产成人精品电影| 在线观看免费成人| 色偷偷亚洲男人天堂| 亚洲人午夜射精精品日韩| 最近的2019免费中文字幕| 亚洲AV无码成人专区片在线观看| 亚洲成人免费在线| 中文文字幕文字幕亚洲色| 成在线人永久免费视频播放| 青娱乐在线视频免费观看| 中文字幕亚洲电影| 全部免费毛片在线播放| 亚洲国产成人精品青青草原| 日本高清免费网站| 午夜不卡AV免费| 亚洲国产第一站精品蜜芽| 国产乱子精品免费视观看片| 亚洲色一区二区三区四区| 亚洲视频一区二区| 久久w5ww成w人免费| 亚洲人成色在线观看| 亚洲午夜精品一级在线播放放 | 日本免费人成视频在线观看| 亚洲国产成人久久精品app| 日韩特黄特色大片免费视频| fc2成年免费共享视频18| 亚洲高清免费在线观看| 精品免费国产一区二区| 国产三级在线免费| 亚洲狠狠婷婷综合久久| 亚洲成av人片在线观看无码不卡| 毛片基地免费观看|