首页 > 代码库 > 优化1--布局的优化

优化1--布局的优化

1,减少布局的嵌套使用。删除无用的控件可层级。

     有选择的使用ViewGroup,比如RelativeLayout,在布局中如果可以使用LinearLayout则尽量选择LineaLayout布局,如果可以使用FrameLayout则尽量使用FrameLayout则尽量使用帧布局,帧布局是五大布局中布局速度最快的布局,他不需要计算控件的大小,只需要将控件一层一层的盖在一层上面即可。减少布局的嵌套层级。可以一层布局完成效果时,尽量使用一层布局嵌套完成效果。

 

2,当有布局复用时,抽取出来吗,使用<include>标签指定复用的布局,<merge>标签,和ViewStub标签

① include:

  include中layout属性指定一个外部布局文件,通过该方式则不需要把这个布局文件在该代码中重复的写一遍了。  

  若include指定了其他的android:layout_*的这种属性,则layou_width和Layout_height必须存在。否则其他的无法生效 

② merge标签:

  多和<include>标签一起使用,减少布局的层级:如果当前布局是一个竖直方向的LinearLayout,这个时候如过被包含的布局文件中也采用了LinearLayout也采用了垂直布局,则我们可以使用Merge标签,减少布局的嵌套层级

③ ViewStub:

       继承自View,他非常轻量级 宽高都为0,因此他的本身不参与任何的布局和绘制过程。

      它的意义在于按照需要加载所需的布局文件,在实际开发中,有很多的布局文件在正常的情况下不需要显示,当需要其显示的时候才会显示。比如网络加载动画的布局,这个时候没有必要在整个界面初始化的时候将其加载进来,通过ViewStub就可以做到在使用的时候再加载。提高了程序性能。

<ViewStub  
    android:id="@+id/stub_import"  
     android:inflatedId="@+id/panel_import"  
     android:layout="@layout/layout_network_error"  
     android:layout_width="match_parent"  
     android:layout_height="wrap_content"  
     android:layout_gavity="bottom"  
/>  

  

按需加载代码: 
((ViewStub)findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);
或者:
View  importPanel = ((ViewStub)findViewById(R.id.stub_import)).inflate();

  

优化1--布局的优化