布局优化:就是尽量减少布局文件的层级,致使Android的绘制的工作量减少了,性能就提高啦。
第一种
首先删除布局中无用的控件和层级,其次有选择性的使用性能较低的ViewGroup。
比如RelativeLayout. 如果布局中即可以使用RelativeLayout和LinerLayout 那么优先选择 后者,因为RelativeLayout功能比较复杂,会消耗较多的cpu时间。
FrameLayout和LinerLayout 是一样的一种简单高效的ViewGroup 。当单一使用这两者无法实现效果时,需要嵌套时候,建议使用RelativeLayout.这是由于ViewGroup的嵌套就相当于增加了布局的层级,同样会降低程序的性能。
第二种
采用 标签<include>
和标签<merge>
还有ViewStub.
<include>
标签用于布局重用,一般和<merge>
标签配合使用, 可以减低布局层级。
ViewStub 主要是提供了按需加载的功能,当需要时才会将ViewStub的布局加载到内存中, 提高程序初始化效率。
<include>
标签的应用
<merge>
标签的应用
例如LinerLayout 水平 布局中 需要嵌套另一个 水平布局的LinerLayout 那么就可以用<merge>
标签代替。
ViewStub
ViewStub 继承了View ,它是非常轻量级 而且 高/宽都是0,应为它本身不参与任何布局和绘制, 按需分配的,神马意思呢,比如我们网络加载异常的时候,这个时候需要加载进来。网络正常时,没有必要在整个界面进行初始化。
(ViewStub)findviewById(R.id.stub_import).setVisibility(View.VISIBLE);方法来初始化。
或者 View importPanel=((ViewStub)findviewById(R.id.stub_import)).inflate();
注意: 目前 viewStub 还不支持<merge>