Android繪製視圖

來源:互聯網
上載者:User
Android繪製視圖

當一個Activity獲得焦點,它會請求繪製其布局。Android架構將會管理繪製的過程,但是Activity必須提供布局層次中的根節點。

         繪製視圖是從布局的根節點開始。請求計算和繪製布局樹。繪製負責遍曆樹和渲染每個可互動的無效地區。依次的,每一個View group負責請求繪製其子View,每一個View負責繪製自己(利用draw()方法)。因為樹是順序遍曆的,這就意味著先畫父節點(父View在子View背後),然後依照樹的次序來繪製其他同級節點。

         Android架構只會重繪無效的地區,而且還會幫你繪製背景圖片。

         你能夠利用invalidate()方法強制重繪View。

         繪製布局就是兩個傳遞的過程:一個測量傳遞和布局傳遞。測量傳遞是實現measure(int,int)方法和從上至下遍曆視圖樹。每一個視圖在遞迴時傳遞尺寸規格下去。在尺寸傳遞的最後,每一個視圖都儲存了尺寸。第二個傳遞發生在layout(int,int,int,int)同樣也是自上而下的。在這個傳遞期間每一個父節點都負責利用測量傳遞的資料計算其尺寸並且來定位其子節點。

         當View的measure()方法返回,它的getMeasuredWidth()和getMeasuredHeight()的值必須被設定,以及View所有後代的。View的測量寬度和測量高度的值必須符合View的父節點施加的約束。這樣就可以保證測量傳遞的最後,所有的父節點接受他們子節點的尺寸值。一個父節可以會對其子節點調用多次measure()方法。比如,父節點可以通過每一個子節點不明確的尺寸調用measure()方法找出它們想要多大,然後就會使用實際的數值調用measure()方法,如果所有子節點沒有受約束的尺寸的總大小太大了或太小了(既,如果子節點不同意每個之間的空間,父節點會介入並且設定第二階段的規則)。

         更新一個布局,調用requestLayout()這個方法是通常View認為自己已經不適合當前的布局時調用。

         測量傳遞利用兩個類來交流尺寸。

·TheView.MeasureSpec類通常用於View告訴他們的父節點他們想怎樣計算和定位。

·基礎的LayoutParams類只是描述View想要長和寬的大小。每一個尺寸都可以指定:

                 &一個確定的值

                  &FILL_PARENT,表示View想和父節點一樣大小(減去填充)

                  &WRAP_CONTENT,表示View只是想包容其內容大小(加上填充)

 

         每一個ViewGroup的子類都有對應的LayoutParams子類。例如:RelativeLayout有它自己的LayoutParams,包括能夠讓子視圖橫向和縱向置中的能力。

         MeasureSpecs通常用於在樹中沿著父節點到子節點下傳需求,MeasureSpec可以是三種模式之一:

         &UNSPECIFIED:通常用於父節點決定要求子節點的尺寸。例如:LinearLayout可能在其子節點調用measure()方法,設定它的高為UNSPECIFIED,寬為EXACTLY 240找出子View在寬為240像素時的高度。

         &EXACTLY:通常用於父節點利用一個絕對的尺寸的child。child必須使用這個尺寸並且保證所有的子節點將會適應這個尺寸。

         &AT_MOST:通常用於parent利用最大值尺寸的child。這個child必須保證其所有的子節點適應這個尺寸。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.