[转]技巧和设计模式 --- 视图和布局
1.越简单越好
?
?
如果一个窗口包含很多视图
?
[1] 启动动时间长
?
[2] 测量时间长
?
[3] 布局时间长
?
[4] 绘制时间长
?
?
如果视图树深度太深
?
[1]?StackOverflowException
?
[2] 用户界面反应速度很慢
?
2.解决的办法
?
?
[1] 使用TextView的复合drawables减少层次
?
?
[2] 使用ViewStub延迟展开视图
?
[3] 使用<merge>合并中间视图
?
[4] 使用RelativeLayout减少层次
?
[5] 使用自定义视图
?
[6] 使用自定义布局
?
关于[1]
?
替代为
?
?
关于[2]?使用ViewStub延迟展开视图
?
首先在XML布局文件中定义 ViewStub
?
?
?
关于[3]使用<merge>合并视图:略
?
关于[4]使用RelativeLayout减少层次,总得意思就是用RelativeLayout解决复杂的布局,比如代替LinearLayout复杂的布局
?
关于[5]自定义视图
?
?
class GridLayout extends ViewGroup { @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { final int count = getChildCount(); for (int i=0; i < count; i++) { final View child = getChildAt(i); if (child.getVisibility() != GONE) { // 计算子视图的位置 child.layout(left, top, right, bottom); } } }}??