Android开发布局详解
比较常用的控件 三
WebView:加载网页
ListView:显示列表
GridView:显示表格式列表
ScrollView:内容可滚动视图
SufaceView:非常重要的绘图容器(很多游戏都是用sufaceview做的)
五大布局:
Linearlayout :线性布局
像一条线一样布局,两大特点:
1.orientation:vertical纵向排列
horizontal水平排列
2.layout_weight
weightsum:比例的方式来排布
宽度设置成0dp(水平布局的情况下)。
注释:commas+/
android的坐标是从左到右和从上到下的。
Relativelayout :相对布局
xmlns:xmlns(name space)这个xml的命名空间是Android,如果不加这一行,那么后面就不能引用Android的内容。
资源文件的名字是不能有大写的。
button为例:
layout_alignParentBottom = "true"
layout_alignParentRight="true"
元素之间,在后面的会盖住之前的内容。
解决方案:
给上面一个button一个id:id=“+id/button"
下面的给:layout_above = “@+id/button"
没有必要的属性要删除,很有可能会影响布局。因为Android会解析xml对布局进行计算,即使有矛盾,也会根据一定的原则来选择一个值。
layout_below
layout_toLeftOf
alignLeft:左边对齐
alignTop
父布局的上下左右
朋友的上下左右
朋友的左右上下对齐
layout_margin = “100dp"
layout_marginLeft = “100dp” 外边距左边距100dp
paddingLeft = “40dp” 内边距左边距40dp
FrameLayout :帧布局
一层一层叠上去的。
AbsoluteLayout :绝对布局
靠绝对坐标来定位,不建议使用。
layout_x
layout_y
TableLayout :表格布局
类似于做了一个表格。
TableRow
前三种使用频率加起来超过98%,后两种使用较少
Android布局技巧与优化
温故知新
基本控件
五大布局
UI = 控件+布局
思考:布局是如何绘制的?
树形的解析
linearlayout默认水平排列
可能会产生哪些性能问题?
层次太多导致加载速度变慢
如何优化?
减少层次
减少布局层次的重要性
官方建议布局层次:最多10层(缩水后就更少了)
减少层次后能运行在更多手机上
如何减少
学会利用相对布局
如何利用相对布局减少层次?
利用相对布局替换线性布局
stack overflow:层次太多会导致栈溢出(例子:小米初期)
建议工作中不要拖动,熟练后手写布局
控件的组合
有些效果可以由控件和控件的组合产生
如何组合
一些有用的属性
布局如何引用相同的部分
:重用布局
????为何是成为背景
减少视图层级
:需要时才加载
总结:如何优化布局
减少层次
删除无用布局
布局结构要清晰
选择合适的布局
小技巧:
不要嵌套多个使用layout_weight属性的LinearLayout
两个工具:Android lint帮你删除无用的资源,无用的文件、引用、类、布局、控件
HierarchyViewer帮你分析你的布局的层级