Android布局优化merge、ViewStub的用法
由于在Android开发工程中需要开发很多界面,每个界面又是以xml布局的形式进行加载。所以在加载这些布局文件的时候是一个开销很大的过程。因此我们在写布局文件的时候需要考虑一些优化来加快程序的性能.
一、性能方面优化
1.尽量避免多层次的嵌套,因为布局可以无限制的进行嵌套。所以写起来难免有些肆无忌惮,但是布局结构尽量要避免多层次的嵌套来减少开销。数量应最多不要超过10层。
2.使用merge标签。
如图,使用merge标签可以减少多余的层次结构,多用于一个布局需要包含另一个布局的时候,或者这一个布局用到的重复样式比较多。在加载merge标签的时候,不会加载父控件,只会加载merge标签中的子view。merge标签结合include一起使用可以灵活的、可复用性强的创建布局。
3.避免过多的view,填充每个view都要花费一些资源和时间,为了更快速加载,应尽量减少view的加载。如果布局包含的view个数超过80,填充布局花费的时间将成为一个显著的问题。
4.使用ViewStub
ViewStub有一个比较大的优点就是当你用到这个布局的时候才会去加载,例如我们在布局里写了ViewStub并引用一个我们写好的布局。这时候我们可以在我们的activity中使用的时候,必须先设置visible。 这样这个布局才会被加载显示。否则是不会显示的。为了防止都findViewById 方法,我们可以调用inflate()方法,这个方法会返回一个view,我们可以直接对这个view进行操作。
二、代码可视性的优化。
1、写布局的时候,可以尽量在父控件中做操作,这样会影响到每个子view。例如,我们经常写距离左边距,这个时候一个在父母局中写一次,而不是在每个子控件中都写一遍。
2、写线性布局的时候可以使用权重,这样也会对屏幕适配起作用。
3、Android studio中可以直接对多次重用的空间进行属性抽取。
如图,抽取的属性将会在style中,我们在布局文件中就可以直接引用。多次需要用到这个属性的时候我们可以直接用一行代码引用即可。4、使用include标签,来引用比较复杂,或者抽象的布局文件。