Android系統(tǒng)平臺(tái)真的那么強(qiáng)大嗎
在實(shí)現(xiàn)了Android系統(tǒng)平臺(tái)的強(qiáng)大性,現(xiàn)就將引擎的前兩個(gè)元素即攝像頭與指南針之后,下一步要做的就是確定位置,要想更好的完成這一項(xiàng)目,我們主要用到Android的LocationManager對(duì)象。
一旦Android系統(tǒng)平臺(tái)獲得了根節(jié)點(diǎn)的參數(shù),它就可以直接通過(guò)節(jié)點(diǎn)來(lái)無(wú)效化,測(cè)距和繪制樹。當(dāng)你的Activity被激活并且獲得焦點(diǎn)時(shí)。系統(tǒng)會(huì)通知你的activity并且請(qǐng)求根節(jié)點(diǎn)去測(cè)距并繪制樹,根節(jié)點(diǎn)就會(huì)請(qǐng)求它的子節(jié)點(diǎn)去繪制它們自己,同時(shí),每個(gè)樹上的viewgroup節(jié)點(diǎn)負(fù)責(zé)繪制它的直接子節(jié)點(diǎn)。
正如之前提到的,每個(gè)viewgroup都有測(cè)量它的有效空間,布局它的子對(duì)象,并且調(diào)用每個(gè)子對(duì)象的Draw()方法去繪制它們自己。子對(duì)象可能會(huì)請(qǐng)求獲得一個(gè)它們?cè)诟笇?duì)象中的大小和位置,但是父對(duì)象對(duì)于每個(gè)子對(duì)象的大小和位置有最終的決定權(quán)。
LayoutParams:一個(gè)子對(duì)象如何指定它的位置和大小每個(gè)viewgroup類都會(huì)使用一個(gè)繼承于Viewgroup.LayoutParams的嵌套類。這個(gè)子類包含了一系列的屬性類型,這些屬性類型定義一個(gè)子對(duì)象位置和大小,與viewgroup類相適應(yīng)。layoutparams的一個(gè)樣例:
要注意的是,每個(gè)LayoutParams子類都有它自己賦值的語(yǔ)法。每個(gè)子元素必須定義適用于它們父對(duì)象的LayoutParams,盡管父對(duì)象可能會(huì)為子元素定義不同的LayoutParams。所有的viewgroup都包括寬和高。
很多還包括邊界的定義(margin和border)。你可以非常精確地描述寬和高,盡管你并不想經(jīng)常這么做。更多時(shí)候你希望你的view自行調(diào)整到適應(yīng)內(nèi)容大小,或者適應(yīng)容器大小。
是最簡(jiǎn)單的一個(gè)布局對(duì)象。它被定制為你屏幕上的一個(gè)空白備用區(qū)域,之后你可以在其中填充一個(gè)單一對(duì)象—比如,一張你要發(fā)布的圖片。所有的子元素將會(huì)固定在屏幕的左上角;
你不能為FrameLayout中的一個(gè)子元素指定一個(gè)位置。后一個(gè)子元素將會(huì)直接在前一個(gè)子元素之上進(jìn)行覆蓋填充,把它們部份或全部擋住(除非后一個(gè)子元素是透明的)。 以你為它設(shè)置的垂直或水平的屬性值,來(lái)排列所有的子元素。
所有的子元素都被堆放在其它元素之后,因此一個(gè)垂直列表的每一行只會(huì)有一個(gè)元素,而不管他們有多寬,而一個(gè)水平列表將會(huì)只有一個(gè)行高(高度為***子元素的高度加上邊框高度)。LinearLayout保持子元素之間的間隔以及互相對(duì)齊(相對(duì)一個(gè)元素的右對(duì)齊、中間對(duì)齊或者左對(duì)齊)。
Android系統(tǒng)平臺(tái)還支持為單獨(dú)的子元素指定weight。好處就是允許子元素可以填充屏幕上的剩余空間。這也避免了在一個(gè)大屏幕中,一串小對(duì)象擠成一堆的情況,而是允許他們放大填充空白。
子元素指定一個(gè)weight值,剩余的空間就會(huì)按這些子元素指定的weight比例分配給這些子元素。默認(rèn)的weight值為0。例如,如果有三個(gè)文本框,其中兩個(gè)指定了weight值為1,那么,這兩個(gè)文本框?qū)⒌缺壤胤糯螅⑻顫M剩余的空間,而第三個(gè)文本框不會(huì)放大。
【編輯推薦】