布局优化
如何进行布局优化
- 首先删除布局中无用的控件和层级
其次有选择的使用性能较低的ViewGroup
- 例如LinerLayout和RelativeLayout相比,都能使用的话,使用 LinerLayout,RelativeLayout的功能复杂,布局过程中花费更多的CPU。
- FrameLayout和LinerLayout也是这样的关系,但是两个需要嵌套的时候不如用一个RelativeLayout,因为ViewGroup的嵌套相当于增加了布局的层级。
使用 include、merge、ViewStub
include
- 指定另一个布局文件,通过这种方式就不用把重复使用的布局再重复写一遍了
merge
- merge标签一般和ninclude标签一起使用从而减少布局的层级,如果当前布局是一个竖直方向的LinearLayout,这个时候如果被包含的布局文件中也采用了竖直方向的LinearLayout,那么被包含的布局文件中的LinearLayout是多余的,通过merge标签去掉多余的那一层。
ViewStub
- 继承自View,非常轻量级,且宽和高都是0,因此本身不参加任何的布局和绘制过程。
ViewStub需要加载时需要作如下操作:
((ViewStub) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);
或
View importPanel = ((ViewStub)findViewById(R.id.stub_import)).inflate();
- 当ViewStub通过setVisibility或者inflate方法加载后,ViewStub就会被他内部的布局替换掉,这时候ViewStub就不再是布局结构中的一部分了
- 目前ViewStub还不支持merge标签