編輯:Android編程入門
如果說Android上的app是一個有血有肉的人的話,那麼人靠衣裝馬靠鞍,那麼控件就是把app裝扮的漂漂亮亮的“衣服”。那麼安卓的控件到底是如何架構,又是如何渲染的了。
無論是什麼控件,在Android中控件只有兩種,一種就是View,另一種是ViewGroup。ViewGroup控件組,一個控件的百寶箱,可以包含各種各樣的控件組,它不僅能夠包含控件還能夠管理著控件。通過ViewGroup,整個控件就至上而下的形成了樹形結構,即我們通常所說的控件樹;父控件負責相應子控件的繪制與測量,並向其傳遞交互事件。安卓系統怎麼准確無誤的找到每一個控件?只需要調用findViewbyid的方法就能夠按照深度優先的方法找到每一個控件了。在每個控件樹最頂端,都站立了一個Viewparent對象,這個對象也是這顆控件樹的核心,所有的交互管理事件都是由這個大大負責統一分配和調度,從而起這一個整體宏觀調控的效果。一個控件樹架構如圖所示:
做過Android開發都知道,要使一個activity顯示相應的布局文件,都必須要setContentView。我們要看一下setContentView背後到底發生了什麼,Android又是如何將其渲染出來的了。要解答這些問題,我們還是要了解Android的界面架構圖。具體的架構圖如圖所示:
通過上圖所示,我們可以得出這樣的結論。
①每個activity都有一個window對象。
②而每一個window對象通常是由PhoneWindow來實現。
③每個PhoneWindow對象包含DecorView這個根視圖對象,將其視圖展示都是通過這個對象顯示到PhoneWindow上。
④而DecorView被一分為二,一個是TitleView,一個ContentView,TitleView顯示相應的標題,ContentView顯示具體布局,這些應該大家很熟悉。
這樣架構也可以建立一個上文提到的視圖樹,這顆視圖樹長成這個樣子:
這樣控件樹,能夠幫我們解答這樣一個問題為什麼requestWindowFeature()一定要在setContentView之前調用才能起效。這是由於TitleBar下面才是ContentView,在ContentView之後設置,這時,只能有ContentView。當程序在oncreate方法調用setcontentView後會調用onResume方法,此時系統會把整個DecorView添加到PhoneWindow中,最終將視圖顯示出來。
由於安卓應用很廣泛,在工業中也常有一些應用,比如可以用安卓來去工業中的一些數據進行實現的監測,顯示,同時可以做一些自動化控制,當然在這裡,我不是做這些自動化控制方面的研究
每一個Android應用在啟動的時候都會創建一個線程,這個線程被稱為主線程或者UI線程,Android應用的所有操作默認都會運行在這個線程中。但是當我們想要進行數據請求,
今天我們的主要內容就是安卓的主要幾個基礎的布局方式。(主要布局如下:)1.線性布局(LinerLayout)2.相對布局(RelativeLayout)3.表格布局(Ta
1.推送方式基礎知識: 在移動互聯網時代以前的手機,如果有事情發生需要通知用戶,則會有一個窗口彈出,將告訴用戶正在發生什麼事情。可能是未接電話的提示,日歷的