Android開發(fā)布局詳解
比較常用的控件 三
WebView:加載網(wǎng)頁
ListView:顯示列表
GridView:顯示表格式列表
ScrollView:內(nèi)容可滾動視圖
SufaceView:非常重要的繪圖容器(很多游戲都是用sufaceview做的)
五大布局:
Linearlayout :線性布局
像一條線一樣布局,兩大特點(diǎn):
1.orientation:vertical縱向排列
horizontal水平排列
2.layout_weight
weightsum:比例的方式來排布
寬度設(shè)置成0dp(水平布局的情況下)。
注釋:commas+/
android的坐標(biāo)是從左到右和從上到下的。
Relativelayout :相對布局
xmlns:xmlns(name space)這個(gè)xml的命名空間是Android,如果不加這一行,那么后面就不能引用Android的內(nèi)容。
資源文件的名字是不能有大寫的。
button為例:
layout_alignParentBottom = "true"
layout_alignParentRight="true"
元素之間,在后面的會蓋住之前的內(nèi)容。
解決方案:
給上面一個(gè)button一個(gè)id:id=“+id/button"
下面的給:layout_above = “@+id/button"
沒有必要的屬性要?jiǎng)h除,很有可能會影響布局。因?yàn)锳ndroid會解析xml對布局進(jìn)行計(jì)算,即使有矛盾,也會根據(jù)一定的原則來選擇一個(gè)值。
layout_below
layout_toLeftOf
alignLeft:左邊對齊
alignTop
父布局的上下左右
朋友的上下左右
朋友的左右上下對齊
layout_margin = “100dp"
layout_marginLeft = “100dp” 外邊距左邊距100dp
paddingLeft = “40dp” ?內(nèi)邊距左邊距40dp
FrameLayout :幀布局
一層一層疊上去的。
AbsoluteLayout :絕對布局
靠絕對坐標(biāo)來定位,不建議使用。
layout_x
layout_y
TableLayout :表格布局
類似于做了一個(gè)表格。
TableRow
前三種使用頻率加起來超過98%,后兩種使用較少
Android布局技巧與優(yōu)化
溫故知新
基本控件
五大布局
UI = 控件+布局
思考:布局是如何繪制的?
樹形的解析
linearlayout默認(rèn)水平排列
可能會產(chǎn)生哪些性能問題?
層次太多導(dǎo)致加載速度變慢
如何優(yōu)化?
減少層次
減少布局層次的重要性
官方建議布局層次:最多10層(縮水后就更少了)
減少層次后能運(yùn)行在更多手機(jī)上
如何減少
學(xué)會利用相對布局
如何利用相對布局減少層次?
利用相對布局替換線性布局
stack overflow:層次太多會導(dǎo)致棧溢出(例子:小米初期)
建議工作中不要拖動,熟練后手寫布局
控件的組合
有些效果可以由控件和控件的組合產(chǎn)生
如何組合
一些有用的屬性
布局如何引用相同的部分
:重用布局
? ? ? ????為何是成為背景
減少視圖層級
:需要時(shí)才加載
總結(jié):如何優(yōu)化布局
減少層次
刪除無用布局
布局結(jié)構(gòu)要清晰
選擇合適的布局
小技巧:
不要嵌套多個(gè)使用layout_weight屬性的LinearLayout
兩個(gè)工具:Android lint幫你刪除無用的資源,無用的文件、引用、類、布局、控件
HierarchyViewer幫你分析你的布局的層級