學(xué)習(xí)Android手機(jī)操作系統(tǒng)筆記總結(jié)
Android手機(jī)操作系統(tǒng)基本特征包括內(nèi)部集成瀏覽器 該瀏覽器基于開源的WebKit 引擎,優(yōu)化的圖形庫(kù) 包括2D和3D圖形庫(kù),3D圖形庫(kù)基于OpenGL ES 1.0 ,本文僅供大家學(xué)習(xí)參考。
比如,一張你要發(fā)布的圖片。所有的子元素將會(huì)固定在屏幕的左上角;你不能為FrameLayout中的一個(gè)子元素指定一個(gè)位置。后一個(gè)子元素將會(huì)直接在前一個(gè)子元素之上進(jìn)行覆蓋填充。
把它們部份或全部擋?。ǔ呛笠粋€(gè)子元素是透明的)。有點(diǎn)繞口而且難理解,下面還是通過(guò)一個(gè)實(shí)例來(lái)理解吧。我們仿照Snake項(xiàng)目中使用的界面一樣,建立一個(gè)簡(jiǎn)單的FrameLayout。
其中包含兩個(gè)Views元素:ImageView和TextView,而后面的TextView還包含在一個(gè)RelativeLayout中。Android的tools目錄下提供了許多實(shí)用工具,這里介紹其中一個(gè)用于查看當(dāng)前UI結(jié)構(gòu)視圖的工具h(yuǎn)ierarchyviewer。
打開tools/hierarchyviewer.bat后,查看上面這個(gè)示例的UI結(jié)構(gòu)圖可得:
我們可以很明顯的看到由紅色線框所包含的結(jié)構(gòu)出現(xiàn)了兩個(gè)framelayout節(jié)點(diǎn),很明顯這兩個(gè)完全意義相同的節(jié)點(diǎn)造成了資源浪費(fèi)。(這里可以提醒大家在開發(fā)工程中可以習(xí)慣性的通過(guò)Android手機(jī)操作系統(tǒng)查看當(dāng)前UI資源的分配情況),那么如何才能解決這種問(wèn)題呢(就當(dāng)前例子是如何去掉多余的frameLayout節(jié)點(diǎn))?這時(shí)候就要用到<merge />標(biāo)簽來(lái)處理類似的問(wèn)題了。我們將上邊xml代碼中的framLayout替換成merge:
運(yùn)行程序后在Android手機(jī)操作系統(tǒng)中顯示的效果是一樣的,可是通過(guò)hierarchyviewer查看的UI結(jié)構(gòu)是有變化的,當(dāng)初多余的FrameLayout節(jié)點(diǎn)被合并在一起了?;蛘呖梢岳斫鉃閷erge標(biāo)簽中的子集直接加到Activity的FrameLayout跟節(jié)點(diǎn)下。
(這里需要提醒大家注意:所有的Activity視圖的根節(jié)點(diǎn)都是frameLayout)。如果你所創(chuàng)建的Layout并不是用framLayout作為根節(jié)點(diǎn)(而是應(yīng)用LinerLayout等定義root標(biāo)簽),就不能應(yīng)用上邊的例子通過(guò)merge來(lái)優(yōu)化UI結(jié)構(gòu)。
【編輯推薦】